Compresión .NET de XML para almacenar en la base de datos de SQL Server

Actualmente nuestra aplicación .NET construye datos XML en la memoria que conservamos en una base de datos de SQL Server. El objeto XElement se convierte en una cadena usando ToString () y luego se almacena en una columna varchar (MAX) en el DB. No queremos utilizar el tipo de datos SQL XML ya que no necesitamos ninguna validación y SQL no necesita consultar el XML en ningún momento.

Aunque esta implementación funciona bien, queremos reducir el tamaño de la base de datos comprimiendo el XML antes de almacenarlo, y descomprimirlo después de recuperarlo. ¿Alguien tiene algún código de muestra para comprimir un objeto XElement (y descomprimir también sería bueno)? Además, ¿qué cambios debería realizar en el tipo de datos de la columna de la base de datos para que podamos aprovechar al máximo esta compresión?

He investigado nuevamente el tipo de datos XML que ofrece SQL Server 2005, y la sobrecarga de validación que ofrece es demasiado alta para que podamos considerar su uso. Además, aunque comprime un poco el XML, no tiene tanta compresión como la clase .NET DeflateStream.

He probado la clase DeflateStream al escribir el XML que usamos en el disco y luego guardar la versión en comillas como un nuevo archivo. Los resultados son excelentes, un archivo de 16kb se reduce a un archivo de 3kb, por lo que solo se trata de hacer que esto funcione en la memoria y guardar los datos resultantes en la base de datos. ¿Alguien tiene algún código de muestra para realizar la compresión, y debo cambiar la columna varcahr (MAX) para que se escriba en varbinary?

Gracias por adelantado

Respuestas a la pregunta(4)

Su respuesta a la pregunta