我们希望开发一个报告应用程序,该应用程序报告存储在大量 XML 文件中的数据。大约 3,000,000 个文件,大小从 7KB 到 5MB(每个文件符合相同的架构)。我猜大概会有 200GB 的 XML。我正在查看许多开源 XML 数据库(Sedna、BaseX 和 eXist-db),但我不确定这些系统的扩展性如何,我阅读了这三个数据库 here 的比较。这就是我对可扩展性的担忧的起源。
关于我们想要做什么的一些细节是: 我们不会更改任何 XML 文件中的数据,并且每天都会添加新文件。由于我们关心报告查询性能对我们来说很重要,因此添加和索引新文件所需的时间对我们来说并不是一个高优先级。
我想知道是否有人有类似规模使用这些系统的经验?我查看了 BaseX statistics page 并看到了一些相当大的 XML 实例,但没有提到性能。
我们不需要开源产品,MarkLogic 系统看起来可以很好地满足要求,但我很好奇开源产品做了什么。
最佳答案
我认为用 yes
或 no
来回答你的问题是不可能的。从您提供的小细节中很难说明任何有关性能的信息。
性能通常基于您要执行的查询和数据的分布。更不用说,你认为是“可接受的”。
在 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 中,我会感到惊讶,但如果不知道您的数据和您想要执行的查询类型,我无法评论查询性能。
我认为您最好对其中一个或全部进行一次小型试验,其方式与该链接文章没有什么不同。
关于exist-db - 开源 XML 数据库的可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085853/