He estado trabajando en aplicaciones web basadas en bases de datos durante algunos años y recientemente asumí un proyecto que involucra un CMS que es compatible con XML. Esto me ha llevado a pensar en 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 (Mi) SQL y luego usar PHP / Python / etc. para trabajar con él en la web según sea necesario.
Obviamente, hay algo que no estoy "entendiendo" aquí ... ¿alguien podría darme ejemplos de aplicaciones en las que sería preferible almacenar los datos en archivos XML en lugar de en una base de datos?
Respuestas:
Para citar este libro (XML efectivo: 50 formas específicas de mejorar su XML):
Creo que esto lo resume, aunque un poco sin rodeos. XML es un formato de intercambio de datos. Se pueden 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, que (por definición) hace es algo diferente a XML.
fuente
Utilice XML para crear archivos que deben enviarse 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 cuando se usa XML: ¿Por qué debería usar XML?
fuente
SQL son buenos datos tabulares: datos que encajan fácilmente en filas y columnas. XML es bueno para datos jerárquicos: datos que tienen varios niveles de diferentes tamaños.
SQL es bueno para el almacenamiento y la búsqueda. XML es bueno para transmitir y formatear.
fuente
1) Cuando tenga que intercambiar sus datos con otros. XML es la " lengua franca " de la Web: casi todo el mundo puede leerlo e interpretarlo, a diferencia de un archivo de base de datos.
2) Cuando su volumen de datos es pequeño y no tiene que realizar consultas complejas contra él. Los archivos XML son buenos para cosas como almacenar configuraciones o plantillas de documentos.
3) Cuando no tiene muchos escritores intentando acceder a los mismos datos. Las bases de datos SQL han involucrado mecanismos de concurrencia que trabajan detrás de escena para usted. Las bases de datos SQL pueden admitir índices para la recuperación de información sobre grandes conjuntos de datos rápidamente ...
fuente
Cosas para las que uso XML:
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 mi mayor uso de XML en este momento es en una aplicación de escritorio que crea un ADO DataSet en memoria y usa los métodos WriteXml y ReadXml de 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 usando 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 funciones similares a las de una base de datos, y estoy usando XML como formato de persistencia.
fuente
No lo hagas.
Prueba SELECCIONAR autor DEL libro
fuente
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 increíblemente rápido.
Entonces mi respuesta sería ... cuando los datos son lo suficientemente pequeños como para ser retenidos en la memoria, una base de datos se termina.
fuente
Siempre que no tenga el lujo de tener una base de datos (piense en aplicaciones de un solo usuario) o necesite un formato de almacenamiento muy ligero.
También como mencionó el cartel anterior, un formato de intercambio.
fuente
Tanto XML como RDMS se pueden utilizar como almacenes de datos, pero cada implementación tiene sus propias ventajas e inconvenientes.
El uso de XML para almacenar datos para una aplicación web no suele ser un gran problema hasta que comienza a trabajar con grandes cantidades de datos o decide que desea descubrir otra información de sus datos (ejemplo: minería de datos). En otras palabras, almacenar grandes cantidades de archivos XML para una fuente de datos no es muy escalable, pero facilita el movimiento de 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 XML
Los RDMS (bases de datos) suelen ser más escalables, ofrecen mayor compatibilidad con la concurrencia y son mucho más rápidos cuando se trabaja con grandes cantidades de datos. El modelo relacional facilita la extracción de datos más adelante. Las bases de datos sufren de la falta de coincidencia de impedancia relacional de objetos ( http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch ) que puede requerir que escriba un código desagradable o use ORM complejos.
fuente
Iría si tuviera bases de datos mysql limitadas en mi host, entonces vería la oportunidad de usar XML como almacén de datos.
fuente
Aquí hay un ejemplo de uso de XML con SQL: Los usuarios autenticados leen y escriben datos en varias bases de datos, no todas son el mismo DBMS. Los usuarios de la empresa A utilizan datos de una base de datos local de SQL Server. Los usuarios de la empresa B utilizan datos de una base de datos Oracle remota. 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. Dado que cada base de datos tiene una sintaxis y un esquema SQL ligeramente diferentes, es necesario utilizar un SQL diferente para cada una de las 12 bases de datos para la misma operación (SELECT, INSERT, etc.).
Una de las opciones para incrustar las declaraciones SQL en la aplicación web es colocarlas en archivos XML. Cada archivo XML contiene el conjunto de declaraciones SQL para una de las doce bases de datos. El código determina a qué base de datos accede 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 volver a compilar la aplicación.
fuente
Algunas aplicaciones usan archivos XML para almacenar la configuración, yo prefiero usar SQLite para hacerlo.
fuente
Yo nunca utilizar 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 deben comprender. A excepción del conector de la base de datos, que necesita poder transformar los datos en SQL, para enviarlos a la base de datos.
De esta manera, no tiene la generación de cadenas SQL distribuida entre un millón de objetos en su aplicación. Facilita mucho el mantenimiento.
fuente