2つの関連システムを開発しています。そのうちの1つ(A)は、お客様のマシンにインストールされます。残りの(B)は私の組織で使用されます。
各システムには独自のデータベース(リレーショナル)があり、スキーマは異なります。ただし、両方のシステムを同期する必要があります。さらに、Bの一部の変更はすべてのクラスAシステムにエクスポートする必要があり、その他は特定のシステムにのみエクスポートする必要があります。
一部のお客様はインターネットに接続していないため、場合によっては、ファイルの交換を介して同期を行う必要があります。
そのため、次のようにこの問題を解決する予定です。
- 各システムは、データベースの変更ログを保持しています。MongoDBで実装する予定です。
- システムが同期プロセスを初期化するとき、ログから行われたすべての変更を取得します。システムがBの場合、取得される変更は宛先によって異なります。次に、システムはそれらをXML形式でシリアル化し、最後に(ファイルまたはネットワーク経由で)送信します。
- 他のエンドポイントが変更セットを受信すると、それらのシリアル化を解除します。次に、システムはデータに対していくつかの変換を行います。これは必要な場合があり、最後に変更を記録します。このステップでは、必要な場合、システムは存在する可能性のある競合を解決する必要があります。
- 最後に、受信側システムはその変更(および競合解決の他の製品)を送信します。
このアプローチは実行可能で、スケーラブルでエレガントですか?どのような変更または追加を行いますか?