una transact raw partir leer for ejemplos crear consulta campo sql xml

raw - transact sql for xml path



¿Cuándo usaría XML en lugar de SQL? (13)

He estado trabajando en aplicaciones web basadas en bases de datos desde hace algunos años y recientemente asumí un proyecto que implica un CMS que es compatible con XML. Esto me ha llevado a pensar sobre el uso de XML / XSLT en general y en qué situaciones sería más útil que el enfoque que siempre he usado, que es almacenar todos mis datos en una base de datos (My) SQL y luego usar PHP / Python / etc. para trabajar con él en la web según sea necesario.

Obviamente, hay algo que no estoy "obteniendo" aquí ... ¿alguien podría darme ejemplos de aplicaciones donde sería preferible almacenar los datos en archivos XML en lugar de hacerlo en una base de datos?


1) Cuando tienes que intercambiar tus datos con otros. XML es la " lingua franca " de la Web; casi todos pueden leerla e interpretarla, a diferencia de un archivo de base de datos.

2) Cuando su volumen de datos es pequeño y no tiene que hacer consultas complejas contra él. Los archivos XML son buenos para cosas como almacenar configuraciones o plantillas de documentos.

3) Cuando no tienes muchos escritores tratando de acceder a la misma información. Las bases de datos SQL han involucrado mecanismos de concurrencia que están trabajando detrás de escena para usted. Las bases de datos SQL pueden soportar índices para la recuperación de información en grandes conjuntos de datos rápidamente ...


Algunas aplicaciones usan archivos XML para almacenar la configuración, prefiero usar SQLite para hacerlo.


Cosas que uso XML para:

  • Persistiendo una jerarquía de objetos.
  • Mover datos de un proceso o máquina a otro.
  • Datos que cambian raramente, en todo caso; configuración de configuración y similares.
  • A medida que la entrada a XSLT se transforma: en términos generales, si uno de mis programas emite HTML, está usando XSLT para hacerlo, y entonces los datos fuente se representarán como XML en algún momento.
  • Marcado de texto. (¡No olvidemos eso!)

No hay mucha superposición entre esos casos de uso y los casos de uso de una base de datos. Algunos, pero no mucho.

Irónicamente, donde estoy haciendo un mayor uso de XML en este momento es en una aplicación de escritorio que construye un DataSet ADO en memoria y usa los métodos WriteXml y ReadXml del DataSet para persistir y recuperarlo. Estoy usando ADO porque es mucho más fácil construir dinámicamente un modelo de datos definido por metainformación utilizando ADO de lo que sería implementar mi propio modelo de objetos para la tarea.

Así que aquí hay un caso que parece que estoy usando XML como base de datos. Pero realmente no lo soy. Estoy usando un modelo de objetos que implementa muchas funcionalidades tipo base de datos, y estoy usando XML como formato de persistencia.


Creo que hay bastantes aplicaciones comerciales que hacen un uso intensivo de XML como medio de almacenamiento. Lo hice para una aplicación de planificación de proyectos, donde el usuario almacena cada proyecto en su propio archivo. La aplicación vive en una memoria USB y no requiere instalación. Todos los datos se extraen del XML y se trabajan en la memoria, por lo que getRecord (id) es muy rápido.

Así que mi respuesta sería ... cuando los datos son lo suficientemente pequeños como para guardarlos en la memoria, una base de datos está por encima de matar.


Me gustaría ir si tengo bases de datos MySQL limitadas en mi host, entonces vería la oportunidad de usar XML como un almacén de datos.



Para citar este libro (XML efectivo: 50 formas específicas de mejorar su XML):

"XML no es una base de datos. Nunca fue una base de datos. Nunca va a ser una base de datos. Las bases de datos relacionales son tecnología probada con más de 20 años de experiencia en implementación. Son productos sólidos, estables y útiles. No se van a ir. XML es una tecnología muy útil para mover datos entre diferentes bases de datos o entre bases de datos y otros programas. Sin embargo, no es una base de datos en sí misma. No lo uses como uno ".

