简而言之:在考虑为大型受众群体网站制作简单新闻Feed的最佳方式时,我已经找到了2个解决方案。我将揭示这两个解决方案,但最重要的是,我在这里发布它们以获得关于它们的最多意见,并且主要是为了知道你是否有更好的方法来设置它。因此,我对所有反馈/建议都非常开放。
细节 :
在数据库中,有3个表:User,Author和Books。用户可以向作者和作者撰写书籍。所以这就是它的样子。
我们需要的是一个简单的新闻源:用户将显示他们所签署的作者发布的最后一本书的列表。像这样: *
*
解决方案:
对于网站系统,有2个服务器:公共服务器,其承载具有主数据库的公共网站,以及第二个具有备份/更新数据库的服务器。第二台服务器无法公开访问,但两台服务器每天都会同步。
因此,所有新的作者和书籍插入都是在这个上进行的,而用户怀疑和所有用户活动都是在公共服务器上完成的。
Sooo我找到的第二个解决方案,在性能方面最好的解决方案是添加一个新的表Notification,并在Publication表上设置一个mysql触发器。插入每个新发布后,触发器将选择所有挂起到作者的用户,并在通知表上插入新的条目。
这样,公共服务器上唯一剩下的任务就是选择用户的新通知并显示它们。
我已经测试了10 000个用户怀疑的触发器,我认为mysql反应非常快。
所以现在,即使第二个解决方案是获胜者,我也会向您展示这两个解决方案,以便对此优化问题有最多的意见。
谢谢大家阅读和等待你的答案。
发布于 2019-06-04 12:35:36
每张表中有多少行?如果不到一百万,我没有看到更简单(第一)解决方案的问题。
- 这是我的“意见”和“经验”。
此外,我建议,说明与简单的建议。然后,与任何大项目一样,计划在几个月后重新审视决策。您可能会发现简单的解决方案“足够好”。或者您可能会发现一个简单的解决方案,使其足够好。或者你可以选择改进它 - 包括重新设计架构,UI,一切。
- 再次,我从“意见”和“经验”两个方面说话。
两个服务器每天都同步
不可以。使用复制使它们保持同步。或者使用群集技术(例如,Galera)为您提供备份和高可用性。
设计每日同步是一种痛苦。
插入每个新发布后
应用这个“信封背面”测试 - 更常见的是,新条目与获取数据相比。可能是插入(和触发器)的成本超过了它的价值。
同样,在你有一些统计和经验之前,你不能做出那个判断,你可以从“简单”的方法中获得。
https://stackoverflow.com/questions/-100006911
复制相似问题