2009-02-05 9 views
10

¿Tiene más sentido (excepto la validación del lado del servidor XML/schema/dtd) almacenar XML en tipo XML en lugar de text/varchar/ntext? No estoy planeando hacer ninguna manipulación XML en el lado de la base de datos.Microsoft SQL Server 2005/2008: XML vs texto/varchar tipo de datos

El propósito de mi investigación es disminuir el tamaño de la base de datos. ¿Puedo usar XML data type para XML sin tipo para este propósito? ¿Cuáles son los pros y los contras?

Encontré un article related to the topic, pero no estoy seguro de si las suposiciones/conclusiones de los autores son correctas.

Respuesta

7

Mi rápida investigación muestra que MS SQL 2005 (Express Edition)

Microsoft SQL Server 2005 - 9.00.3073.00 (Intel X86) Ago 2008 12:31:12 5 Derechos de autor (c) 1988- 2005 Microsoft Corporation Express Edition en Windows NT 6.0 (Build 6000:)

tienda de XML con una sobrecarga de aproximadamente 70% (más rápido posible para el procesamiento/análisis).

Mis datos antes de la conversión: filas = 160320, reservados = 178576 KB, datos = 178184 KB, index_size = 272 KB, sin uso = 120 KB

Mis datos después de la conversión: filas = 160.320, reservado = 309702 KB , data = 307216 KB, index_size = 1672 KB, sin usar = 184 KB

Por lo tanto, no tiene sentido almacenar datos XML en el tipo de datos XML si no planea utilizar la tecnología XML en la base de datos.

+0

¿Estás seguro de que el tamaño de la base de datos aumenta? Es contrario a lo que dijo Saulius. Es importante para mí ya que tengo un módulo de registro que escribe en un DB y un miembro de mi equipo propuso mantener algunos detalles de registro en XML. Si DB disminuye, podría considerar convertir a XML, pero definitivamente no si aumenta el tamaño de la base de datos. –

+0

Ver figuras en mi ejemplo (compare el valor de los datos antes y después de la conversión). En mi caso, el tamaño de la base de datos aumentó en 1,7 veces. – FoxyBOA

7

Si almacena xml en una columna tipada xml, los datos no se almacenarán como texto simple, como en el caso nvarchar, se almacenará en algún tipo de árbol de datos analizados, que a su vez será más pequeño que el versión xml sin analizar. Esto no solo disminuye el tamaño de la base de datos, sino que le brinda otras ventajas, como la validación, la manipulación fácil, etc. (aunque no esté utilizando ninguno de estos, están ahí para su uso futuro).

Por otro lado, el servidor tendrá que analizar los datos al insertarlos, lo que probablemente reducirá la velocidad de su base de datos; debe tomar una decisión de velocidad frente a tamaño.

Editar:

Personalmente, creo que los datos en la base de datos deben ser almacenados como XML sólo cuando tiene una estructura que es difícil de implementar en un modelo relacional, por ejemplo, diseños, descripciones de estilo, etc. Normalmente eso significa que no habrá demasiados datos y que la velocidad no es un problema, por lo tanto, se agregaron características xml, como validación de datos y capacidad de manipulación (también, por último pero no menos importante, la capacidad de hacer clic en el valor en managment studio y vea xml formateado - ¡Me encanta esa función!), supere los costos.

No tengo experiencia directa en el almacenamiento de grandes cantidades de xml en la base de datos y no haría eso si tuviera la opción, ya que es casi siempre más lento que un modelo relacional, pero si ese fuera el En este caso, recomiendo crear perfiles de ambas opciones y elegir entre el tamaño y la velocidad que mejor se adapten a sus necesidades.

+0

Leí la teoría (es decir, el artículo de MSDN). ¿Alguna experiencia práctica con el tipo de datos XML? Estoy un poco sorprendido de que el almacenamiento de XML como tipo de datos XML haya aumentado el uso del procesador de la base de datos (ver enlace en mi publicación original). – FoxyBOA

+0

¿Puede darnos más detalles sobre su declaración de que el tamaño de la base de datos se reduce al usar XML? Es contrario a FoxyBOA medido. –

2

Estoy utilizando xml extensamente para comunicarme con dispositivos portátiles y estoy usando XQuery en la mayoría de mis procesos almacenados para recuperar solo los datos del XML que necesito. ¡Funciona EXCELENTE! Solo me preocupa el espacio de almacenamiento porque con solo cien mil registros más o menos, el tamaño de la base de datos es de 1 a 2 GB.Esperamos lanzar millones de registros almacenados para el registro y el uso del cliente ... por lo que será preocupante hasta que vea lo que realmente va a hacer en términos de uso del espacio.

+0

Estoy en otra posición: todas mis manipulaciones XML se ejecutan en un lado del servidor de aplicaciones. Entonces soy libre de elegir cómo almacenar XML en una base de datos (en formato de texto o XML). – FoxyBOA

2

Tiene sentido usar el tipo de datos XML para almacenar datos XML, ya que tiene que tratar con UTF8 a UTF18 y viceversa, la conversión en servidores MS SQL.

Cuestiones relacionadas