将帖子主体存储在数据库或文件中?

sim*_*ont 5 php mysql blogs

我正在学习以网络为中心的编程,自己写博客,使用PHP和MySQL数据库后端.这应该取代我目前的(基于Drupal)博客.

我已经决定,post应该包含一些数据:id,userID,title,content,time-posted.这为数据库表创建了一个很好的模式.不过,我在决定如何组织存储时遇到了问题content.

我可以:

  1. 使用基于文件的系统.然后,数据库表content将是本地文件的URL,然后我将读取,格式化和显示该文件.
  2. 存储帖子的全部内容content,即将其放入数据库.

如果我去了(1),搜索帖子的内容会有点问题 - 我只限于元数据搜索,或者我必须在搜索时阅读每个文件的内容(虽然我不知道多少这会是一个问题- grep -ir "string" .是不是慢...).但是,图像(如果有的话)将被URL引用,因此引用content至少是内部一致的方法,并且我可以轻松地重用内容,因为文本文件非常容易使用,与SQL数据库文件.

但是,与(2)一起,我可以使用longtext.在content随后将需要消毒之前,我试图把它放入元组,而我受到尺寸的限制(虽然,这是不可能的,我会写一个4GB的博客文章).搜索会很容易.

我(目前)没有看到哪种方式(a)更容易实现,(b)更容易实现.

我应该走哪条路/通常如何做?任何(1)或(2)的利弊都将受到赞赏.

Mor*_*gon 4

对于“当前一代”来说,实施数据库几乎是最安全的选择。正如您提到的,它非常标准,并且您概述了所有有趣的内容。大多数 SQL 实例都有相当强大的全文(或同等)搜索功能。您可能需要在您概述的两者之间编写同样多的架构,特别是如果您希望其中一个具有另一个的功能对等性。

新兴技术是键/值存储,通常称为NoSQL. 有了这个,您可以将内容和元数据存储到单独的单独文档中,但以结构化的方式存储,从而使搜索和检索变得相当快。一些常见的 NoSQL 引擎有mongoCouchDB、 和redis(等等)。

最终这取决于个人喜好以及一些用例的考虑。您并没有真正概述就便利性和您的应用而言什么对您来说是重要的。其中任何一个都适合个人或开发博客。与多个贡献者构建整个平台是另一回事。