显然,BDB-XML至少从2003年开始出现,但我最近才在甲骨文的网站上偶然发现它:Berkeley DB XML.这是模糊:
Oracle Berkeley DB XML是一个开源的,可嵌入的XML数据库,基于XQuery访问存储在容器中的文档,并根据其内容编制索引.Oracle Berkeley DB XML构建于Oracle Berkeley DB之上,并继承了其丰富的功能和属性.与Oracle Berkeley DB一样,它与应用程序一起运行,无需人工管理.Oracle Berkeley DB XML在Oracle Berkeley DB之上添加了文档解析器,XML索引器和XQuery引擎,以实现最快,最有效的数据检索.
对我而言,似乎潜在的想法在技术上是合理的,并且可能比基于文档的新数据库(如CouchDB或MongoDB)更成熟.据我所知,它支持C,C++,Ruby和Perl.它甚至具有HA功能,例如使用具有自动选举功能的主/从模型进行自动复制.
但是,我似乎找不到任何使用它的项目.它有什么根本性的错误吗?许可证太繁重了吗?太复杂了吗?
为什么不使用它?
我曾经是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 Bourrett.他在这个问题上有很多话要说.
MongoDB和CouchDB属于不同的细分市场.他们进行分布式,分区式,最终一致的BASE式(非ACID)数据管理,有些人认为他们做得非常好.我认为他们很年轻,陪审团仍在外面.它们是一个良好的开端,我希望它们继续增长,数据存储是一件难以做到的事情,一个尺寸并不适合每个人的问题/需求.BDB XML的分布式故事建立在单主,多副本上,当主服务器出现故障时,始终保持一致(如果您愿意)基于日志的复制和基于PAXOS的选举算法.我们不对数据进行分区,每个节点都包含相同的数据(整个数据库).我们不允许在任何地方写入,只允许在主服务器上.我们支持超过TCP/IP进行复制(哎呀,如果需要,您可以使用自定义的硬件总线).我们构建了HA产品,以解决可读性,系统可用性和容错问题.NoSQL的分布式系统专为编写任何分区数据管理而设计.选择很好,对吧?:)
XML作为数据模式,XQuery作为访问和管理XML内容的语言,一直是并且将继续是一个非常成功的解决方案.现在使用NoSQL解决方案的公共网站可能不是那么多(这很好,对我来说很有趣),但在文档管理,金融,基因组学,生物信息学,数据交换,消息传递等方面更是如此.与SQL /关系产品相比,XML可能是一个小众数据库,但它肯定比对象数据库或块NoSQL数据库解决方案上的任何新孩子更成功.每个存储解决方案都有自己的位置,XML将在未来继续做有用的事情.
在一天结束时,我希望您选择一个适合您需求的数据库.
要记住的一件事是Berkeley DB的许可证.除非您打算开源您的项目,否则您需要从Oracle购买许可证,这就是为什么我怀疑您没有看到更多的许可证.所有Berkeley DB数据库都非常出色.我倾向于将它们用于我不打算分发的任何东西(在家庭项目中).