用于存储大型文档的数据库
Posted
技术标签:
【中文标题】用于存储大型文档的数据库【英文标题】:Database for storing large documents 【发布时间】:2011-07-05 02:40:18 【问题描述】:谁能推荐一个数据库解决方案来存储具有多个分支修订的大型文档?应该可以对内容进行部分编辑,而无需更新整个文档。
我正在查看 XML 数据库并想知道它们的适用性,或者甚至可能使用 DVCS(如 Mercurial)。
最好有 Python 绑定。
【问题讨论】:
定义“文档”。您指的是大块文本,还是 MS Word 等实际文件系统文档格式? 大块文本——它们都将被规范化为某种 XML 格式。 你看过alfresco.com吗? @Jared 我正在寻找可以集成到我自己的软件中的东西,而不是像企业解决方案这样的东西。 哦,好的。 Mercurial 可能是一个不错的选择,也许是 Git。化石看起来也不错。 【参考方案1】:试试Fossil——它有一个很好的增量编码算法,并保留所有版本。它由单个 SQLite 数据库提供支持,并具有基于 Web 和命令行的 UI。
【讨论】:
Fossil 是否支持部分编辑(例如能够提取文件的一部分并将其提交回来)? 您必须提交整个新文档,但增量编码算法避免了存储库中的内容重复。 我真的不想检查整个文档,因为它们可以任意长。【参考方案2】:这取决于您的存储行为和用例。如果您计划存储大量“文档修订版”并保留历史版本,并且可以遵守一次写入多次读取的模式,您应该研究 Hadoop HDFS 之类的东西。这需要大量(廉价)基础设施来运行您的集群,但您将能够随着时间的推移不断添加修订/数据,并且能够使用 MapReduce 算法快速查找它。
【讨论】:
可悲的是它更多的是写多读,而且写的不一定很大。以上是关于用于存储大型文档的数据库的主要内容,如果未能解决你的问题,请参考以下文章
内存映射文件 IList 实现,用于“在内存中”存储大型数据集?