背景信息:
我正在尝试从我关注的人那里检索图像,按最新时间排序。它就像是一个Twitter新闻源,它们可以显示您朋友的最新信息。
计划:
目前我只需要考虑一个项目,即图像。将来我计划分析用户的行为,并将他们喜欢的其他图像添加到他们的Feed等中。
http://www.quora.com/What-are-best-practices-for-building-something-like-a-News-Feed
我个人觉得“拉”模型,或者我实时提取所有信息的风扇输出将比推模型更差。因为想象我有100个追随者,我将不得不按时间取物和排序。 (让我知道如果我错了,例如,Read比Write(Push Model)好100倍
我想到的推模型的当前设计如下
Table users_feed(ID, User_ID, Image_ID,datetime)
选项1:存储Image_ID列表
选项2:存储一个图像ID和重复行(更多行具有相同的User_ID但不同的Image_ID)
计划是限制用户在此Feed中可以拥有的每一行,这意味着,最多只能有50张图像。如果他们想要在新闻Feed中超过50张图片的更多项目。他们不能(我可能会编写一个替代品来存储更多,以便将来可以查看更多内容)
问题1
因为当用户跟随用户将一个项目添加到他们的“集合”中时,我必须将其推入他们的每个跟随者的源中。写不会有问题吗? 200粉丝= 200写?
问题2
考虑到我只有一种类型的数据是图像,哪种方法对我来说会更好。图片供稿。
问题3
如果我选择提前存储Feed(推送方法),我该如何将其写入我的所有朋友?
Insert xxx into feeds whereIn (array of FriendsID)?
非常感谢任何形式的建议。提前谢谢!
答案 0 :(得分:2)
我建议您按照推送方法而不是推送方式,原因如下:
它为将来提供更大的自由度。
写入次数减少(想象一下,1000万粉丝必须有 10M写的只有1个帖子。
您只需通过以下类似的查询即可获得用户的所有Feed:
SELECT * FROM users_feed as WHERE a.user_id in(< // select all 在用户中隐藏的关注者的user_id //> )
(语法未跟随表格 追随者的结构未知)