Compactação .NET de XML para armazenar no banco de dados do SQL Server
Atualmente, nosso aplicativo .NET constrói dados XML na memória que persistimos em um banco de dados do SQL Server. O objeto XElement é convertido em uma string usando ToString () e depois armazenado em uma coluna varchar (MAX) no banco de dados. Nós não queremos usar o tipo de dados SQL XML, já que não precisamos de nenhuma validação e o SQL não precisa consultar o XML em nenhum estágio.
Embora essa implementação funcione bem, queremos reduzir o tamanho do banco de dados compactando o XML antes de armazená-lo e descompactando-o após recuperá-lo. Alguém tem algum código de exemplo para compactar um objeto XElement (e descompactar também seria ótimo)? Além disso, quais alterações eu precisaria fazer no tipo de dados da coluna do banco de dados para que possamos aproveitar totalmente essa compactação?
Eu investiguei novamente o tipo de dados XML que o SQL Server 2005 oferece, e a sobrecarga de validação que ele oferece é muito alta para considerarmos usá-lo. Além disso, embora comprima um pouco o XML, ele não é tão compactado quanto a classe .NET DeflateStream.
Eu testei a classe DeflateStream escrevendo o XML que usamos no disco e, em seguida, salvando a versão comple- tada como um novo arquivo. Os resultados são ótimos, um arquivo de 16kb vai para um arquivo de 3kb, então é necessário fazer isso funcionar na memória e salvar os dados resultantes no banco de dados. Alguém tem algum código de exemplo para fazer a compactação, e devo alterar a coluna varcahr (MAX) para digitar talvez varbinary?
desde já, obrigado