database - Berkeley DB XML 是一个可行的数据库后端吗?

标签 database berkeley-db berkeley-db-xml

显然,BDB-XML 至少在 2003 年就已经存在,但我最近才在 Oracle 的网站上偶然发现它:Berkeley DB XML .这是简介:

Oracle Berkeley DB XML is an open source, embeddable XML database with XQuery-based access to documents stored in containers and indexed based on their content. Oracle Berkeley DB XML is built on top of Oracle Berkeley DB and inherits its rich features and attributes. Like Oracle Berkeley DB, it runs in process with the application with no need for human administration. Oracle Berkeley DB XML adds a document parser, XML indexer and XQuery engine on top of Oracle Berkeley DB to enable the fastest, most efficient retrieval of data.



对我来说,潜在的想法在技术上似乎是合理的,并且可能比新的基于文档的数据库(如 CouchDB 或 MongoDB)更成熟。据我所知,它支持 C、C++、Ruby 和 Perl。它甚至具有 HA 功能,例如使用具有自动选举功能的主/从模型进行自动复制。

但是,我似乎找不到任何使用它的项目。它有什么根本性的问题吗?执照太麻烦?是不是太复杂了?

为什么它没有被使用?

最佳答案

我曾经是 Oracle 的 Berkeley DB 产品的产品经理。我已经在这些 BDB 数据库上工作了八年多了,我写了你复制到你的问题中的“模糊”。

在商业上,我们用于(非详尽列表,就在我的脑海中):
- Autodesk 在 Mapquest 中使用 BDB XML
- Farelogix 将 BDB XML 用于预订系统
- 喜达屋酒店使用 BDB XML 来管理有关他们管理的酒店的信息
- Juniper Networks 在 NetScreen 安全管理器中使用 BDB XML
- 由于契约(Contract)限制,许多我无法命名......
- 等等...

Berkeley DB XML 在开源世界中一直相对被忽视,我不知道为什么。这里和那里有一些项目已经使用了它,我所知道的所有公众都没有。我最近确实看到a nifty blog post关于如何在 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 的 old but still relevant review ( turned into a whitepaper by Oracle ),它很好但也过时了。 “为您的 XML 数据使用原生 XML 数据库:决定基于 XQuery 的原生 XML 数据库何时优于 SQL 数据库”

多年来真正的权威是Ron Bourrett .关于这个问题,他有很多话要说。

MongoDB 和 CouchDB 处于不同的分割市场。他们进行分布式、分区、最终一致的 BASE 风格(非 ACID)数据管理,有些人认为他们做得很好。我认为他们还年轻,陪审团还在外面。他们有一个良好的开端,我希望他们继续增长,数据存储是一件很难做到的事情,而且一个尺寸不能满足每个人的问题/需求。 BDB XML 的分布式故事建立在单主、多副本始终一致(如果您愿意)基于日志的复制和基于 PAXOS 的选举算法上,当主失败时。我们不对数据进行分区,每个节点都包含相同的数据(整个数据库)。我们不允许在任何地方写入,只允许在 master 上写入。我们支持的不仅仅是 TCP/IP 复制(见鬼,如果你愿意,你可以使用自定义的硬件总线)。我们构建了我们的 HA 产品来解决读取可扩展性、系统可用性和容错性。 NoSQL 的分布式系统设计用于在任何地方写入分区数据管理。选择是好的,对吧? :)

XML 作为一种数据模式和 XQuery 作为一种语言来访问和管理 XML 内容已经并将继续是一个非常成功的解决方案。或许在如今使用 NoSQL 解决方案的更多公共(public)网站中(这很好,对我来说很有趣),但在文档管理、财务、基因组学、生物信息学、数据交换、消息传递等方面更是如此。与 SQL/关系产品相比,XML 可能是一个小众数据库,但它肯定比对象数据库或块 NoSQL 数据库解决方案上的任何新 child 都要成功得多。每个存储解决方案都有自己的位置,XML 将在 future 继续做有用的事情。

归根结底,我希望您选择适合您需求的数据库。

关于database - Berkeley DB XML 是一个可行的数据库后端吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493341/

相关文章:

iphone - 在 iPhone 上刷新数据库

database - 如何在cassandra中定义动态列族

php - 没有从数据库中得到结果

python - Taipy core 与 Sqlite datanode 无法连接

database - BDB,如何按指定顺序获取主键?

python - 是否有关于如何在 Windows 上安装 Berkeley DB XML Python API 的良好文档或您自己的说明?

berkeley-db - berkeley-db-je 的最新版本是什么?

java - 寻找一个轻量级的 java 兼容内存键值存储

python - DBXML XQuery : move child to root of container