3

我正在考虑存储 xml 文档并有效地进一步查询它们的最佳开源解决方案。数据量会很小。据我了解,本机 xml 数据库可能会为我的情况提供适当的解决方案。他们显然以高效的方式存储 xml 文档。学习你的经验会很棒。关于适当解决方案的任何建议?您是否有在应用程序中使用 xml 存储引擎的经验?

4

2 回答 2

2

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

  • eXist:基于 Java 的原生 XML 服务器(开源):对于大文件,它通常会占用 JVM 的内存,然后抛出内存不足异常
  • sedna:基于 C 的原生 XML 服务器(开源):可以处理非常大的数据库,但如果您尝试从数据库中查询非索引数据,则会出现段错误
  • Tamino XML 数据库(专有):最早的 XML 数据库之一,成熟但对 xquery 的支持很糟糕(至少我们使用的最新版本对 XQuery 的支持很差),正如我们所见,即使是训练有素的专业人员也无法'没有正确设置它足够快。

以下是我的建议:

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

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

于 2009-06-16T08:58:14.597 回答
1

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

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

于 2009-06-16T09:04:40.747 回答