3

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

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

一个可行的解决方案必须在具有 8gb RAM 的单个四核 Linux 机器上是可悲的,新硬件不是一个选项。

我找到了 e-Xist DB,但它似乎并没有太多的活动方式,并且演示站点已关闭。

4

4 回答 4

3

I would try in this order:

  1. BaseX (Has nice GUI. Most promising open source XML db I've found. BSD license)
  2. Sedna (My favorite before BaseX. Apache 2.0 license)
  3. Berkeley DB-XML (Is an embedded flat-file DB. Sleepycat license)
  4. eXist (eXist has always been a hacky disaster. GNU LGPL license)

My hunch is that Berkeley would be the fastest, but BaseX and Sedna are both network-accessible and BaseX would be the easiest to start using and querying. Sedna also has a schema-aware storage system which might be beneficial for the situation you describe. Berkeley's sleepycat license may be an encumbrance for you if you have a commercial use--look at it carefully.

于 2012-02-03T02:49:58.103 回答
1

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

  1. Solr(用于查询的Web界面,易于上手)
  2. ElasticSearch(分布式,易于上手)
  3. 原始Lucene(1 和 2 在幕后使用 Lucene)

为什么是全文搜索引擎?

  1. 快点
  2. 突出显示
  3. 刻面
  4. 允许自由格式搜索(使用 xml dbs,您将使用 xpath 或 xquery 或其他东西)
  5. 经证明即使有大量文件也能更快地搜索
  6. 基于文件
于 2012-02-03T01:02:12.263 回答
1

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

于 2012-02-03T11:58:44.223 回答
1

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

这里有大约 350 页的在线报告:

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

于 2012-02-04T14:15:09.233 回答