4

今日のセットアップでは、XML データを取得し、そのデータを SQL の複数のテーブルに分割します。これの唯一の利点は、レポートが優れていることです。ただし、データを取得したいときはいつでも、何百ものテーブルからすべてのデータを再バインドして、XML を再エクスポートする必要があります。各 XML は、数 MB から数 GB になる可能性があります。

皮肉なことにレポートを実行することはほとんどありませんが、データの取得/保存は頻繁に行います。複数のテーブルで分割/コンパイルするため、保存と取得の両方があまり効率的ではありません。

データは XML として入ってくるので、メソッドを更新して XML を大きな BLOB としてテーブルに保存することを検討しています。それはとても簡単です。

この問題は現在、レポートに付随しています。BLOB のインデックスを作成する機能がないため、可能な限り効率的なレポートを実行するには、どのオプションを使用すればよいか考えています。

データベースは数百 GB です。

私は DBA ではありません (私は C# の人間です) - 仕事でこのポジションに就いたばかりなので、これについて考えることができる唯一の方法は、C# を使用してそれを行うことです - 各 BLOB を XML として構築してからクエリを実行することですC# の XML データ。ただし、これは非常に非効率的であるように思われます。SQL の XQuery の方が優れているのではないでしょうか?! DBA ではありませんが、プログラミング (C#/VB) や SQL に関する提案があれば、たいへん嬉しく思います。

4

1 に答える 1

3

データベース内の単一のXML タイプの列にデータを保存してから、XQuery を介してデータにアクセスできます。

XQuery は個人的には少し面倒ですが、次のヒントのリストが非常に役立つことがわかりました。

http://www.jackdonnell.com/?p=266

利点は、データの 1 つのバージョンのみを永続化するため、更新と読み取りが迅速で、XML 解析ビットは別として (ただし、これはデータ量に依存する場合があります) ことです。XML を対応する .xml にマップできるため、C# からデータベースにデータを取得するのは簡単ですSqlDbType

于 2012-10-01T12:49:57.653 に答える