3

Oracle バックエンドを使用してイントラネット Web アプリを構築しています。この説明では重要ではない理由により、Oracle DB は別のサーバーに複製されます。Advanced ではなく、Oracle Basic Replication を使用することになると確信しています。

主キーに関するほとんどの議論が次のようになる理由を誰かが説明してくれませんか。

  • PK の自動インクリメント int の使用は、99% の確率で問題ありません
  • レプリケーションを行っている場合を除きます。次に、PK に GUID を使用します。

レプリケーションの例外の理由を誰も説明していないようで、その理由がわかりません。

4

3 に答える 3

7

レプリケーション用の GUID の引数は、両方のサーバーが新しいデータを受信する場合にのみ実際に適用されると思います。次に、新しい行を競合させたくないので、GUID を PK として使用します。レプリケーションは双方向に実行できます。

私たちは常に自動インクリメント テーブルをレプリケートしますが、これは厳密なマスター/スレーブ レプリケーションであり、データはマスターにのみ書き込まれます。

于 2009-04-30T21:50:04.730 に答える
3

一言:マージ

マージ レプリケーションが機能する唯一の方法は、すべての「マスター」ボックスが他のボックスと競合することなく新しいキーを作成できる場合です。

于 2009-04-30T22:00:15.487 に答える
1

相互にレプリケートされ、同期の間にデータが追加されている 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>

<---2 つの異なるレコードが同じ ID を持っているため、競合が発生しています!

于 2009-04-30T22:01:39.460 に答える