¿Cuándo debo usar el tipo de datos XML en Microsoft SQL Server?
sql-server
xml
FarligOpptreden
fuente
fuente
Personalmente, nunca he usado el tipo de campo XML en SQL Server antes, y he realizado mucha programación de base de datos desde que agregaron esta característica. Siempre me pareció una sobrecarga programática y de rendimiento para usar contenido XML en una base de datos de forma nativa. Sinceramente, pensé que era un truco, porque todos estaban en el tren XML en un momento a principios de la década de 2000. "Oh, XML está activo, así que vamos a agregarlo a SQL Server para que no nos veamos pasados".
El mejor caso de negocios que puedo ver podría estar en la grabación de mensajes de datos basados en XML que ha recibido en los que es posible que desee ver su estructura y datos, pero desea mantener la integridad del mensaje original por razones comerciales o legales. La sobrecarga podría ser demasiado grande para traducir el XML en una estructura de tabla, pero el uso de las capacidades XML en SQL Server podría reducir el costo de examinar los datos lo suficiente como para justificar su uso.
Probablemente haya docenas de otras razones por las que querría usarlo, pero francamente creo que debería considerar otros caminos hacia la felicidad antes de volverse loco con XML en SQL Server a menos que tenga razones comerciales muy específicas para hacerlo. Utilice un campo varchar (max) o de texto si tiene más sentido.
Sólo mi opinión, por supuesto :)
fuente
Solo he encontrado algunos escenarios en los que buscaría activamente el uso del tipo de datos XML en SQL Server. Esto está fuera de mi cabeza, en orden de menor a mayor interés:
Dicho todo esto, el 99% del tiempo, no necesito absolutamente un campo XML al diseñar un esquema.
fuente
Las pocas veces que he visto el tipo de datos XML en el servidor SQL se ha utilizado básicamente como un campo que se ha consultado como cualquier otro en la base de datos, lo que puede tener algunas implicaciones de rendimiento muy malas si tiene una gran cantidad de datos . Hay una razón por la que se llama servidor SQL y no servidor XML. :-) Las consultas que van en contra del XML simplemente no son tan rápidas como hacer una consulta de selección regular.
Sin embargo, pude ver que se usa para almacenar XML que no se consulta tanto, por ejemplo, almacenar el documento XML completo en un tipo de datos XML, pero tener los campos de búsqueda (claves) almacenados por separado con el documento XML. De esa manera, puede consultar su información más rápido y extraer el documento XML cuando llegue al punto donde desea ver el documento completo. De hecho, tuve que regresar y hacer esto con un número de aplicaciones en las que las personas intentaron usar el tipo de datos XML como un campo muy consultado y los datos crecieron hasta el punto en que la consulta se volvió demasiado lenta.
fuente
He usado campos de tipo XML principalmente para fines de registro relacionados con servicios web ASMX o servicios WCF. Puede guardar la solicitud o los mensajes de respuesta.
La mayoría de las veces, guarda el XML en la base de datos con fines de referencia, no para su actividad comercial habitual (no para consultarlo cada 5 segundos desde el código). Si lo hace, determine los campos que generalmente consulta o usa la mayor parte del tiempo y cree columnas separadas para ellos. De esa forma, cuando guarde el XML en la base de datos, puede extraer estos campos y guardarlos en sus columnas correspondientes. Más adelante, al recuperarlos, no necesitará consultar el documento XML, solo puede usar las columnas que creó para este propósito.
fuente
Estos son los escenarios que vienen a la mente de inmediato cuando se consideran las condiciones que deberían existir para permitir los campos Xml en SQL Server:
fuente
Uso XML ampliamente en aplicaciones cliente-servidor para guardar datos estructurados en una sola llamada a la base de datos. Como ejemplo, tome una factura con líneas de detalle. Es simple hacer que el cliente serialice el objeto comercial en XML y lo pase a un proceso almacenado en una sola llamada. El proceso decide si se requiere una inserción o actualización; puede obtener el ID de la factura principal (una columna de identidad) para asignar a los registros detallados, todo dentro de una transacción del lado del servidor y sin que el cliente tenga que hacer varios viajes de ida y vuelta. No necesito más o menos 20 parámetros para especificar el registro de encabezado y no tengo que hacer una llamada para cada línea de factura. Además, a menudo es posible realizar cambios de esquema o introducir registros / auditorías, sin tener que tocar al cliente.
fuente