2010-06-02 213 views
3

我正在努力解决一个概念性问题。当你有一个拥有数千个帖子和/或主题的论坛时,你如何检索所有要在你的网站上显示的帖子?每次有人访问您的页面时,您是否连接到数据库,然后捕获数组中的每篇文章并显示它?当然,这似乎是对您的服务器非常重要,并会导致大量不必要的数据库读取。任何人都可以在这个话题上闪耀一些光芒?如何检索和显示论坛上的帖子?

谢谢。

回答

1

这样做的一个新的(ish)方法是使用面向文档的数据库,如CouchDB,其中有关单个帖子的所有内容都存储在同一文档中,并且该文档根据请求加载。

看来在这种情况下,面向文档的数据库对于论坛或博客类型网站来说工作得非常好。

至于关系数据库去,我敢肯定,该数据库被击中每一个页面加载,除非有实现某种缓存的(然后你不得不担心数据获得旧,虽然,这带来了时间一个全新的问题。)

+0

有趣的是,我不知道这样的数据库存在。感谢您的回答。 – vince 2010-06-02 16:18:45

3

你永远不会一次检索所有这些帖子。在大多数情况下,论坛会显示一个X线程/帖子页面,每次页面投放时您只需从数据库中获取这些X线程/帖子。 RDBMS在这方面非常好。一个论坛(应该)是非常动态的,所以它确实对数据库产生了很好的负载,但这是数据库的目的,存储和检索数据。

+0

我明白了,所以通常可以在db上加载相当数量的负载。很高兴知道。谢谢。 – vince 2010-06-02 16:20:19

+1

如果Facebook可以处理数百万帖子,我相信你的网站也可以:) – ggfan 2010-06-02 16:51:46

+0

@@ ggfan,就像......如果超人可以用他的睡衣阻止超速子弹,我相信你也可以。 – 2010-06-02 17:36:17

0

不要担心很多陈旧的数据。 Facebook不......他们的数据库只是“最终一致”。这个想法是这样的:确保评论总是100%,总是最新的是非常昂贵的。这确实给你的数据库带来了很大的负担。尽管Serty说,这就是数据库的作用,但是你的物理盒子是否足够满足负载是另一回事。

Facebook和Digg仅举几个例子采取了不同的方法......每个页面的每个负载都100%准确是真的重要吗?无论如何,最终用户读取的每一条评论实际上会导致多少页面加载?在'最'的时候获得评论要便宜很多,而'最'我的意思是可以决定。有10%的几率有缺少评论的页面可以吗?有1%的机会?现在有多少节点需要正确的数据。当我写一个新的评论时,有多少节点必须说他们获得了更新才能成功。

我喜欢卡桑德拉背后的想法,总结说:“我们愿意花多少钱让玛莎姨妈评论她的侄子的洗礼图片100%正确?

但是,这是一个免费网站的罚款问题,但这对于商业应用程序来说并不会那么好。