我一直在考虑实施这个系统,但是不禁感到某处有一个问题。使用GUID而不是增加int的一个要点是,将来,如果要将数据库合并在一起,则不会对主键/标识符产生任何冲突。但是,我的方法是将增量大小设置为X,其中X是我将来最有可能拥有的服务器数量。然后,在每台服务器上,使种子成为前一服务器上种子号的增量。这样,在合并期间,主键不会发生冲突。这是一种安全,正常的方法还是我精神错乱:)? 感谢
答案 0 :(得分:1)
在多主SQL复制中,通常将主键定义为:
GUID的缺点是它们可能更难以阅读并占用更多空间。但是,它允许您扩展到 n 实例。
整数更易于处理。它们还具有能够轻松分辨哪个服务器创建记录的优点。缺点是您必须预测可能合并的最大数据库数,或者猜测单个实例可能插入的最大行数。
固定偏移的一个示例是:站点A从0开始,站点B从1,000,000开始,站点C从2,000,000开始。此方案正常工作,直到一个站点插入一百万行。这种方案可能适用于汽车经销商处的汽车,任何一个经销商都不可能销售超过1,000,000辆汽车,并且在应用程序的整个生命周期内您可能拥有数百家经销商。
答案 1 :(得分:0)
这里让我感到害怕的是你对“最有可能”的使用。你在这里假设未来,通常这对于这样的事情并不是一件好事。为什么不使用GUID?
如果您添加一个额外的服务器而不是您认为的那样,该怎么办?我可以很快看到事情变得非常复杂。