0

最近我想将一些社交图信息存储到我们的数据库中,并且用户通过在具有社交图的服务器端发生的自动“映射”来发现新的社交节点。

背景: 每次有新客户访问时,我都会从其他来源存储他/她现有的社交节点,一个很好的例子是 Facebook。所以我有一个 Facebook 好友列表以及该客户的 Facebook ID,并将它们存储在我的数据库中。然后,服务器尝试将客户端好友列表中的每个项目与现有客户端进行匹配。如果匹配,则表示该客户有朋友使用我的服务。然后服务器返回一个匹配列表并在边缘的另一侧标记匹配。下次客户的朋友回来时,他们也会收到匹配完成的通知。

障碍: 我的问题是这种机制需要服务器存储客户社交图的完整列表,在我的示例中,这是客户的 Facebook 朋友的完整列表。由于这个社交图可以任意大,我当然不能将它存储到一个项目中,而是将它跨越多个项目或行,并使用客户 ID 和朋友 ID 对。如果我以这种方式存储它,那么密钥可能分布不均,这意味着我无法使用 DynamoDB。但是,我想探索将其存储在某些 AWS NoSQL 服务中以获得快速访问优势的可能性。

那么有没有很好的方法将这些数据存储在 AWS NoSQL 服务器中?或者我们可以做哪些优化来将它们放入 RDS 但不会损失太多效率?

4

1 回答 1

2

实际上,DynamoDB 可能非常适合您的用例...... DynamoDB 支持多值字段并且最大记录大小为 64k。

因此,您将创建一个包含两列的“friends”表,其中“clientId”作为您的哈希键,然后“friendId”作为多值字段。

这意味着您只需要一条记录来存储用户的完整朋友列表(假设 GUID 为“friendId”,最多大约 4,000 个朋友)。如果需要,您可以为拥有 4,000 多个朋友的用户使用多条记录...

于 2012-06-05T18:47:00.387 回答