5

多くのテキスト データ (XML データ) を格納したい列があります。1 行あたり約 8,000 文字、1 分あたり約 100 ~ 500 行。

これほど多くのデータは、かなり積極的に列をパージする必要があることを意味します。(会社の SAN で SQL Server をホストする必要があるため、ストレージ スペースは非常に高価です。) しかし、このデータを圧縮する方法を見つけることができれば、データをより長く保持できます。

SQL 2005 でCLR 統合を使用して BLOB を圧縮するこの記事のようなものを見てきました。

SQL Server 2005 用のツールSQLCompress.NETも見ました。

どちらも、私が望むことを正確に行うと言っているようです。 格納中に単一の列のデータを圧縮します。

ただし、ツールは放棄されており (2008 年以降は更新されていません)、問題が発生する可能性があるということ以外は、CLR 統合についてはあまり知りません。 また、これらのソリューションはどちらも SQL Server 2005 用です。

それで、ここに私の質問があります。SQL Server 2008 R2 を使用しています。これらの SQL Server 2005 ソリューションはどちらもうまく機能しますか?

または、データを圧縮するために使用できる別のソリューションはありますか?

注:行の圧縮とページの圧縮は、私が必要としているものには役に立ちません (少なくとも私が確認できる限り)。行の圧縮は固定長のデータを可変長フィールドに格納し、ページの圧縮は冗長データのインスタンスを減らします。これらはどちらも、テキストの大きなブロックには役立ちません。

注 II:この質問を見ましたが、その回答では行とページの圧縮または FILESTREAM が使用されています。データベースをミラーリングする機能が失われているため、FILESTREAM を使用したくありません。

4

2 に答える 2

0

最善の策は、クライアント ライブラリを使用してデータを圧縮および解凍してから SQL Server に入れることだと思います。XML の特定の要素または属性でクエリを実行する場合は、それらを抽出して保存できます。個別の列または正規化された行で(とにかくやりたい-特にネストされた要素の場合、大きなXMLテキスト列のクエリは遅いです)。

于 2012-01-27T19:34:05.013 に答える
0

filestream を使用して xml ドキュメントを保存し、NTFS を使用して圧縮することができます。

この記事を見る

SQL2008 での Filestream の使用

于 2012-02-10T09:39:59.157 に答える