1

我已经开始开发我的第一个 Azure 应用程序,并且我在学习过程中学到了很多东西。我最近发现的功能之一是 SQL Azure 中的联合,本质上是 SQL Azure 分片实现,因此我们可以水平扩展。

我的项目开始使用 SQL Server,并且已经在很大程度上按用户配置文件进行分组,因此我认为联合起来最有意义。我已经创建了联邦,包括所有带有一个障碍的子表 - 不支持身份。我明白为什么不支持它,我不确定用什么来代替它是最好的。这似乎是其他人必须解决的一个大问题,但我找不到太多。

我可以只使用 UniqueIdentifier,但我读到这可能会很痛苦。我也不太确定使用 GUID 作为联合表的主键会遇到哪些其他性能问题。

我将它与实体框架一起使用,但还没有达到使联邦友好的地步。据我所知,这并不比在编写 LINQ 查询之前执行一些代码来选择联邦复杂多少,但是当我到达它时我会越过那座桥。

目前,我不知道如何最好地将项目实际添加到我的联合中,因为没有很好的解决方案来生成身份。

任何建议将不胜感激。

4

2 回答 2

2

我在使用 SQL Azure Federation 时使用 GUID,它几乎是数据分片时的最佳选择。假设如果您在许多联合成员中使用 Identity,这将导致您的主值重复。当你需要将数据合并回来,或者归档时,你如何处理这些记录。

人们认为 GUID 在数据插入时性能低下,尤其是当我们将其用作聚集索引时。但我从来没有遇到过这个问题。或者我应该说,我们可以做很多调整,而不是这个。

于 2012-02-25T08:09:57.187 回答
0

所以我不能谈论 EF 的问题。但我无法评论使用 Uniqueidentifier 作为您的密钥类型的想法。在我看来,这是最好的选择。UniqueIdentifier 实际上很容易拆分...人们认为很难拆分的原因是他们忘记了 UniqueIdentifier 是什么。我们都知道和喜爱的 GUID 是 128 位整数的十六进制表示。这意味着我们可以对它使用标准的整数运算,因此它实际上与您熟悉和喜爱的 Int(aut 编号)一样容易使用。

虽然它不是专门关于 SQL Azure 联合(它是关于 Windows Azure 存储),但我的这篇关于使用 GUID 类型进行分片的博客文章应该会给你所有你需要知道的。

http://www.syringe.net.nz/CommentView,guid,cebe3e19-85e6-4d5b-bc24-afb6f66aaeb1.aspx

于 2012-02-24T22:13:55.157 回答