问题陈述:我正在开发一个应用程序,用户可以关注其他用户(如Twitter或其他电子商务网站)并在他的墙上获取更新。这与商家和用户。用户可以关注任何商家。用户自己可以是商家,所以实际上它就像跟随其他用户的用户一样(很多很多人)。
问题:最简单的方法是拥有一个可用的联结表 id(自动增量)| follower_user_id | followed_user_id 即可。但我不确定数据库何时垂直增长,它的扩展程度如何。如果用户跟随100个人,则单个用户将有100个条目。在这种情况下,如果我想获得任何用户的关注者,则需要更长时间查询执行的时间。
研究:我尝试过学习Twitter和其他网站以及数据库设计,但他们使用不同的数据库,如基于图形的Nosql等来解决他们的问题。在我们的案例中,它的Mysql.I也开始使用缓存机制,但我想知道,如果有任何方法我可以水平存储值,即每个用户将他的粉丝放在一行(逗号分隔将是乏味的,因为我尝试它)。
我是否可以为此功能设置单独的数据库,例如基于Nosql的数据库(mongo等)。它会对不同情况下的表现产生什么影响?
如果我采用easiset方式的方法是正确的,我怎样才能提高5-10k用户的性能(现在看一下小基数)?基本的mysql查询是否运行良好?
请帮助我提供相同的输入。
答案 0 :(得分:0)
我使用的系统(我的个人偏好)是在用户following
和followers
上添加2列,并在其中存储一个简单的加密json数组,其中包含关注者和用户的ID正在关注..
唯一的缺点是,当查询你必须解密它然后json_decode它,但它已经为我工作了近2年。
答案 1 :(得分:0)
在完成评论并进行一些研究之后,我得出的结论是,我会更好地按照常规方式创建关注者表并执行一些索引并使用缓存机制。
建议复合索引的索引效果很好 对于缓存,我打算使用Memcache!