2009-08-25 15 views
5

Duplicar posible:
Why would I ever choose to store and manipulate XML in a relational database?¿Cuándo optas por almacenar XML en una base de datos relacional?

Aunque esta pregunta en la superficie parece ser una repetición de lo que ya se ha solicitado con anterioridad, voy a decir por adelantado que no lo es. Mi pregunta no es cómo almacenar o recuperar XML de una base de datos relacional. La pregunta en cuestión es mucho más fundamental que eso:

¿Qué tipo de datos almacena generalmente en formato XML en su base de datos? ¿Cuáles son sus decisiones de diseño para hacerlo? ¿Está dispuesto a renunciar al aspecto 'relacional' de su base de datos al colocar ciertas partes de su modelo en una publicidad XML? Las cosas como las preferencias o los archivos de configuración se pueden almacenar como XML en una base de datos relacional, pero ¿debería hacerlo?

+4

Dupe de http://stackoverflow.com/questions/184727/why-would-i-ever-choose-to-store-and-manipulate-xml-in-a-relational-database entre otros –

Respuesta

2

Mi experiencia con el almacenamiento de XML en una base de datos relacional suele almacenar objetos serializados con fines históricos o como parte de una estrategia de persistencia con la suposición de que posteriormente recuperaré este XML y lo rehidrataré en un objeto.

0

Tiendo a almacenar xml blurbs (u otros datos opacos como json serializados) cuando los datos en sí no necesitan tener relaciones.

2

La única razón, en mi humilde opinión, para poner XML en una base de datos es si necesita interactuar, editar o cambiar los datos con su proyecto. Si simplemente está leyendo y usando los datos XML, simplemente tírelo en un archivo. Pero si esos datos se están modificando o agregando a la aplicación, es mejor usar un DB para eso y realmente no necesita XML, ya que la tabla describirá la estructura de los datos.

0

uso estas condiciones para almacenar datos XML en una base de datos.

  1. no tengo el tiempo para desarrollar las tablas relacionales (en realidad, a veces comenzar de esta manera sólo para obtener un prototipo en funcionamiento).

  2. Los datos son mucho grande y complejo en su estructura a romper en tablas sin un esfuerzo considerable

En general me gusta para almacenar datos relacionales en mi base de datos, pero imagina que tengo un objeto que representa a todos los datos necesarios para renderizar una página web (me refiero a todo, fuentes, imágenes, etc.), va a ser increíblemente complejo, almacenarlo en una estructura de tabla solo servirá para resolver problemas de mantenimiento: la estructura es fluida. también me causaría problemas de consulta. Imagine el número que se uniría a la necesidad que tengo que hacer y el tiempo que tomaría.

1

Su código puede querer procesar datos XML de la siguiente manera:

  1. , además de persistir en la base de datos, hacer todo el proceso en la capa de negocio, por ejemplo, una cola o pista de auditoría de mensajes SOAP hacia/desde un servicio web. Para esto usaría una columna de texto simple.
  2. Persistencia en la base de datos y ejecución de consultas ocasionales en la capa de la base de datos, p. un documento XHTML que los usuarios podrían buscar. Para esto, utilizaría el tipo de datos xml en SQL Server 2005 o superior, o el equivalente en otros DBMS.
  3. Consultas relacionales complejas a gran escala en la capa de la base de datos, p. una burbuja de datos relacionales que simplemente se serializó en XML y ahora debe almacenarse en su forma correcta.Obviamente, esto se almacenaría en el conjunto de tablas que coincidían con la estructura de datos deserializada.
3

Nunca.

Almacenar datos en los que existe algún tipo de estructura reconocible como XML, en lugar de como datos relacionales, significa abandonar el poder del álgebra relacional para operar sobre esos datos.

Si esa es su intención, está bien, pero se honesto al respecto y simplemente no se moleste en usar un DBMS relacional, simplemente descargue su XML en algún archivo local/seudolocal.

(Observe que todo lo almacenado en un sistema de archivos también constituye una base de datos, por lo que no significa que usted "no está utilizando una base de datos". Simplemente no está utilizando uno que se gestiona relacionalmente, que era su intención de arrancar.)

+0

Aunque estoy de acuerdo con usted en la mayoría de los casos, hay situaciones en las que puede almacenar XML en una base de datos SQL, cuando no se necesita potencia relacional, como señalaron los otros tipos que respondieron esta pregunta. Esta publicación contiene más información: http://nativexmldatabase.com/2010/09/28/5-reasons-for-storing-xml-in-a-database/ – Fabio

Cuestiones relacionadas