4

Java アプリケーションでデータベース同期を実装する必要があり、成熟したツールであり、さまざまな DBMS を同期できる SymmetricDS の使用を開始しました。

SymmetricDS で少し遊んでみましたが、私のニーズを満たすことができませんでした。そのため、このツールについていくつか質問があります。

最初に、アプリケーションのコンテキストを公開します:
Java (JavaFX 2.0 + H2 データベース + Hibernate) で記述されたデスクトップ アプリケーションを開発しました。私のアプリケーションの。
ここで、異なるコンピューターにインストールされたアプリケーションの複数のインスタンス間で同期する必要があります。
SymmetricDS を「マスター」エンジンとして実行する外部サーバーで「マスター」MySQL データベースを実行しています。
アプリケーションは、H2 データベースと ClientSymmetricEngine を使用します。
また、クライアント間ですべてのデータを同期する必要があります。

SymmetricDS を使用して多かれ少なかれ機能するシステムをセットアップすることができましたが、いくつかの問題点があります。

  • デフォルトで使用される「最後の同期が勝つ」の代わりに、「最後の更新が勝つ」戦略を単純に実装する方法はありますか?

  • SymmetricDS を既存のアプリケーションに埋め込むための、より完全なドキュメントまたはステップバイステップのガイドはありますか?

  • Spring Framework を使用せずに対称プルおよびプッシュ ジョブを拡張するにはどうすればよいですか (同期中にアプリケーションをフリーズする必要があります)。

  • 自分でテーブルをパージするとどうなり
    ますか? 同期する変更がない場合でも、このテーブルは数分後に急速に大きくなり、アプリケーションが遅くなります。

読むためのThx。
JBRTRND

4

1 に答える 1

5

デフォルトで使用される「最後の同期が勝つ」の代わりに、「最後の更新が勝つ」戦略を単純に実装する方法はありますか?

はいあります:

NEWER_WINS: USE_TIMESTAMP または USE_VERSION によって競合が検出された場合、新しいタイムスタンプまたはより高いバージョン番号を持つ側に基づいて、ソースまたはターゲットのいずれかが勝つことを示します。resolve_row_only 列は、バッチ全体を無視するか、競合している行だけを無視するかを制御します。

USE_TIMESTAMP または USE_VERSION 競合検出を使用してから、NEWER_WINS 競合解決戦略を使用する必要があります。

SymmetricDS を既存のアプリケーションに埋め込むための、より完全なドキュメントやステップバイステップのガイドはありますか?

いいえ、ありません。自分でそれを把握するか、スタンドアロンサーバーをより適切に使用する必要があります. アプリに統合するために時間を無駄にする必要がないだけでなく、将来の更新は簡単です. 新しいバージョンをダウンロードして、古いバージョンを置き換えるだけです。

Spring Framework を使用せずに対称プルおよびプッシュ ジョブを拡張するにはどうすればよいですか (同期中にアプリケーションをフリーズする必要があります)。

SymmetricDS は Spring を使用して記述されているため、大幅に書き直さない限り、他の何かを使用して拡張することは非常に困難です。スタンドアロン サーバーを使用する場合、Spring を避けて拡張する必要はありません。

プッシュ/プルが成功するたびに、テーブルを自分でパージするとどうなりますか? 同期する変更がない場合でも、このテーブルは数分後に急速に大きくなり、アプリケーションが遅くなります。

ここで説明されているように、パージ ジョブの期間を短縮し、正常に同期されたコードの存続期間を短縮するだけです: http://www.symmetricds.org/doc/3.6/user-guide/html- single/user-guide.html#purge-job

于 2014-09-11T11:55:11.543 に答える