(Este mensaje está solicitando experiencias personales sobre el almacenamiento XML;. Por favor comparte lo que sabes :-))para almacenar datos XML como XML o en tablas normalizadas
Estoy trabajando en una aplicación de servicio que se comunica con un servicio externo usando XML. Estoy planeando usar SQL Server 2008 para almacenar el XML que se recibe y se envía al servicio externo. Estoy explorando mis opciones para almacenar el XML en la base de datos. Las tres opciones que he identificado son:
- tienda el XML en una columna XML tipo de datos
- Crear tablas para almacenar las diversas relaciones de padres e hijos representados en el XML.
- Un híbrido de los dos enfoques anteriores donde el XML original se almacena en una columna de tipo de datos XML pero varios campos del XML se dividen en sus propias columnas para simplificar las consultas y la indexación.
Estoy buscando algún consejo, basado en su experiencia personal, con el almacenamiento y la recuperación de datos XML en SQL Server.
Algunos antecedentes: he utilizado un equivalente 'xsd.exe' llamado XsdObjectgenerator para crear clases .net basadas en los esquemas XML. Cuando el servicio recibe el archivo XML, se deserializa en una instancia de la clase .net. Esta instancia se usa para realizar las operaciones del servicio. Mi plan original era utilizar la opción n. ° 1 anterior para almacenar el XML. Si tuviera que actualizar o informar sobre los datos, simplemente deserializaría el registro db en una de mis clases .net.
Aunque este enfoque funciona y hace que trabajar con xml sea muy simple, me preocupa que a medida que aumente el volumen de datos, disminuirá el rendimiento de la consulta de registros de tipos de datos XML. Es por eso que he explorado las opciones 2. & 3. arriba.
Además de almacenar el XML, se consultará el XML para su uso en ambos informes y en una aplicación web por separado. Los registros de db serán consultados, ordenados, filtrados, agrupados, resumidos y posiblemente actualizados por los usuarios finales.
Yo definiría las intenciones de la "base de datos de registro" con mayor claridad. parece que debería almacenar los archivos comprimidos de xml en un directorio y tener esto como una alternativa, cuando quiera hacer algunos informes sobre ellos. también es extremadamente fácil hacer una copia de seguridad de estos archivos, o moverlos fuera del sistema en vivo, que exportar partes de un DB. – cRichter
Gracias por tu comentario. He agregado detalles adicionales arriba. – Dean