1

我正在寻找一个可以存储大型文档(10-20MB)并执行以下操作的数据库系统:

  • 能够按位置访问给定文档中的内容。例如,获取位置 100 到 500 之间的文本。
  • 数据库应该只返回来自文档的部分内容(可能不加载整个文档)。所以我在寻找效率。
  • 应该在指定位置(或范围)处理插入、更新和删除文本块。
  • 我想使用这些位置来定义边界。例如,位置 100 到 500 是页码。4

这将与 Web 应用程序一起使用,用户将在其中以连续文档的形式创建内容(例如,一个文档是具有 100 页的简化 Google 文档)。我曾考虑过 MongoDB,但我对它的了解还不够。

-

我可以在这里使用什么样的数据库?(我正在寻找一个开源数据库)

或者

如果我必须自己编写这样的系统,我的方法应该是什么,我可以从哪里开始?

谢谢 :)

4

1 回答 1

1

我一直觉得把文件放在数据库里很不舒服;文件系统是文件的理想数据库(您的大小不受操作系统可以处理的限制),索引/搜索可以由单独的应用程序处理,并且您的数据库可以简化为包含 uri-esque 的简单表链接回系统中的每个实际文件和任何其他适当的元数据。

在您的情况下,像lucene这样的文件索引器/搜索引擎可能比尝试使用传统的 DMBS 作为文件系统更适合您的项目。

由于您计划将内容放入数据库,因此我假设您将控制如何将文档添加到系统中。这使您可以更轻松、更高度地将表示层与文件系统数据存储集成,而不必担心文件被随意丢弃、更改或删除到您的特殊存储库中。

所以一个非常基本的高级系统概述可能看起来像这样:

[(APP) Your System]---------[(DB) Catalog ]
           |       \              |
           |        --------      |
           |                \     |
[(FileSystem) Files]--------[(App) Indexer]

随着您的系统执行文档维护和前端搜索以及索引器监控文件系统和更新目录数据库的所有智能。(如果您的索引器最终提供了足够的功能或添加元数据的能力,则目录可能是不必要的 - 但如果您确实需要基于“100 到 300 之间的文档”进行搜索,它可能更容易与索引器结合使用)

于 2013-11-25T01:19:56.130 回答