首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在php / mysql中为简单的新闻源设计高效的架构?[等候接听]

如何在php / mysql中为简单的新闻源设计高效的架构?[等候接听]
EN

Stack Overflow用户
提问于 2019-06-04 03:17:15
回答 1查看 0关注 0票数 0

简而言之:在考虑为大型受众群体网站制作简单新闻Feed的最佳方式时,我已经找到了2个解决方案。我将揭示这两个解决方案,但最重要的是,我在这里发布它们以获得关于它们的最多意见,并且主要是为了知道你是否有更好的方法来设置它。因此,我对所有反馈/建议都非常开放。

细节 :

在数据库中,有3个表:UserAuthorBooks。用户可以向作者和作者撰写书籍。所以这就是它的样子。

db_architecture_1

我们需要的是一个简单的新闻源:用户将显示他们所签署的作者发布的最后一本书的列表。像这样: *

  • Author45写了一本新书:Book756Title
  • Author12写了一本新书:Book45Title
  • 作者76写了一本新书:Book28Title
  • ...

*

解决方案:

  • 我想到的第一个解决方案是:在加载新闻时,只需创建一个简单的SELECT,它连接所有相关的表并按发布日期排序。 问题在于,虽然这是最简单,最快捷的解决方案,但我不能不认为这是一个非常繁重的查询,它会在大量受众执行时影响很多应用程序性能。
  • 然后是第二个解决方案,需要更多解释:

对于网站系统,有2个服务器:公共服务器,其承载具有主数据库的公共网站,以及第二个具有备份/更新数据库的服务器。第二台服务器无法公开访问,但两台服务器每天都会同步。

因此,所有新的作者和书籍插入都是在这个上进行的,而用户怀疑和所有用户活动都是在公共服务器上完成的。

Sooo我找到的第二个解决方案,在性能方面最好的解决方案是添加一个新的表Notification,并在Publication表上设置一个mysql触发器。插入每个新发布后,触发器将选择所有挂起到作者的用户,并在通知表上插入新的条目。

这样,公共服务器上唯一剩下的任务就是选择用户的新通知并显示它们。

我已经测试了10 000个用户怀疑的触发器,我认为mysql反应非常快。

所以现在,即使第二个解决方案是获胜者,我也会向您展示这两个解决方案,以便对此优化问题有最多的意见。

谢谢大家阅读和等待你的答案。

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 12:35:36

每张表中有多少行?如果不到一百万,我没有看到更简单(第一)解决方案的问题。

- 这是我的“意见”和“经验”。

此外,我建议,说明与简单的建议。然后,与任何大项目一样,计划在几个月后重新审视决策。您可能会发现简单的解决方案“足够好”。或者您可能会发现一个简单的解决方案,使其足够好。或者你可以选择改进它 - 包括重新设计架构,UI,一切。

- 再次,我从“意见”和“经验”两个方面说话。

两个服务器每天都同步

不可以。使用复制使它们保持同步。或者使用群集技术(例如,Galera)为您提供备份和高可用性。

设计每日同步是一种痛苦。

插入每个新发布后

应用这个“信封背面”测试 - 更常见的是,新条目与获取数据相比。可能是插入(和触发器)的成本超过了它的价值。

同样,在你有一些统计和经验之前,你不能做出那个判断,你可以从“简单”的方法中获得。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档