最近我想将一些社交图形信息存储到我们的数据库中,并且用户通过在具有社交图的服务器端上发生的自动“映射”来发现新的社交节点。
背景 每次新客户访问时,我都会从其他来源存储他/她现有的社交节点,其中一个很好的例子就是Facebook。所以我有一个Facebook好友列表以及该客户端的Facebook ID,我将这些存储在我的数据库中。然后,服务器尝试将客户端的朋友列表中的每个项目与现有客户端进行匹配。如果匹配,则表示此客户端有朋友使用我的服务。然后,服务器返回匹配的列表,并在边的另一侧标记匹配。下次客户的朋友回来时,他们会收到通知以及完成匹配。
障碍: 我的问题是这个机制要求服务器存储客户社交图的完整列表,在我的例子中,这是客户完整的Facebook好友列表。由于这个社交图可以是任意大的,我当然不能将它存储在一个单独的项目中,而是跨越多个具有客户端ID和朋友ID对的项目或行。如果我以这种方式存储它,那么键可以非常不均匀地分布,这意味着我不能使用DynamoDB。但是,我想探索将其存储在某些AWS NoSQL服务中以获得快速访问优势的可能性。
那么有没有很好的方法将这些数据存储在AWS NoSQL服务器中?或者我们可以做些什么来将它们放入RDS但不会失去太多效率呢?
答案 0 :(得分:2)
实际上,DynamoDB可能适用于您的用例... DynamoDB支持多值字段,最大记录大小为64k。
因此,您将创建一个包含两个列的'friends'表,其中'clientId'作为您的哈希键,然后'friendId'作为多值字段。
这意味着您只需要一条记录来存储用户的完整好友列表(最多约4,000名朋友假设GUID为'friendId')。如果需要,您可以为超过4,000位朋友的用户使用多条记录......