Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

OPINION: Guardar XML en BD (pros? contras?)

Estas en el tema de OPINION: Guardar XML en BD (pros? contras?) en el foro de Bases de Datos General en Foros del Web. Hola a todos! Quería saber qué opinan ustedes sobre armar un sistema que almacene XML en la base de datos, pero de forma masiva. Es ...
  #1 (permalink)  
Antiguo 09/10/2008, 13:12
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 11 meses
Puntos: 2
OPINION: Guardar XML en BD (pros? contras?)

Hola a todos!

Quería saber qué opinan ustedes sobre armar un sistema que almacene XML en la base de datos, pero de forma masiva. Es decir, crearía un "armador" que parsee XML y genere elementos del sitio, por ejemplo:

<object id='23'>
<text>hola soy un titulo</text>
<align>right</align>
<type>giant</type>
</object>


Puedo generar un XML grande con todos los OBJETOS y parsearlo, pero como pierdo tiempo "generando" ese XML en base a la data que traigo de las tablas de la DB me pregunto... ¿que tan descabellado sería reducir la cantidad X de tablas de un sistema a solo 1 ó 2 (hablamos de contenidos) que almacenen los elementos en XML?


¿que posibilidad puede haber de perdida de datos? ¿es algo "loco" ó es prefectamente normal y se usa hacer esto?

Gracias por sus sugerencias!

Saludos.
  #2 (permalink)  
Antiguo 09/10/2008, 13:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: OPINION: Guardar XML en BD (pros? contras?)

Tema trasladado a Bases de Datos.

Hola Computer XTress, como bien dices creo que perderias tiempo al parsear los datos, y es agregarle una doble carga a tu server, ya que es primero accesar a la BDD y posteriormente pasar los datos a una forma manipulable.

Lo mejor es que guardes todo en la BDD directo para mejor manipulación, aparte si tienes los datos en XML te dificultara al hacer las búsquedas.

Saludos.
  #3 (permalink)  
Antiguo 09/10/2008, 15:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: OPINION: Guardar XML en BD (pros? contras?)

Considerando que desde la incorporación del estándar SQL-2003 en adelante, los DBMS tienen incorporadas funciones de generación de XML (sobre todos los principales), almacenar un producto secundario de una tabla como el XML es un desperdicio de recursos.
¿Para qué quieres guardar algo que se puede crear en tiempo de ejecución sin generar grandes problemas de performance?
Una de las reglas de la optimización es, precisamente, nunca guardar atributos calculables, ni valores u objetos que se puedan generar directamente en las aplicaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 10/10/2008, 00:48
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Respuesta: OPINION: Guardar XML en BD (pros? contras?)

Las bases de datos incorporan XQuery, XPath y tipos de datos XML, para dar soporte a lo que ya es XML y se quiere almacenar dentro de la base, no para lo que planteas. Dejando de lado el tiempo adicional que vas a estar parseando datos, no creo que los planes de ejecución de ese modelo sean muy buenos.

Cita:
Una de las reglas de la optimización es, precisamente, nunca guardar atributos calculables, ni valores u objetos que se puedan generar directamente en las aplicaciones.
Algún día tendremos que debatir sobre esto, pero eso es para otro post :)

Saludos
  #5 (permalink)  
Antiguo 10/10/2008, 07:57
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: OPINION: Guardar XML en BD (pros? contras?)

Si, comprendo los puntos que me dicen. Es natural. Pero mi duda surge a raiz de ver ciertas aplicaciones como por ejemplo "backpack-it"... por un lado ellos arman todo el arbol de elementos en base a un XML, y un web service te da ese XML para que lo puedas agregar en tu sitio por ejemplo.

Yo ultimamente estoy haciendo muchos sistemas de ese estilo, con mucho componente dinámico, y lo que estoy haciendo ahora en principio es trabajar puramente con XML para el rendering ó el armado de las paginas dinamica, por ejemplo, tengo un sistema en el que el usuario arma una pagina agregando / quitando / modificando elementos (titulos,parrafos,fotos,videos,galerias,notas,agen das). Todos estos cambios se hacen de forma asincrónica con ajax y dhtml.

El primer aproach que tuve fue, generar las paginas de usuario de forma tipica: Levanto la pagina de usuario de la DB y todos sus elementos, proceso y armo todo (sin XML).

Ahora me decidi y arme un web service que, levanta la data de la BD, arma un XML. Otro proceso diferente es el que pide el XML al servidor, lo parsea y arma el HTML de la página. Estoy agregando un proceso MAS, claro, pero me resulta MUY comodo al momento de manipular los contenidos de usuario de forma dinámica...

A raiz de esto se me ocurrio... ¿por qué no meto todo ese XML en la BD y ya? Obvio que es descabellado teniendo en cuenta que mi BD esta tan bien armada, con todas sus relaciones y todo lo que es ORM también esta muy bien definido... esta todo muy prolijo como para tomar una decisión asi algo "radical" de volar todo al cuerno y que la "PAGINA DE USUARIO" (que es un XML) se guarde directamente como tal...

Creo que será cuestión de hacer una pequeña prueba y ver que pasa...


Gracias por las opiniones !!

PD: Tengan en cuenta que no estoy hablando de guardar en DB toda la data de un sitio en XML, solo de una aplicación y su contenido.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.