4

我们正在寻求开发一个报告应用程序来报告存储在大量 XML 文件中的数据。约 3,000,000 个文件,大小从 7KB 到 5MB 不等(每个文件符合相同的架构)。我猜大概会有大约 200GB 的 XML。我正在查看一些开源 XML 数据库(Sedna、BaseX 和 eXist-db),但我不确定这些系统的扩展性如何,我在这里阅读了这三个数据库的比较。这就是我对可扩展性的担忧的来源。

关于我们想要做的一些细节是: 我们不会更改任何 XML 文件中的数据,并且每天都会添加新文件。因为我们关心报告查询性能对我们来说很重要,所以添加和索引新文件所花费的时间对我们来说并不是一个高优先级。

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

我们不需要开源产品,MarkLogic 系统看起来可以很好地满足要求,但我很好奇开源产品做了什么。

4

2 回答 2

8

我认为用 ayes或来回答你的问题是不可能的no。从您提供的小细节中无法说明任何有关性能的信息。

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

您引用的论文中,有趣的是,他们声明他们无法使 eXist 2.2 预览版中的新范围索引正常工作。当然,如果没有这些,他们会看到更糟糕的表现。最后他们表示他们将选择 Sedna,因为他们可以克服 Sedna 的问题,我不清楚为什么会这样,即他们是否有可以与 Sedna 一起工作的 C++ 开发人员,但他们没有 Java 开发人员可以与 eXist 或 BaseX 一起使用吗?最后,他们用于测试 eXist 和 BaseX 的 Java 版本比较老,下一个版本的 eXist (3.0) 将只支持 Java 8 和更新版本。

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

我认为您最好以与该链接文章相同的方式对一个或全部进行小试验。

于 2015-05-07T15:05:07.103 回答
3

只是想分享我在这个话题上的经验。我的经验仅限于小得多的数据集——大约 50k 个文档,总大小约为 1GB。为此,我们使用 Sedna XML DB。我们不更改文档,而是在发生更改时覆盖现有文档,并且有很多只读 XQuery,包括大报告。

很快,我认为 Sedna 对您不起作用,除非您找到一种方法将其复制到另一台服务器以用于阅读。在执行一些持久的报告 XQuery 时,我遇到了与数据库负载相当适中的集合锁相关的主要性能问题。据我所知,Sedna 不提供复制功能,但您可能可以在 Sedna 之上采用一些解决方案。例如,快速谷歌搜索揭示了该领域的一些研究。您可以尝试在Sedna 邮件列表上询问。其他缺点包括缺乏 XQuery 3.0 支持和似乎冻结了进一步的开发。但是,邮件列表中的支持仍然非常活跃。

我对 eXist-db 也有一些经验,但我更多地将它用作 XML 处理和管道平台,而不是 XML 存储。在扩展方面,它看起来仍然更有希望。虽然我没有使用它的复制功能,但在文档中提到了它们。我建议您也尝试在邮件列表中搜索/询问。

于 2015-05-07T12:18:59.547 回答