2009-07-06 34 views
2

冒着愚蠢的风险,在需要保留大型数据字段(例如使用博客文章)的情况下,数据库存储永远是最佳解决方案吗?坚持大型文本字段

我猜数据库的膨胀可能不是太高的风险,因为那种数据库意味着擅长什么,对吧?此外,数据库对文本索引和快速访问也很有用。这个假设是否正确?

它发生,我认为那样的数据可以存储在某种XML平面文件的数据库之外,我不知道这是一个好主意......

回答

2

将文本存储在数据库中,包括博客帖子等内容通常是经常完成的。有数据库来处理这个。

在数据库之外(即在文件系统中)存储大型内容(例如图像,大型文本文件等)并从数据库中引用它们也很常见。这样做可能会限制数据库大小,但会出现其他问题,例如处理并发问题(如同时编辑文件)。

很多因素决定哪个是最合适的解决方案,包括编辑的频率,文件的大小,文件的数量等等。

对于文本索引的数据库处理,支持各不相同。例如,MySQL(使用MyISAM存储)具有全文搜索功能。带有正确附加组件的SQL Server也有它。与Oracle相同。它可能很有用,但比通用搜索引擎(如卢塞恩)更有限。您的要求和限制将决定数据库索引是否足够,或者您需要搜索引擎类型的解决方案。

为了给你一个真实的具体例子,StackOverflow搜索是使用SQL Server全文搜索实现的,许多人批评它与谷歌的“网站:stackoverflow.com ....”无效几乎默认使用)。

0

数据库比XML更好平面文件保存为TEXT。它也具有处理并发和事务的优点。

0

如果您对性能和可靠性充满担忧,那么您应该认真考虑使用符合要求的数据库。这些系统的开发人员已经集中大量时间来解决所有需要重新解决的问题,如果您尝试使用某种平面文件。

2

你的假设是正确的。你真的不想要的文本存储在数据库之外,因为你会失去:

  • 交易安全
  • 搜索功能(可以通过不同的工具来添加,带来了自己的一套问题/要求)
  • 易于维护
  • 一致性(如果有人删除XML文件)

此外,虽然类似的话题已经被殴打致死相对于图像(should one store images on the DB or in the filesystem?),文本并没有引起同样的担忧,因为'大'文本实际上很小(10KB或100KB作为一个巨大的上限),大多数数据库都有一个特殊的数据类型来存储文本。有了图像,我们就可以讨论(几个)兆字节范围内的数据。最相关的国际海事组织通常是数据库全文引擎比专用搜索引擎(如Lucene和朋友)表现更差。考虑到潜在问题以及您对数据的实际使用情况,必须考虑这一点。此外,还有一些数据库搜索模块的性能比其他数据库更好,因此必须在特定情况下对其进行测试。

1

DasBlog使用XML来存储来自博客条目的文本,但我知道这有一些缩放问题。

1

它在一定程度上取决于RDBMS。

在SQL Server(版本2008之前)中,如果文件系统中存在大于1MB(中间有灰色区域),则建议(通过基准测试获得),如果小于256K则放入数据库。

参考:To BLOB or Not To BLOB:Large Object Storage in a Database or a Filesystem?

+0

但你是什么基准?你是如何避免一致性问题的? – 2009-07-06 15:49:09