外部接続が制限されているデータベース(最大5つ)があります。そのため、すべてのデータベース操作を維持するサーバーアプリケーションを導入しました。そのサーバーは、コールバックを伴うWCFサービスを使用して、すべての変更をクライアントに通知します。クライアントは、データベースのローカルコピーをシリアル化された辞書に保存します。すべてが正常に機能し、1つのクライアントまたはサーバーが変更を実行すると、他のすべてのクライアント/サーバーにほぼ瞬時に通知されます。問題は、クライアントが同期しなくなることがあり、それを修復する唯一の方法は、データベースのローカルコピーを削除することです(サーバー上にある場合もあります)。一部のオブジェクトがデータベースから削除されたときに発生することがわかりました。自動更新でdatetimeを使用して変更された行を検索しますが、これは削除されたオブジェクトではうまく機能しません。1つのテーブルに160000を超える行があるため、それらをローカルコピーと比較するのは...面倒です。だから質問は:
1)データベースのローカルコピーを作成および維持するための優れたアルゴリズム(実際のデータベースとサーバー間、およびサーバーとクライアント間)を誰かに教えてもらえますか(レプリケーションは使用できません)
2)シリアル化された辞書よりもローカルに保存する方が良い方法です(すべてのデータが読み込まれると、アプリは多くのスペースを必要とします)
PS。データベースなしでいくつかの解決策を考えましたが、私は常にそのローカルコピーが必要であるという結論に達しました。