如何为脱机查询(xpath)公开大量XML文档(~2M)?

时间:2012-02-03 00:23:37

标签: xml xpath nosql exist-db

我在16GB的文件系统空间中只有200万个XML文档。它们都有效并共享一个DTD。它们的大小大致相同(均由同一实验室信息系统生成)。

我正在寻找单个用户查询整个2M doc语料库的简便方法。我不打算将其暴露给网络甚至是多个局域网用户;但是,我希望能够向我的Intranet公开一些查询接口。我对查询语言很灵活,但我希望能够进行即席查询。我希望它至少具有同等性能,并且我愿意根据需要专门提供额外的磁盘空间来容纳索引。

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

我找到了e-Xist数据库,但它似乎没有那么多的活动方式,并且演示网站已关闭。

4 个答案:

答案 0 :(得分:3)

我会按此顺序尝试:

  1. BaseX(有很好的GUI。我发现最有前途的开源XML数据库.BSD许可证)
  2. Sedna(我最喜欢的是BaseX.Apache 2.0许可证)
  3. Berkeley DB-XML(是嵌入式平面文件DB。Sleepycat许可证)
  4. eXist(eXist一直是一个hacky灾难.GNU LGPL许可证)
  5. 我的预感是Berkeley将是最快的,但BaseX和Sedna都是网络可访问的,而BaseX将是最容易开始使用和查询的。 Sedna还具有模式感知存储系统,可能对您描述的情况有益。如果您有商业用途,伯克利的睡眠许可证可能会给您带来负担 - 请仔细查看。

答案 1 :(得分:1)

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

  1. Solr(用于查询的Web界面,易于上手)
  2. ElasticSearch(分布式,易于上手)
  3. 原始Lucene(1& 2在幕后使用Lucene)
  4. 为什么要使用全文搜索引擎?

    1. 更快
    2. 突出
    3. 车花
    4. 允许自由格式搜索(使用xml dbs,您将使用xpath或xquery或其他东西)
    5. 即使使用大量文件也可以更快地搜索
    6. 基于文件的

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我同意Michale Kay的观点。如果需要商业,请使用eXist-db(如果需要开源和MarkLogic)。我为美国国会NDIIPP计划图书馆做了一个项目,经过广泛的ATAM分析后,由于其活跃的用户群和广泛使用,我们选择eXist优于其他系统。如果您有疑问,只需在MarkMail上进行搜索。我想你会发现eXist的讨论比任何其他系统都要积极。

这里有大约350页的报告:

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