实时创建新闻提要
Posted
技术标签:
【中文标题】实时创建新闻提要【英文标题】:Creating a news feed realtime 【发布时间】:2013-07-21 13:07:27 【问题描述】:我有一个包含许多表的数据库:[关注者、收藏夹、帖子...等)
这些表格定义了用户可以实现的不同活动,他可以发送帖子、将其他人添加到收藏夹和关注其他人。
我想要做的是从这些表中提取数据,并构建一个实时新闻源。
我有两个选择:
1- 为通知创建一个单独的表(这样我就不必从多个表中获取数据,然后使用 javascript 计时器每隔 x 秒返回一次结果。
2- 使用 XMPP 服务器...每隔 x 秒发送(或推送)通知,而不实际发送任何 ajax 查询。
对于这两个选项,我不知道是应该连接到这些表以获取新闻提要,还是只为通知创建一个单独的表。
我搜索了这个主题,但我还没有找到真正有用的东西,任何链接将不胜感激。
【问题讨论】:
你也可以考虑使用发布/订阅机制来实时推送通知。 我同意 MasterAM 的观点,认为您可能仅使用 XMPP pubsub 就可以完成这里的所有工作。 【参考方案1】:如果您的数据是normalized,您应该能够通过一个查询(使用JOIN)提取所有数据,或者如果您想从一个表中查询,您可以尝试创建一个View。最好将数据保存在适当的表中以避免重复数据。
推送通知在服务器上更容易,因为它们不会接收来自每个客户端的请求。根据您的负载,您可能会摆脱简单的 AJAX 请求。
【讨论】:
非常感谢...我会检查您关于如何规范化数据的链接...我将使用第一个选项。 +1【参考方案2】:对新闻提要的请求将非常频繁。因此,您必须保持代码快速运行并尽可能少占用资源(CPU-time
、database query
)。
我建议你选择第一个选项。它符合您的要求,并且足够简单。
因为您有很多表,所以它们都将grow bigger day by day
。每次连接它们以获取新闻提要都会花费很长时间并增加数据库的负载。另一方面,你查询sql会很复杂。
就像@Curtis Mattoon 说的:avoid having to duplicate data
,但有时,我们需要spend more space for less time
。
所以我建议创建一个新表来存储通知数据。您甚至可以定期从该表中删除旧数据。
同时,您的 sql 和 php code
用于新闻提要将简单且运行快速。
【讨论】:
非常感谢我的朋友,我将使用第一个选项,但是对于创建通知表,我认为像@curtis一样,最好不要重复数据。我将对此部分进行更多搜索。和 +1以上是关于实时创建新闻提要的主要内容,如果未能解决你的问题,请参考以下文章
用于构建“新闻提要”/“状态更新”/“活动流”的 Django 方式