2010-06-02 224 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%正確?

但是,這是一個免費網站的罰款問題,但這對於商業應用程序來說並不會那麼好。