我已经开始开发我的第一个 Azure 应用程序,并且在这个过程中我学到了很多东西。我最近发现的功能之一是 SQL Azure 中的联合,本质上是 SQL Azure 分片实现,因此我们可以水平扩展。
我的项目开始使用 SQL Server,并且已经主要按用户配置文件进行分组,因此我认为联合是最有意义的。我已经创建了联合,包括所有子表,但有一个问题 - 不支持身份。我明白为什么它不受支持,我不确定用什么最好替换它。这似乎是一个大问题,其他人一定已经解决了,但我还没有找到太多。
我可以只使用 UniqueIdentifier,但我读到这可能会很痛苦。我也不太确定使用 GUID 作为联合表的主键可能会遇到哪些其他性能问题。
我正在将其与 Entity Framework 一起使用,但尚未达到使联合友好的程度。据我所知,这并不比在编写 LINQ 查询之前执行一些代码来选择联合要复杂多少,但当我到达它时我会跨过那座桥。
目前,我不知道如何最好地向我的联盟添加项目,因为没有好的解决方案来生成身份。
如有任何建议,我们将不胜感激。
最佳答案
我在使用SQL Azure Federation时使用GUID,它几乎是数据分片时的最佳选择。假设您在许多联盟成员中使用身份,这将导致您的主要值重复。当您需要将数据合并回来,或者归档时,您如何处理这些记录。
人们认为 GUID 在数据插入时性能很低,尤其是当我们将它用作聚集索引时。但我从来没有遇到过这个问题。或者我应该说,除了这个之外,还有很多我们可以做的调整。
关于SQL Azure 联合和原子单元标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426630/