【发布时间】:2012-04-10 01:36:02
【问题描述】:
假设我们有一个社交网络的朋友列表。
大多数用例都需要将好友列表表加入到您保存个人详细信息的另一个表中,例如:姓名、年龄、城市、个人资料图片 URL、上次登录时间等...
一旦好友列表表在 100M 行范围内。像这样查询 JOIN 可能需要几秒钟。如果你引入一些其他 WHERE 条件,它甚至会更慢。
键值存储系统可以非常快速地引入好友列表。
假设我们想要显示用户最近登录的 10 个好友。 计算此输出的最佳方法是什么?我一直在考虑的一些方法如下。它们中的任何一个都有意义吗?
- 我们是否应该将所有数据保存在键值存储环境中?更新 每次新登录时都存储键值对?
- 或者我们应该首先拉取好友列表 ID。然后使用类似“IN()”的数据库命令查询数据库?
- 在客户端级别合并数据? JavaScript 解决方案?
【问题讨论】:
-
我会将朋友列表部分放在快速存储中,并使用“IN”查询而不是加入