3

私のクライアントである金融サービス プロバイダーは、500 以上のクライアントにソフトウェアを展開しています。

彼らのアプリケーションは C# で書かれており、SQL Server をデータベース バックエンドとして使用しています。彼らは、すべてのクライアント データベースからデータを収集し、少量のデータをクライアントに送り返したいと考えています。いくつかの要件があります。

  1. データ同期は、ソフトウェアの 7 つの異なるバージョン間でわずかに異なる 7 つのデータベース スキーマを持つ 500 以上のクライアントに対して行われます

  2. このデータ同期メカニズムの更新を待つために遅らせることはできません。基本的に、データ同期は、あらゆるスキーマをサポートできるように柔軟である必要があり、変更がアプリケーションのリリースに結び付けられるのではなく、中央の場所から制御される必要があります。

  3. すべてのソフトウェアが Windows 上で実行されるため、.Net で記述する必要があります。

  4. 各クライアントの SQL Server データベースにアクセスできる特別なデータ同期クライアントを一緒に展開することができますが、クライアントの更新が頻繁に行われるとは限りません。

このデータ同期システムの開発に役立つフレームワーク (データベースでトリガーを使用する Microsoft Sync Framework 以外) は既にありますか?

このようなシステムを作成する方法に関するいくつかの良い点を提供する、マルチテナント システムまたはデータ同期について読むのに適した本/記事はありますか?

4

1 に答える 1

3

同期以外の既存のフレームワークがあるかどうかはわかりません。しばらく前に同様の要件がありましたが、mssql を使用していなかったため、MS Sync を使用できませんでした。

これは私がしたことです、いくつかのカスタムコード、

スキーマの変更についていくつかの仮定を行うことは、

  • 新しいフィールド/属性を追加できます
  • 既存のフィールドは削除されません (つまり、既存のデータを移行する必要はありません)。
  • クライアントとサーバーの時計は UTC を使用して同期されています。

次の属性を持つスキーマ履歴テーブルを作成できます。

  • テーブル名
  • バージョン
  • 最終同期日

次に、同期を必要とするすべてのテーブルで、各値に日付の変更と最後に変更されたユーザー属性があります。

  • item1、1/1/13、サーバー
  • item2、2013 年 2 月 2 日、クライアント 1

同期すると、

  1. クライアントのバージョン < サーバーのバージョン ==> がスキーマを更新する場合 (更新スキーマ スクリプトを実行)、スキーマ テーブルを確認します。
  2. サーバーの更新、クライアントにプッシュされる新しいデータを取得します。ここで、所有者 = サーバーおよび日付変更 > クライアント変更日付
  3. 各テーブルの同期の最終変更日と、各テーブルのスキーマ テーブルの最終同期日を比較します。

    変更日 > 同期日およびユーザー = クライアント => サーバーへの同期 (更新または挿入) の場合

複製する場合は、ms 同期の概念http://msdn.microsoft.com/en-us/sync/bb821992.aspxも確認してください。

于 2013-01-30T05:16:40.017 に答える