开源XML数据库的可伸缩性

时间:2015-05-06 19:28:31

标签: exist-db basex xml-database sedna

我们正在寻求开发一个报告应用程序,该应用程序报告存储在大量XML文件中的数据。 ~3,000,000个文件,大小从7KB到5MB(每个文件符合相同的模式)。我猜大约有200GB的XML。我正在研究一些开源XML数据库(Sedna,BaseX和eXist-db),我不确定这些系统的扩展程度,我读了这三个数据库here的比较。这是我对可伸缩性的关注源自哪里。

有关我们想要做的事情的一些细节是:我们不会更改任何XML文件中的数据,并且每天都会添加新文件。由于我们关注报告查询性能对我们很重要,因此添加和索引新文件所需的时间不是我们的首要任务。

我想知道是否有人有类似规模使用这些系统的经验?我查看了BaseX statistics page并查看了一些相当大的XML实例,但未提及性能。

我们不需要开源产品,MarkLogic系统看起来很适合这个账单,但我很好奇开源产品做了些什么。

2 个答案:

答案 0 :(得分:8)

我认为使用yesno无法回答您的问题。从你给出的小细节中说出关于表现的任何事情都是不可能的。

性能通常基于您要执行的查询和数据分发。更不用说,你认为什么是“可接受的”。

paper you referenced中,值得注意的是,他们声明他们无法在eXist 2.2预览中获得新范围索引。当然没有这些,他们会看到更糟糕的表现。最后他们说他们会选择Sedna,因为他们可以克服Sedna的问题,我不清楚为什么会这样,即他们是否有可以与Sedna合作的C ++开发人员,但他们没有Java开发人员可以使用eXist或BaseX吗?最后,他们用于测试eXist和BaseX的Java版本相当陈旧,下一版本的eXist(3.0)只支持Java 8及更新版本。

如果您无法将200GB数据存储到BaseX,eXist或Sedna中,但如果不知道您的数据和要执行的查询类型,我会感到惊讶。我无法对查询性能发表评论。

我认为你最好对这一项或所有项目进行一次小型试验,其方式与该链接文章不同。

答案 1 :(得分:3)

只想分享我在这个主题上的经验。我的经验仅限于更小的数据集 - 大约约5万个文档,总大小约为1GB。我们使用Sedna XML DB来实现此目的。我们不会更改文档,而是在发生更改时覆盖现有文档,并且包含大量只读XQueries,包括大型报告。

很快,我的观点是Sedn​​a不适合你,除非你找到一种方法将它复制到另一台服务器用于阅读。在执行一些持久的报告XQueries时,我遇到了与收集锁相关的主要性能问题,并且数据库负载相当适中。据我所知,Sedna不提供复制功能,但您可以在Sedna之上采用一些解决方案。例如,快速谷歌搜索在此区域显示some research。您可以尝试询问Sedna mailing list。缺点是缺乏XQuery 3.0支持和看似冻结的进一步开发。但是,邮件列表上的支持仍然非常活跃。

此外,我对eXist-db有一些经验,但我更多地将它用作XML处理和流水线平台而不是XML存储。在缩放方面,它看起来仍然看起来更有前途。虽然我没有使用它的复制功能,但docs中提到了它们。我建议您尝试搜索/询问mailing list