我曾经是 Oracle Berkeley DB 产品的产品经理。我已经在这些 BDB 数据库上工作了八年多了,我写了你复制到你的问题中的“模糊”。
在商业上,我们用于(非详尽列表,就在我的脑海中):
- Autodesk 在 Mapquest 中使用 BDB XML
- Farelogix 将 BDB XML 用于预订系统
- 喜达屋酒店使用 BDB XML 来管理他们管理的酒店的信息
- 瞻博网络在 NetScreen 安全管理器中使用 BDB XML
- 由于合同限制,许多我无法命名...
- 等等...
Berkeley DB XML 在开源世界中相对被忽视,我不知道为什么。有几个项目在这里和那里都使用过它,我所知道的没有什么公开的。我最近确实看到了一篇关于如何在 Emacs 中使用 BDB XML 的精彩博客文章。设置完成后,您可以在文本编辑器中以交互方式在 XML 上运行 XQuery 语句。也就是说,它非常适合商业和开源使用。
XQilla 是由 BDB XML 工程师从我们多年来共同编织的其他几个 XML 项目中创建的一个项目。我们开源(Apache 2.0 许可)XQilla,因为它是一个很棒的 XQuery 和 XML 解析库。我们是一家数据库公司,所以在解析 XML 并将其组织到我们的 btree 数据库中的部分,以及查询优化、索引、统计和大量其他代码的工作是 XQilla 下的内容,但是上面 BDB 的 btree 将两者粘合到 BDB XML 中。如果它解决了您的问题,请随意使用它,那里根本没有数据库。
从头开始为 XML 构建的产品通常在其核心具有一些事务性数据结构,用于管理磁盘上的信息。我们在 Berkeley DB 中尚未完成并在 Berkeley DB XML 中使用的优化不多。要说从头开始构建的用于管理 XML 的数据库将比 BDB XML 好得多,就是说 Berkeley DB 缺少一些东西,我认为这里没有站得住脚的论据,但我愿意了解是否有人拥有关于 BDB 尚未实现的对高效 XML 存储至关重要的并发事务数据结构的信息。
eXist 是一个 Java XML 数据库,如果您愿意,我们有一个 Java JNI API,而且我们通常在性能、稳定性和可扩展性测试中击败 eXist。
Sedna 是一个很好的 XML 数据库,它是 Apache 2.0,所以它不是双重许可,它只是 FLOSS 软件。我建议您将它与 BDB XML 进行基准测试,您可能会感到惊讶。
MarkLogic 是一个很棒的 XML/XQuery 数据库服务器,他们构建了一个非常可靠的产品。它不是软件库,而是服务器。BDB XML 和 MarkLogic 之间存在显着差异,但它们都是商业可用的 - 只有 BDB XML 是开源的。
有人提到 Elliot Rusty Harold 的关于 XML 数据库状态的博客,请注意它大约是 2007 年 - 嘿,这不是在任何 NoSQL 数据库存在之前吗?;-)
看看 Kimbro Staken 的旧但仍然相关的评论(由 Oracle 变成了白皮书),它很好,但也过时了。“为您的 XML 数据使用原生 XML 数据库:确定基于 XQuery 的原生 XML 数据库何时优于 SQL 数据库”
多年来真正的权威一直是Ron Burrett。关于这个话题,他有很多话要说。
MongoDB 和 CouchDB 处于不同的细分市场。他们进行分布式、分区、最终一致的 BASE 样式(非 ACID)数据管理,有些人认为他们做得很好。我认为他们还年轻,陪审团还在外面。他们有一个良好的开端,我希望他们继续发展,数据存储是一件很难做到的事情,而且一个大小并不适合每个人的问题/需求。BDB XML 的分布式故事基于单主、多副本始终一致(如果您愿意)基于日志的复制和当主失败时基于 PAXOS 的选举算法。我们不对数据进行分区,每个节点都包含相同的数据(整个数据库)。我们不允许在任何地方写入,只允许在 master 处写入。我们不仅支持 TCP/IP 进行复制(见鬼,如果需要,您可以使用为您的服务器定制的硬件总线)。我们构建了 HA 产品来解决读取可扩展性、系统可用性和容错问题。NoSQL 的分布式系统专为随处写入分区数据管理而设计。选择是好的,对吧?:)
XML 作为数据模式和 XQuery 作为访问和管理 XML 内容的语言已经并将继续是一个非常成功的解决方案。如今,在使用 NoSQL 解决方案的更多公共网站中可能没有那么多(这很好,对我来说很有趣),但在文档管理、金融、基因组学、生物信息学、数据交换、消息传递等等方面更是如此。与 SQL/关系产品相比,XML 可能是一个小众数据库,但它肯定比对象数据库或块 NoSQL 数据库解决方案的任何新手更成功。每个存储解决方案都有它的位置,XML 将在很长一段时间内继续做有用的事情。
归根结底,我希望您选择一个适合您需求的数据库。