2012-03-07 31 views
5

我正在通過編寫自己的博客,使用PHP和MySQL數據庫後端來學習以網絡爲中心的編程。這應該取代我目前的(基於Drupal的)博客。在數據庫或文件中存儲帖子主體?

我已經決定,post應該包含一些數據:iduserIDtitlecontenttime-posted。這爲數據庫表提供了一個很好的模式。不過,我在決定如何組織存儲content時遇到問題。

我既可以:

  1. 使用基於文件系統。數據庫表content然後將成爲本地文件的URL,然後我將讀取,格式化和顯示。
  2. 將帖子的全部內容存儲在content中,即將其放入數據庫中。

如果我去了(1),搜索帖子的內容會有點問題 - 我只限於元數據搜索,或者當搜索時我必須讀取每個文件的內容(儘管我不知道會有多少問題 - grep -ir "string" .也不是慢......)。然而,圖片(如果有的話)會被一個URL引用,所以引用content至少是一個內部一致的方法,我會很容易能夠重用內容,因爲文本文件很容易處理,與SQL數據庫文件相比較。 (2),但我可以使用longtext。然後,在我試圖將它放入元組之前,需要對其進行消毒,而且我受限於尺寸(儘管我不太可能寫4GB的博客文章;)。搜索很容易。

我不(目前)看到哪種方式會(a)更容易實現,(b)更容易與之共存。

我應該走哪條路/這通常如何完成?讚賞(1)或(2)的任何進一步優點/缺點將不勝感激。

+0

索引等將是一個問題,也是如果你有一個數據庫,你可以將數據存儲在多個表中,並將它們與外鍵等關聯起來。 – dee 2012-03-07 19:10:29

回答

4

對於'當代',實施數據庫幾乎是最安全的選擇。正如你所提到的那樣,它非常標準,並且概述了所有有趣的東西。大多數SQL實例具有相當強大的FULLTEXT(或等效)搜索。 您可能會在您所概述的兩種架構之間寫入同樣多的體系結構,特別是如果您希望具有另一個的功能一致性。

即將到來的技術是一個關鍵/價值商店,通常被稱爲NoSQL。通過這種方式,您可以將內容和元數據存儲到單獨的單個文檔中,但以結構化的方式進行搜索和檢索,速度非常快。一些常見的NoSQL引擎是mongo,CouchDBredis(等等)。

最終,這歸結爲個人偏好,以及一些用例考慮。就方便性和應用程序而言,你並沒有真正地概述對你而言重要的事情。這些中的任何一個都可以用於個人或開發博客。與多個貢獻者構建整個平臺是一個不同的對話。

1

13年前我試過你的選擇1(有文字內容的外部文件) - 不是用博客,而是用CMS。最後,我把它們全部鏟回到數據庫中,以便於處理。在數據庫上進行全局替換比在文本文件級上更容易。由於大量的帖子,你會遇到目錄大小和訪問速度的麻煩,或者你必須管理子目錄方案等等。堅持只有數據庫的方法 - 有一些工具可以讓你的文本文件比生成文件更容易在mysql函數中,但是使用像mysql和mysqldump這樣的命令行客戶機,您可以輕鬆地將任何文本提取到文件系統級別,使用標準工具對它們進行處理並將它們重新加載到數據庫中。 MySQL真正缺乏的是內置的對正則表達式搜索/替換的支持,但即使如此,如果你願意重新編譯mysql,你會發現一個補丁。

相關問題