Creo que esto lo resume, aunque un poco sin rodeos. XML es un formato de intercambio de datos. Uno puede tener bibliotecas de análisis XML que pueden consultar un DOM con expresiones XPath, pero eso no es lo mismo que un DBMS. Puede construir un DBMS con una interfaz DOM / XPath, pero para obtener propiedades ACID o escalar a grandes conjuntos de datos, necesita implementar un motor DBMS y un formato de datos con índices, registros y otros artefactos de un DBMS, lo que (por definición) hace es algo más que XML.


SQL es una buena información tabular: datos que se ajusta fácilmente a filas y columnas. XML es bueno para datos jerárquicos: datos que tienen varios niveles de diferentes tamaños.

SQL es bueno para almacenamiento y búsqueda. XML es bueno para transmitir y formatear.


Siempre que no tenga el lujo de tener una base de datos (piense en aplicaciones de usuario único) o necesite un formato de almacenamiento muy liviano.

También como se mencionó el cartel anterior, un formato de intercambio.


Tanto XML como RDMS se pueden usar como áreas de almacenamiento de datos, pero cada implementación tiene sus propias ventajas y desventajas.

Usar XML para almacenar datos para una aplicación web generalmente no es un gran problema hasta que empiece a manejar grandes cantidades de datos o decida que quiere descubrir otra información de sus datos (ejemplo: extracción de datos). En otras palabras, el almacenamiento de grandes cantidades de archivos XML para una fuente de datos no es muy escalable, pero hace que sea más fácil mover los datos. XML también se puede utilizar para serializar objetos complejos en un formato no relacional, lo que podría eliminar la necesidad de un ORM si puede serializar / deserializar sus objetos directamente desde el XML

Los RDMS (bases de datos) suelen ser más escalables, ofrecen un mayor soporte de simultaneidad y son mucho más rápidos cuando se trabaja con grandes cantidades de datos. El modelo relacional hace que sea más fácil extraer datos más adelante. Las bases de datos sufren la incompatibilidad de la impedancia relacional del objeto ( http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch ) que puede requerir que escriba un código feo o utilice ORM complejos.


Use XML para crear archivos que necesitan ser enviados a otras aplicaciones. XML es más adecuado como formato de intercambio de datos que como formato de almacenamiento de datos.

El siguiente enlace no es malo para describir al usar XML: ¿Por qué debería usar XML?


Nunca usaría ningún tipo de XML para almacenar mis datos.

Usamos transformaciones XSLT como una capa de abstracción de datos en nuestra aplicación SOA. Todos los objetos se envían datos entre sí en XSLT, por lo que solo hay un idioma que necesitan comprender. Excepto por el conector de la base de datos, que necesita poder transformar los datos en SQL, para enviarlo a la base de datos.

De esta forma, no tiene la generación de cadenas SQL distribuidas en un trillón de objetos en su aplicación. Hace el mantenimiento mucho más fácil.


Aquí hay un ejemplo del uso de XML con SQL: los usuarios autenticados leen y escriben datos en varias bases de datos, no todas ellas son el mismo DBMS. Los usuarios de la Compañía A usan datos de una base de datos local de SQL Server. Los usuarios de la empresa B usan datos de una base de datos remota de Oracle. Y así. Una docena de bases de datos diferentes, cada una con esquemas ligeramente diferentes para los mismos datos básicos.

El desarrollador del sitio web no tiene la capacidad de crear procedimientos almacenados en las bases de datos remotas. SQL debe enviarse directamente desde la aplicación web a la base de datos. Como cada base de datos tiene una sintaxis SQL y un esquema ligeramente diferentes, es necesario usar diferentes SQL para cada una de las 12 bases de datos para la misma operación (SELECT, INSERT, etc.).

Una de las opciones para incrustar las sentencias de SQL en la aplicación web es colocarlas en archivos XML. Cada archivo XML contiene el conjunto de sentencias SQL para una de las doce bases de datos. El código determina a qué base de datos se accede para el usuario que ha iniciado sesión y recupera el SQL apropiado del archivo XML especificado.

Al igual que con los procedimientos almacenados, el SQL en el archivo XML se puede actualizar sin detener o recompilar la aplicación.