2017-11-09 10 views
-1

私は2つのアプリケーション(Java + postgresのバックオフィスと、デルファイとFirebirdのデスクトップアプリケーションがたくさんあります)があります。私はいくつかのテーブルの双方向の同期が必要です。私はこれのいくつかの方法を参照してください:双方向DB同期

  1. 変更セット。私は両面にチェンジセット付きのテーブルを持っています。何かのような:番号、タイプ(作成、更新、削除)、エンティティ名とjsonまたはxmlデータ。したがって、デスクトップはバックオフィスのチェンジセットをいくつかの番号から尋ねて実際の状態を得ることができます。デスクトップ上に何かが作成された場合、バックエンドにチェンジセットを送信します
  2. すべての同期テーブルには変更日の列があります。そこで、ある日からバックオフィスの行を尋ねることができます。私はソフト削除を持っているので、削除は更新です。この場合、削除操作も追跡できます。また、デスクトップからバックオフィスに変更を送信する必要があります
  3. すべての同期テーブルにハッシュ行があります。したがって、不一致ハッシュでデータを尋ねることができます。また、デスクトップからバックオフィスに変更を送信する必要があります

私に最善の方法を教えてください。それとももっと良いアイデアがありますか?

+0

レプリケーションについてはどうですか? https://wiki.postgresql.org/wiki/Streaming_Replication –

+0

レプリケーションは良いアイデアです。しかし、desctopアプリケーションで私はファイアバード(ポストグルではない)を持っています。また、完全な同期は必要ありません。すべてのデスクトップアプリは顧客です。バックオフィスでは、私はすべての顧客のためのデータを持っています。そして、デスクトップアプリは独自のデータのみを持つべきです – user3161584

答えて

0

Delphi + Firebirdのようなプロジェクトで、一部のデータの同期を取りました。 マスター(メインサーバー)データベースとクライアントデータベースを持つので、同期する必要があるテーブル(master_id、slave_id)に2つのフィールドを追加し、指定された時間間隔で実行され、スレーブフィールドのmaster_idをマスターします。レコードをレコードまたはバルクで行います。