レプリケーションを行う場合、GUIDがPKに最適な理由は何ですか?
-
03-07-2019 - |
質問
Oracleバックエンドを使用してイントラネットWebアプリを構築しています。この説明では重要ではない理由により、Oracle DBは別のサーバーに複製されます。 AdvancedではなくOracle Basic Replicationを使用することは合理的に確信しています。
主キーに関するほとんどの議論が次のようになる理由を誰かに説明できますか
- PKでの自動インクリメントintの使用は、99%の時間で問題ありません
- レプリケーションを行う場合を除きます。次に、PKにGUIDを使用します。
複製の例外が発生した理由を説明できる人はいないようです。その理由はわかりません。
解決
GUID-for-replication引数は、両方のサーバーが新しいデータを受信する場合にのみ実際に適用されると思います。次に、新しい行を競合させたくないので、GUIをPKとして使用します。複製は両方の方法で実行できます。
常に自動インクリメントテーブルを複製しますが、データはマスターにのみ書き込まれる厳密なマスター/スレーブ複製です。
他のヒント
1つの単語:MERGE
マージレプリケーションが機能する唯一の方法は、すべての<!> quot; master <!> quot;ボックスは、他のキーと競合することなく新しいキーを作成できます。
2台のサーバーが相互に複製され、同期の間にデータが追加されるとどうなるかを考えると、問題が明らかになります:
Time Server NewID
001 A 1
002 A 2
003 <sync of server A and B>
004 A 3
005 B 3
006 <sync of server A and B>
<!> lt; --- 2つの異なるレコードのIDが同じになったため、競合が発生しました!
所属していません StackOverflow