現在、会社の同期アプリケーションの開発を任されています。クライアントデータベースと同期されるデータベースサーバーにSQLサーバーがあります。クライアント データベースは不明です。SQLite や MYSQL などの可能性があります。
この同期アプリが行うことは、サーバーおよびクライアント データベースで発生する変更を検出することです。これらの変更を保存して同期します。サーバー データベースで変更が発生すると、クライアント データベースと同期され、その逆も同様です。
私はそれについていくつかの調査を行い、多くの解決策を知るようになりました。その 1 つは、Microsoft Sync Framework を使用することです。しかし、リモート データベースと同期するための適切な実装例はほとんど見つかりませんでした。
次に、SQL Server 2008 で Change Data Capture(CDC) に出会いました。CDC は、トリガーを介してソース テーブルの変更を検出し、これらの変更を sync_table という別のテーブルに配置することで機能します。このテーブルは同期に使用されます。
マシンに十分なデータベース権限がないため、CDC 機能を使用できないため、CDC のように機能する独自のソリューションの開発を開始しました。ソーステーブルごとに個別の sync_table を作成し、データの変更を検出するトリガーを作成して、このデータを sync_table に入れます。
ただし、最適な実装方法を選択するために、さらに調査を行うことをお勧めします。
次のことを心に留めておく必要があります。
- データベースは同じネットワーク上にある場合とない場合があります。
- サーバー側では、同期プロセスに参加するテーブルをユーザーが選択できる必要があります。
- サーバー データベースと同期するデバイスを最初に登録する必要があります。つまり、同期を開始する前に、すべてのクライアント デバイスがユーザーによって登録されます。
いつものように、助けていただければ幸いです:)