0

问题陈述:我正在开发一个应用程序,用户可以在其中关注其他用户(如 twitter 或其他电子商务网站)并在他的墙上获取他们的更新。它与商家和用户有关。用户可以关注任何商家。用户自己可以是商家,所以实际上它就像一个用户关注其他用户(Many-many realtion)。

问题:最简单的方法是拥有一个具有 id(自动增量)的联结表 | follower_user_id | follow_user_id。但我不确定数据库何时垂直增长,它的扩展性如何。如果用户关注 100 个人,则单个用户将有 100 个条目。在这种情况下,如果我想获得任何用户的关注者,则需要更长的时间查询执行的时间。

研究:我尝试研究 twitter 和其他网站和数据库设计,但他们使用不同的数据库,如基于图形的 Nosql 等来解决他们的问题。在我们的例子中是 Mysql。我也开始使用缓存机制,但我想知道,如果有有什么方法可以水平存储值,即每个用户在一行中都有他的关注者(逗号分隔会很乏味,因为我尝试过)。

我可以为这个功能有一个单独的数据库吗,比如基于 Nosql 的数据库(mongo 等)。在不同情况下会对性能产生什么影响?

如果我采用 easiset 方式的方法是正确的,我如何才能提高 5-10k 用户的性能(现在看一个小基数)?基本的 mysql 查询能很好地工作吗?

请帮助我输入相同的内容。

4

2 回答 2

0

我使用的系统(我的个人偏好)是在用户上添加 2 列,following并在followers其中存储一个简单的加密 json 数组,其中包含关注者的 ID 和关注的用户。

唯一的缺点是,在查询时你必须解密它然后 json_decode 它但它对我来说已经工作了将近 2 年。

于 2013-04-29T10:06:05.703 回答
0

在浏览了评论并进行了一些研究之后,我得出的结论是,我最好采用正常的方式创建关注者表并进行一些索引并为其使用缓存机制。

索引作为建议的复合索引会很好。对于缓存,我计划使用 Memcache!

于 2013-05-06T14:16:20.973 回答