联合(水平分区)数据库的主键模式

时间:2012-07-05 05:02:50

标签: design-patterns database-design primary-key azure-sql-database federated-table

如果这是重复的话我提前道歉,我不确定我应该搜索的是什么。

最近我看了this nifty video on Channel 9 about database federation in SQL Azure。起初,我对SQL Azure Federation不支持标识列这一事实感到惊讶,但这是有道理的。如果您有一个在两个(或更多)数据库之间拆分的表,并且他们无法共享其身份增量值,则最终可能会有两个(或更多)实体共享同一个主键。

该视频轻描淡写地谈到了如何处理这个问题,提到使用Guid作为PK而不是基于整数的标识列。我知道至少MSSQL默认会在PK上创建聚簇索引,并且在Guid(或uniqueidentifier)类型上拥有聚簇索引是不好的。我绝不是关系专家,但我也相信Guid与基于PK的查找的基于整数的类型相比会有性能下降。

所以这让我想知道,对于水平联合数据库来说,基于整数的PK模式会是什么样子?回到我写旧学校的EJB时,我们需要为主键生成一个整数,我们必须有一个单独的序列查找表来替换rdbms身份/自动增量功能。我记得这很痛苦,因为当时许多其他关于EJB的东西都是当时的。

在水平联合数据库表中分配主键有哪些常用的模式(如果有)?根据我目前的知识,由于性能下降,我会偏离Guid,而且由于开发成本和增加的复杂性(主要是开发成本),我会偏离顺序查找索引。我应该把倾向于

1 个答案:

答案 0 :(得分:1)