2009-06-08 36 views
10

Me pregunto si hay mejores prácticas para decidir entre cuándo se debe modelar un sistema usando XML y cuándo se debe modelar usando una base de datos relacional (sé que puede almacenar XML en una base de datos, pero hay una enorme diferencia entre modelar un sistema usando tablas db normalizadas y modelar un sistema usando XML-Schema). Por pura concreción, digamos que estabas modelando ejercicios en un gimnasio. El "press de banca" es en realidad una familia de exericses, ni un solo ejercicio. Puedes recostarte en un banco o una pelota. Puedes obligar a volver a estar plano o permitir trampas. Puede usar mancuernas, pesas, cables o una máquina universal. Si usa mancuernas, puede alternar brazos o empujar simultáneamente. Puede tener una superficie inclinada, declinada o plana. Mi opinión es que debido a la complejidad (y la posible complejidad que aún tengo que pensar) de que esto sería mejor modelar usando xml. ¿Es esta una buena evaluación? ¿Qué otros factores importantes se deben considerar?Modelado: Xml vs. Base de datos relacional

Adición: Cuando dije XML, una de las tecnologías que tenía en mente era RDF (aunque no quería limitar la discusión a eso), lo que parece tener ventajas y desventajas en comparación con la implementación el diseño en tablas de la base de datos. No estoy seguro si la antipatía general que algunos usuarios sienten hacia XML se extendería hasta RDF (tal vez), pero tal vez eso ayude a enfocar un poco la conversación.

+4

Pregúntate por qué estás considerando XML. ¿Qué te compra eso? – Apocalisp

Respuesta

4

Su ejemplo de ejercicio podría modelarse de muchas maneras. Por alguna experiencia y sabiduría en la cuestión de cuándo modelo jerárquico de XML muestra una ventaja, leer Ron Burrett:

http://www.rpbourret.com/xml/XMLAndDatabases.htm

Hay casos en los DBs XML nativos muestran enormes ventajas de RDB cuando el contenido a almacenar es semi -estructurado. @Smout, es más fácil y seguro almacenar los datos del cliente-cliente-contrato en un RDB, pero ¿qué sucede cuando también tiene que almacenar el contrato?

RDF contrasta con los modelos relacionales y con los modelos xml. RDF está diseñado para una representación de datos de "mundo abierto" en la que nunca se puede estar seguro de saber todo al momento de calcular. El hecho de que RDF se puede expresar en xml es conveniente, pero incidental. Tiene otras expresiones también.

Lea un poco sobre EMC XML Technologies y MarkLogic.

2

En general, XML es solo un formato de archivo temporal para enviar datos de un sistema a otro. O para almacenar un pequeño conjunto de datos, como opciones de configuración y un poco más de datos. Si sus necesidades de datos son pequeñas y se trata de una situación de usuario único, XML estará bien.

Si tiene que lidiar con un entorno multiusuario, puede usar XML pero tendrá que crear una compleja capa de negocios a su alrededor, manteniendo un registro de modificaciones por parte de todos los usuarios y básicamente agregando muchas funcionalidades multiusuario que un RDBMS normal ofrece como estándar. Si tiene muchos datos, existe el riesgo de que su archivo XML se vuelva demasiado grande. El estándar XML está un poco hinchado y si tiene que trabajar con archivos XML de 500 MB cada uno, espero que tenga mucha paciencia.

Existen, por supuesto, otras alternativas. Creé un rastreador web simple una vez que descargaría una página web, extraería todas las URL y luego repetiría esta acción para cada URL. Usó alrededor de 20 hilos que eran todas páginas de descarga y el número de URL crecería a millones. Quería evitar descargar una sola URL dos veces, así que tuve que filtrar los duplicados. Usar XML sería una pesadilla, teniendo en cuenta la cantidad de datos. Usar una base de datos fue excesivo ya que todo lo que necesitaba era una sola tabla con un solo campo: URL. Así que escribí un algoritmo hash especial y creé mi propia solución de tabla hash basada en archivos. También fue realmente rápido, comprobando varios miles de URL por segundo, si no tenía que descargar esas páginas ...

En situaciones como esta, comenzaría por crear un esquema XML simple utilizando algunos modelos herramienta para XML. (El XMLSpy de Altova es bueno en esto). Cuando creo que mis datos encajarían bien en este XSD, empiezo a crear una base de datos, donde cada elemento se convertirá en una tabla. Como resultado, tendría una buena base de datos relacional más alguna definición para un formato XML que se puede usar para importar/exportar los mismos datos a/desde la base de datos.

+0

Básicamente, lo que estoy diciendo es comenzar a modelar en XML. Cuando esté satisfecho con él, conviértalo a una base de datos. –

1

¿Qué tal "ninguno de los anteriores"?

Primero modelaría el Dominio usando una herramienta de modelado conceptual como NORMA. Esto le permitiría concentrarse en el modelo, hasta que haya terminado. En ese momento, NORMA puede generar DDL para varias bases de datos populares, así como un esquema XML.

12

En la década de 1960, los sistemas de gestión de datos se inventaron/concibieron/elaboraron, todos basados ​​en la idea de que los datos pueden organizarse jerárquicamente. IMS es uno de ellos.Las falacias/deficiencias/deficiencias de esos sistemas se hicieron evidentes inmediatamente para cualquiera que las utilizara intensivamente (por ejemplo, tienden a generar "sesgos de consulta": en sistemas jerárquicos, a menudo es fácil consultar qué contratos existen para un cliente determinado, y al mismo tiempo, es casi imposible consultar qué clientes están involucrados en un contrato determinado).

Todas esas deficiencias han llevado finalmente a la invención del modelo relacional.

Si quiere saber si XML es adecuado como solución para CUALQUIER PROBLEMA DE GESTIÓN DE DATOS, pregúntese: "¿Es XML de naturaleza jerárquica o no?".

El éxito de XML en el mercado solo demuestra la exactitud de la observación de que "aquellos que no conocen la historia están condenados a repetirla".

+0

+1 gracias por la bonita vista histórica – KLE

+4

Buenos puntos, pero con los avances en la indexación XML nativa esto realmente se convierte en una cuestión de arquitectura de la información en lugar de una pregunta modelo de base de datos. Las mismas relaciones pueden integrarse en su corpus XML, y ser altamente eficiente al mismo tiempo que permite consultas jerárquicas. Solo tiene que diseñarlos correctamente en sus documentos. No veo la parte "condenado a repetirlo" aquí. –

2

Su ejemplo de ejercicio es bueno, pero creo que llega a una conclusión equivocada.

Mi pensamiento es que debido a la complejidad (y la posible complejidad que todavía tengo que pensar) que esta mejor sería modelada usando XML.

Creo que esta conclusión se basa en la suposición errónea de que XML proporciona una mayor flexibilidad de modelado que el modelo relacional. De hecho (como describe hábilmente Erwin Smout), el modelo relacional es intrínsecamente más flexible que XML, porque XML es estrictamente jerárquico, mientras que el modelo relacional permite muchas relaciones de complejidad arbitraria.

XML podría ser más flexible en tiempo de ejecución si no requiere un esquema estricto y desea poder almacenar casi cualquier cosa. Pero entonces ya no estamos hablando de modelar.

Cuestiones relacionadas