在文件或数据库中保存大型博客文章数据?

3

我正在开发一个博客网站,想知道如何保存大型博客文章的数据——是保存在XML文件中、HTML文件中还是直接保存在数据库中?有什么建议吗?

5个回答

9

使用数据库会更好。因此,如果要保存XML文件(或任何其他文件),您需要覆盖整个文件。而数据库允许您每次添加/更新一条记录。

更不用说,如果您正在寻找具有某个单词或短语的所有博客文章,使用数据库更容易进行搜索...


好的...如果我为每个博客条目创建单独的文件会怎样?我的目的是 - 把这么大的数据放在数据库中是否是一个好的实践?否则,文件显然不能提供数据库那么多的功能。将来我也会添加搜索功能 - 因此,是的,也许使用数据库是正确的。 - Swar
每篇博客都有单独的文件会使搜索变得更加困难(正如我在结尾处提到的“更不用说”)。此外,我不会过于担心文件大小。除非你在写书,否则典型博客文章的大小微不足道。 - David

4

一篇博客文章并不大,但图片可能会很大。

一些问题:

  • 你使用的是哪种数据库?如果使用MySQL(呕吐),你可能需要使用TEXT(用于<64K)或MEDIUMTEXT(用于64K到16M之间)。
  • 你所说的“XML”是什么意思?XHTML是XML。HTML5具有XML序列化。
  • 你是否指的是每篇文章一个文件?我假设你是这样认为的。

你可能需要考虑的问题:

  • 读性能:从数据库中获取文件名然后读取文件是否更快,还是直接从数据库中获取数据?如果全部保存在数据库中,则可以跳过一些系统调用。您还可以避免“许多小文件”(约为4K以下)问题,大多数文件系统都无法处理。
  • 写性能:写入文件可能比写入数据库更快,因为数据库提供了更多保证(事务完整性)。另一方面,您无论如何都必须写入数据库,因此添加更多文件可能意味着更多的查找。
  • 数据库开销:在数据库中存储更多数据会使VACUUM ANALYZE花费更长时间。
  • 事务:如果DB写入失败,则事务失败。如果磁盘已满,则普通文件写入将部分完成。您的代码是否正确处理了这一点,还是仅保存了文章的开头?
  • 删除(与事务相关):您还需要记住删除文件。如果删除文件失败怎么办?如果删除行失败怎么办?
  • 迁移:您需要复制数据库。您是否也想复制许多小文件?
  • 易于访问:您是否想在文本编辑器中修改文章?
  • 孤立/丢失的文件:如果存在没有文件的文章或没有文章的文件怎么办?

我正在使用MySQL数据库,因此将使用TEXT或MEDIUMTEXT存储博客文章数据。我考虑使用每篇文章一个文件的方式,并将每篇博客文章数据保存在XML文件中。对于图片,我认为最好上传到文件系统并使用URL。因此,图像不会存储在数据库中,而只有URL。显然,为了读写性能,维护数据库比文件系统更容易,因为搜索行要快得多。当然,还会有一个功能来修改帖子内容,而且是在文本编辑器中进行的。 - Swar

1

选择一个。

我不建议使用HTML,因为在某些时候您可能会选择以其他方式进行渲染,但是XML和DB都有各自的优缺点。假设您的意思是每个文件一个帖子,那么XML文件非常便携,易于编辑等。而DB存储可以更轻松地搜索和检索,而且稍微不太可能被意外删除。


1

当涉及到保存/加载/序列化/反序列化大量数据时,XML并不是一个好的选择。我建议使用数据库。


-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接