2009-04-30 27 views
3

我正在构建一个带有Oracle后端的Intranet Web应用程序。由于本次讨论不重要的原因,Oracle数据库将在另一台服务器上复制。我相当确定我们将使用Oracle Basic Replication,而不是Advanced。如果您要进行复制,为什么GUID是PK的最佳选择?

有人能向我解释为什么围绕主键大多数讨论去是这样的:

  • 使用的PK自动递增整数的是时间
  • EXCEPT就好了99%,如果你正在做的复制。然后为你的PK使用GUID。

没有人似乎解释了为什么复制的例外,我不明白为什么。

回答

7

我相信只有在两个服务器都会接收新数据的情况下,GUID-for-replication参数才适用。然后你不希望新行发生冲突,所以使用GUID作为PK - 复制可以双向进行。

我们一直在复制自动增量表,但它是一个严格的主/从复制,其中数据只写入主站。

+0

具有完整意义。谢谢汤姆。 – theog 2009-04-30 22:44:54

3

一个字:合并

的唯一方式合并复制可以工作的,如果所有的“高手”框可以在不将其与他人发生冲突创建一个新的密钥。

1

如果你考虑时被复制彼此,并已被添加到他们的数据同步之间的两个服务器,这个问题变得很明显时会发生什么:

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> 

< ---两个不同的记录具有相同ID现在,所以有冲突!

+0

这是一个有用的插图 - 谢谢凯文。 – theog 2009-05-01 16:57:02

相关问题