質問

私は、1つの中央ノードとSymmetricDを使用している多くのクライアントに対してマルチマスター双方向同期を実装しようとしています。クライアントは中央ノード(スタートポロジ)だけでのみ通信しています。主キーの競合に対処することに問題があります。

例えばデータベースには、列ID、NAME、...が含まれている表の「Person」が含まれています。

  1. aaa
  2. bbb
  3. ccc
  4. 最初のクライアントは初期負荷を接続してダウンロードしますので、同じdBです。 2番目のクライアントは同じことをします。

    今回と2番目のクライアントは、ローカルDBに新しい行を作成します。 最初:

    1. aaa
    2. bbb
    3. ccc
    4. ddd
    5. 第2:

      1. aaa
      2. bbb
      3. ccc
      4. eee
      5. 彼らは同期を試みますが、4行目に競合があります。この競合はSymmetricDSで簡単に検出できますが、今度は挿入されるまでインクリメントキーで解決してからクライアントに変更を送りたいです。 その結果、結果は次のとおりです。

        1. aaa
        2. bbb
        3. ccc
        4. ddd
        5. eee
        6. すべてのデータベースに

          。どうやって行うことができますか?ありがとうございました。

役に立ちましたか?

解決

マルチマスターバイ方向シナリオを扱う場合、自動インクリメントPKを使用することをお勧めしません。

標準練習は、お客様の間の競合を避けるためにPKのGUIDを作成することです。

詳細については、次のサイトをご覧ください。

分散環境の適切な主キーの選択

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top