我正在考虑存储 xml 文档并对其进行有效进一步查询的最佳开源解决方案。数据量会很小。据我了解,原生 xml 数据库可能会为我的案例提供合适的解决方案。显然,它们以高效的方式存储 xml 文档。学习您的经验会很棒。有关正确解决方案的任何建议吗?您有在应用程序中使用 xml 存储引擎的经验吗?

有帮助吗?

解决方案

我们在工作中一直使用本机 XML 服务器。如果您的数据低于大约 100-200MB-s,它们就很好,但在那之后我找不到可以处理数据的合适服务器。我尝试过以下方法:

  • 存在:基于 Java 的本机 XML 服务器(开源):对于大文件,它通常会占用 JVM 的内存,然后抛出内存不足异常
  • 塞德娜:基于 C 的本机 XML 服务器(开源):可以处理非常大的数据库,但如果尝试从数据库查询非索引数据,则会出现段错误
  • Tamino XML 数据库(专有):第一个 XML 数据库,成熟,但对 xquery 支持很差(至少我们使用的几乎最新版本对 XQuery 的支持非常差),正如我们所见,即使是经过培训的专业人员也无法正确设置它足够快。

以下是我的建议:

  • 对于小数据和基于 Java 的系统,请尝试 eXist。它甚至具有类似 SQlite 的基于文件的数据库支持,这可能很有用。
  • 对于性能很重要的中小型数据,请使用 sedna。根据我的测试,它是三者中最快的。
  • 如果您需要支持,请使用塔米诺。至少有支持。

对于大型数据库(1GB 及以上),我(目前)不推荐其中任何一个。eXist 通常会因 200MB 大小的数据库而崩溃。sedna 在查询未索引的内容时会因 1GB 大小的数据库而崩溃,而 tamino 甚至无法在一次运行中加载 500MB 的数据,然后整个系统就会崩溃。当然,所有这些系统都在不断发展,因此也许稍后它们就可以安全使用,但不幸的是,原生 XML 数据库仍然不成熟。

其他提示

您是否查看了主要供应商提供的解决方案,例如 Oracle XML DB 。我没有尝试过,但如果你有这样的预算,肯定值得评估!

维基百科也有一个很好的XML Dbs列表,您可能希望对其进行评估。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top