1

假设有一个应用程序生成与几个表中规范化记录数相对应的随机 GUID。这些 GUID 为“tenant_id”的记录需要在 SQL Azure 中拆分为多个联合成员。发出 SPLIT AT 命令时,使用什么排序机制在特定点(tenant_id)拆分成员?它类似于 ORDER BY GUID_FIELD ASC/DESC 结果集吗?由于 GUID 是随机生成的,那么创建具有未来拆分的范围的最佳方法是什么?

谢谢

4

2 回答 2

0

本质上,split at 将一个联邦一分为二。它依赖于分发密钥(您在 federated on 子句中传递的密钥)。例如,假设您按年龄联合。最初您有两个联邦:年龄从 0 到 40,年龄从 41 到 80。现在您将第一个联邦分为两部分:0 到 20 和 21 到 40。SQL Azure 将自动组织数据以确保每个联邦满足范围要求。所以是的,这有点像订购。

GUID 通常不使用联合。相反,它用于您拥有更多控制权的某些键。使用 GUID 很好,但您有可能使联合不平衡。一个联邦可能包含大量数据,而另一个只有少量数据。

于 2012-06-05T01:42:35.167 回答
0

GUID 范围根据它们在 SQL Server 中的排序顺序进行拆分 - 与用于 ORDER BY 和索引的顺序相同。有关详细信息,请参阅此博客文章: http: //sqlblog.com/blogs/alberto_ferrari/archive/2007/08/31/how-are-guids-sorted-by-sql-server.aspx

如果要随机生成 GUID 并且需要拆分,则应使用 GUID 的排序定义在要拆分的成员的 GUID 集中间的某个位置选择一个点(假设您要在中间拆分)。

如果您想要更多地控制租户的去向,您可以生成自己的“自定义”GUID,但是您当然会失去 GUID 所具有的全局唯一性属性,除非您确保生成“自定义”GUID 的全局唯一性。

——汉斯·奥拉夫

于 2012-06-05T01:49:22.450 回答