我想知道,那些「文本繁重」的網站,如stackoverflow.com,news.yahoo.com,bbc.co.uk如何在內部存儲他們的文本?文本繁重的網站如何在內部存儲文本?
這些文本是以文本文件存儲的嗎?或存儲在數據庫中?
他們如何應對不斷增加的內容?
我想知道,那些「文本繁重」的網站,如stackoverflow.com,news.yahoo.com,bbc.co.uk如何在內部存儲他們的文本?文本繁重的網站如何在內部存儲文本?
這些文本是以文本文件存儲的嗎?或存儲在數據庫中?
他們如何應對不斷增加的內容?
通常在數據庫中。使用mysql時,通常使用text,mediumtext或longtext。他們與日期,評分和標籤等列一起放在一張桌子上。標籤可能位於另一個表格中,但也可以用逗號分隔在一個表格中。它可能會有所不同。
它始終是這些網站後面的某種數據庫。
對於比較小的(stackoverflow,bbc等),一個正常的關係型數據庫應該足夠了 - 比如MySQL,Postgresql或者Oracle。
對於真正大的(易趣,亞馬遜,谷歌)他們通常有某種專有的數據庫解決方案,因爲標準數據庫不能處理這種負載。
大多數這些網站將使用內容管理系統,將文本存儲在數據庫中。 Stackoverflow讓我們所有人都可以編輯內容,而像BBC這樣的網站只允許他們的記者在他們的系統上添加和編輯內容。
大多數這些網站都會使用某種標記語言來將樣式編碼到文本中。您可以在這裏瞭解StackOverflow使用的標記系統:https://stackoverflow.com/editing-help
爲什麼要使用標記語言而不是僅存儲html?標記允許文本以不同的方式轉換爲不同的輸出和設備。您可能會轉換爲HTML以便在網頁上顯示,但對電子郵件使用不同的轉換,對於某些移動設備使用另一種轉換。
以谷歌搜索Markdown和Textile爲例。你也可以看維基百科的信息。
他們如何應對不斷增加的內容?
當數據庫負載變得過重,他們就必須獲得一個單獨的數據庫服務器,如果這還不夠,需要更多或更少的複雜load-balancing設置;)
使用數據庫會是更好的方法:
BBC使用Drupal,一個開源的內容管理系統。我認爲大多數論文使用某種形式的商業CMS,比如Vignette。所有這些CMS將文本存儲在數據庫中,併爲客戶提供添加文本的簡單方法。以Drupal.org爲例,Drupal也被theonion.com和其他論文使用。
我不認爲BBC會算作一個小網站。它是互聯網上最大的內容網站之一。 – 2009-07-26 12:23:52