如果这是重复的,我提前道歉,我不确定我应该搜索什么。
最近,我在第 9 频道观看了这个关于 SQL Azure 中的数据库联合的精彩视频。起初,我对 SQL Azure 联合不支持标识列这一事实感到惊讶,但这是有道理的。如果您有一个在 2 个(或更多)数据库之间拆分的表,并且它们无法共享其标识增量值,那么您最终可能会得到 2 个(或更多)实体共享相同的主键。
该视频简单地谈到了如何处理这个问题,提到使用类似 Guid 的 PK 代替基于整数的标识列。我知道默认情况下,至少 MSSQL 会在 PK 上创建聚集索引,而在 Guid(或唯一标识符)类型上创建聚集索引是不好的。我绝不是关系专家,但我也相信,与基于 PK 的查找的基于整数的类型相比,Guid 的性能有所下降。
所以这让我想知道,对于水平联合数据库,基于整数的 PK 模式可能是什么样的?当我编写老式 EJB 并且我们需要为主键生成一个整数时,我们必须有一个单独的序列查找表来替换 rdbms 标识/自动增量功能。我记得这很痛苦,因为当时 EJB 的许多其他事情。
在水平联合数据库表中分配主键的常用模式(如果有)是什么?鉴于我目前的知识,由于性能下降,我会远离 Guid,并且由于开发成本和增加的复杂性(主要是开发成本),我会远离顺序查找索引。我应该倾向于什么?