データテーブルの比較に使用する新しいシステムをセットアップしています。何が起こるかです:
私のソフトウェアは、データを書き込んだり構造を変更したりするオプションがないサードパーティのデータベースにクエリを実行します。結果はDataTableです。この時点で、このデータテーブルは同期され、XMLとしてディスクに保存されます。次の同期では、クエリは再びDataTableを返します。次に、保存されたデータテーブルをディスクからロードし、差分の計算を開始します。つまり、新しいレコード、変更されたレコード、および削除されたレコードです。diffレコードのみが同期され、保存されたXMLは最新のクエリに置き換えられます。
これは問題なく機能しますが、大規模なクエリではパフォーマンスが低下します。そのため、代わりにSQL Server(2008以降)データベースにデータを切り替えて保存する必要があります。このために、ベストプラクティスを探しています。私たちが考えたのは、レコードのある種のハッシュを計算し、それを使用してレコードが変更されたかどうかを確認することです。システムはすべてのタイプのDataTableに対して汎用的に機能する必要があるため、厳密な列構造はありません。
SQL Serverはそのようなことをサポートしていますか?または、コードでハッシュを計算してSQLに保存する方がよいでしょうか。レコード全体を保存する必要はないと考えました。新しいレコードはソーステーブルにあります。変更されたレコードの場合は、ハッシュを使用して変更を見つけるだけで十分です。削除されたレコードの場合は、ターゲットシステムのレコードを削除できるように、レコードの主キーを保存するだけで十分です。