Kompresja XML .NET do przechowywania w bazie danych SQL Server

Obecnie nasza aplikacja .NET konstruuje dane XML w pamięci, które przechowujemy w bazie danych SQL Server. Obiekt XElement jest konwertowany na łańcuch za pomocą ToString (), a następnie przechowywany w kolumnie varchar (MAX) w DB. Nie chcemy używać typu danych XML XML, ponieważ nie potrzebowaliśmy żadnej walidacji, a SQL nie musi odpytywać XML na żadnym etapie.

Chociaż ta implementacja działa poprawnie, chcemy zmniejszyć rozmiar bazy danych, kompresując XML przed jego przechowywaniem i dekompresując go po pobraniu. Czy ktoś ma jakikolwiek przykładowy kod do kompresji obiektu XElement (a dekompresja byłaby również świetna)? Ponadto, jakie zmiany musiałbym wprowadzić do typu danych kolumny bazy danych, abyśmy mogli w pełni wykorzystać tę kompresję?

Zbadałem ponownie typ danych XML, który oferuje SQL Server 2005, a narzut, jaki oferuje, jest zbyt wysoki, abyśmy mogli go rozważyć. Ponadto, mimo że kompresuje XML w pewien sposób, nie kompresuje go tyle, co klasa DeflateStream .NET.

Przetestowałem klasę DeflateStream, zapisując XML, którego używamy na dysku, a następnie zapisując wersję komrową jako nowy plik. Wyniki są świetne, plik 16 kB sprowadza się do pliku 3 kb, więc jest to przypadek, aby to zadziałało w pamięci i zapisało dane wynikowe w DB. Czy ktoś ma jakikolwiek przykładowy kod do kompresji i czy powinienem zmienić colum varcahr (MAX) na typ na varbinary?

Z góry dziękuję

questionAnswers(4)

yourAnswerToTheQuestion