2

「配列」および「辞書」タイプの情報を SQL Server 2012 データベースに格納する方法についてのアドバイスを探しています。これまで、xml 型を使用してきました。これは、クエリを簡単に実行でき、簡単に表すことができるためです。たとえば、次のようになります。

<Array><i>1</i><i>2</i><i>3</i></Array>
<Dictionary><Item1>Value1</Item1><Item2>Value2</Item2></Dictionary>

今まで、xml データ型は PAGE 圧縮の恩恵を受けると思っていましたが、そうではないことに今日気づきました。データベースは毎日何十万ものこれらのレコードを保存するため、これはかなり大きな問題であり、データの多くはこの圧縮されていない XML になると思われます。

だから私は回避策を探しています。このデータを表にできるかもしれないと思います。たとえば、データ ディクショナリ テーブルは次のとおりです。

[ID] bigint PK,
[OwnerID] bigint,
[Name] varchar(32),
[Value] varchar(32)

そして配列:

[OwnerID] bigint PK
[Index] int PK
[Value] varchar(32)

これは機能しますが、このメソッドがどの程度「クエリ可能」になるかが心配です。つまり、「WHERE ObjectID の X 辞書が適切に = Y」になります。このためのスカラー関数を作成できますが、パフォーマンスの問題が発生することはわかっています。

私はこの特定の問題について読みましたが、一般的なコンセンサスは「xml 列を使用し、それについて心配する必要はありません」のようですが、許可する必要があるデータの量を考えると、これはそうではないと思います私のためのオプション。

アドバイスや洞察をいただければ幸いです。

4

1 に答える 1