0

Webサービスを呼び出す.Netクライアントがあります。結果をSQLServerデータベースに保存します。

ここでは、データの保存方法に2つのオプションがあると思いますが、長所と短所がはっきりとわからないため、少し未定です。1つは、結果をデータベースフィールドにマッピングすることです。そのためには、たとえば「通常の」結果タイプごとや障害用の結果タイプなど、考えられる各結果タイプに対応するデータベースフィールドが必要になります。

一方、結果のXMLを格納し、XML関数に組み込まれているSQLServerを介してクエリを実行することもできます。

個人的には、SQLとXMLの両方を扱うことに慣れているので、どちらも私には問題ないように見えます。

大きな長所と短所はありますか?また、かなりの数の異なるWebサービス操作のために結果のXMLを保存しようとするときに、データベース設計に関して何を考慮する必要がありますか?考えられるさまざまな結果/タイプのさまざまなエントリを使用して呼び出す各操作の結果テーブルについて考えていました。次に、XMLを右側のフィールドに格納します。たとえば、障害フィールドの障害、適切な「通常の」リターンタイプフィールドなど。

4

1 に答える 1

4

両方を組み合わせて使用​​します。参照データと詳細データ用の XML、および検索対象のフィールド用のテキスト列。検索可能な列には、注文番号、顧客参照、チケット番号が含まれます。それらは XML 列から抽出できるため、必要なときに追加するだけです。

XMLだけはお勧めしません。1 日に 10.000 件のメッセージを保存する場合、クエリは次のようになります。

select * from XmlLogging with (nolock) where Response like '%Order12%'

遅くなり、他のクエリに干渉する可能性があります。また、取得が遅すぎるため、ログを GUI に表示することもできません。

テキスト列だけもお勧めしません。XML 形式が変更されると、空の列が表示されます。XML メッセージがなければ、トラブルシューティングは困難です。さらに、メッセージ ストリームを「再生」する必要がある場合は、XML メッセージを使用すると非常に簡単です。再生が必要な要件はほとんどありませんが、本番環境の問題の影響を修復する場合に非常に役立ちます。

于 2012-09-03T20:19:07.307 に答える