Php 数据库设计——”;推;模型,或在写入时扇出
背景信息: 我试图从我跟踪的人那里检索图像,按最新时间排序。这就像一个推特新闻提要,在那里他们会显示你朋友的最新提要 计划: 目前我只需要考虑一件事,那就是图像。在未来,我计划分析用户的行为,并将他们可能喜欢的其他图像添加到他们的提要中,等等 我个人觉得“拉”模式,或者在我实时拉取所有信息的加载时扇出,比推模式更糟糕。因为假设我有100个追随者,我将不得不按时间取回和排序。(如果我错了,请告诉我,例如,读比写好100倍(推模式) 我想到的推送模型的当前设计如下Php 数据库设计——”;推;模型,或在写入时扇出,php,mysql,database,database-design,database-schema,Php,Mysql,Database,Database Design,Database Schema,背景信息: 我试图从我跟踪的人那里检索图像,按最新时间排序。这就像一个推特新闻提要,在那里他们会显示你朋友的最新提要 计划: 目前我只需要考虑一件事,那就是图像。在未来,我计划分析用户的行为,并将他们可能喜欢的其他图像添加到他们的提要中,等等 我个人觉得“拉”模式,或者在我实时拉取所有信息的加载时扇出,比推模式更糟糕。因为假设我有100个追随者,我将不得不按时间取回和排序。(如果我错了,请告诉我,例如,读比写好100倍(推模式) 我想到的推送模型的当前设计如下 Table users_feed
Table users_feed(ID, User_ID, Image_ID,datetime)
选项1:存储图像ID列表
选项2:存储一个图像ID和重复行(相同用户ID但不同图像ID的多行)
计划是限制用户在此提要中可以拥有的每一行,这意味着,最多只能有50个图像。如果他们希望在新闻提要中的50个图像之外有更多的项目,他们就不能(我可能会编写一个替代方案来存储更多,以便他们将来可以查看更多)
问题1
因为当跟随用户的用户将一个项目添加到他们的“集合”中时,我必须将它推送到他们的每个跟随者的提要中。写入是否会有问题?200个跟随者=200次写入
问题2
考虑到我只有一种类型的数据,即图像。图像的提要,哪种方法对我更合适
问题3
如果我选择提前存储提要(推送方法),我如何将其写入我所有的朋友
Insert xxx into feeds whereIn (array of FriendsID)?
任何形式的建议都将不胜感激。提前感谢!我建议您遵循拉法而不是推法,原因如下:
- 它为将来的扩展提供了更多的自由
- 更少的写入次数(想象一下1000万追随者,那么就必须有
一篇文章可以写10万篇文章) - 您只需通过以下类似的查询即可获取用户的所有提要: 选择*FROM users\u feed作为一个WHERE a.user\u id in(/全选 用户\登录用户的追随者ID/>) (语法未如表所示 追随者的结构(未知)