如何公开大量的XML文档集合(~2M)用于离线查询(xpath)



我只有不到200万个XML文档,它们位于16gb的文件系统空间中。它们都是有效的,并且共享一个DTD。它们的大小大致相等(都是由同一个实验室信息系统生成的)。

我正在为单个用户寻找一种简单的方式来查询整个2M文档语料库。我不想把它暴露给网络,甚至多个局域网用户;但是,我希望它能够向我的intranet公开一些查询接口。我在查询语言上很灵活,但我希望能够进行临时查询。我希望它至少具有类似的性能,并且我愿意根据需要提供额外的磁盘空间来容纳索引。

一个可行的解决方案必须在一个8gb RAM的单四核Linux盒子上令人遗憾,新硬件是不可选择的。

我找到了e-Xist DB,但它似乎没有那么多活动,演示网站也关闭了。

我会按以下顺序尝试:

  1. BaseX(有很好的GUI。我发现的最有前途的开源XML数据库。BSD许可证)
  2. Sedna(BaseX.Apache 2.0许可证之前我最喜欢的)
  3. Berkeley DB-XML(是一个嵌入式平面文件DB.Sleepycat许可证)
  4. eXist(eXist一直是一场黑客灾难。GNU LGPL许可证)

我的预感是伯克利将是最快的,但BaseX和Sedna都可以通过网络访问,BaseX将是最容易开始使用和查询的。Sedna还有一个模式感知存储系统,这可能对您描述的情况有益。如果你有商业用途,伯克利的夜猫许可证可能会给你带来负担——仔细看。

我喜欢使用全文搜索引擎创建反向索引。以下是我的偏好。我建议你花点时间研究这3个。

  1. Solr(用于查询的Web界面,易于入门)
  2. ElasticSearch(分布式,易于入门)
  3. Raw Lucene(1&2在幕后使用Lucene)

为什么选择全文搜索引擎

  1. 更快
  2. 突出显示
  3. 镶嵌
  4. 允许自由形式的搜索(使用xmldbs,您将使用xpath或xquery或其他东西)
  5. 经验证,即使使用大量文件也能更快地进行搜索
  6. 基于文件的

您肯定想要一个XML数据库。我想说,新兴的领导者是商业产品的MarkLogic,开源产品的eXist。其他人可能有其他看法。掌握一个新的数据库产品总是一条陡峭的学习曲线(数据库的能力越强,需要学习的东西就越多)。但eXist当然可以破解它,不要在第一个障碍就放弃。

我同意Michale Kay的观点。如果您想要开源,请使用eXist数据库;如果您想要商业化,请使用MarkLogic。我为美国国会图书馆NDIIPP项目做了一个项目,经过广泛的ATAM分析,我们选择eXist作为优于其他系统的系统,因为它的活跃用户社区和广泛使用。如果您有疑问,请在MarkMail上搜索。我想你会发现eXist比任何其他系统都有更积极的讨论。

这里有大约350页的报告:

http://www.mnhs.org/preserve/records/legislativerecords/pilot.htm

最新更新