0

SQL azure 上的分片概念是克服 50Gb 数据库大小限制的最受推荐的选项之一,它目前拥有。分片的一个关键策略是将称为原子单元的相关记录组合在一个分片中,这样应用程序只需查询一个 SQL azure 实例即可检索数据。

然而,在社交网络应用程序等应用程序中,由于实体和记录的相互连接,将原子单元分组到单个分片中并非易事。基于这种情况的推荐方法是什么?

同样在分片数据库中,表应该使用哪些主键?大整数或 GUID。我目前使用 BIGINT 标识列,但如果由于某种原因要合并数据,这将是一个问题,因为不同分片中的值之间存在冲突。我听说有人推荐 GUID(UniqueIdentifier),但我担心这会如何影响性能。使用 UniqueIdentifier 列索引本地 SQL 服务器是不可能的,我想知道如果我要使用 UniqueIdentifier 列,SQL azure 如何实现类似的策略。

4

1 回答 1

0

对于社交网络应用程序,我会预先放弃使用 SQL,而是使用诸如 MongoDB 或 Azure 表存储之类的 noSQL 解决方案。这些非标准化但价格低廉的系统允许您创建多个实体数据集,这些数据集可根据您的各种索引需求进行定制。

所以不要有类似... User1 -< relationshiptable -< User2

相反,您将拥有像 Users User1's Friends User2's Friends 这样的表格

如果用户 1 和 2 都是朋友,那么您将有两个条目来定义该关系,而不是一个。但是,如果检索特定用户的朋友列表变得微不足道。它现在还可以通过一次搜索多个索引表来并行执行任务。

此过程的扩展性非常好,但确实需要您在如何维护关系上投入更多时间。诚然,这是一个简化的例子。当您开始讨论诸如搜索整个用户群之类的任务时,事情会变得更加复杂。

于 2011-02-11T14:31:56.387 回答