显然,BDB-XML至少从2003年开始就存在,但我最近才在Oracle的网站上偶然发现了它: 伯克利DB XML. 。这是摘要:

Oracle Berkeley DB XML是一个开源,可嵌入可嵌入的XML数据库,基于Xquery基于XQUERY的访问对存储在容器中的文档的访问并根据其内容进行索引。 Oracle Berkeley DB XML建立在Oracle Berkeley DB之上,并继承其丰富的功能和属性。像Oracle Berkeley DB一样,它在应用程序中运行,不需要人类管理。 Oracle Berkeley DB XML在Oracle Berkeley DB顶部添加了文档解析器,XML索引和Xquery Engine,以启用最快,最有效的数据检索。

对我来说,似乎与CouchDB或MongoDB(例如CouchDB或MongoDB)相比,潜在的想法在技术上是合理的,并且可能更成熟。据我确定,它具有C,C ++,Ruby和Perl的支持。它甚至具有使用带有自动选举的主/从模型的自动复制等HA功能。

但是,我似乎找不到任何使用它的项目。根本上有什么问题吗?许可证太繁重吗?太复杂了吗?

为什么不使用它?

有帮助吗?

解决方案

我曾经是Oracle伯克利DB产品的产品经理。我一直在处理这些BDB数据库已有八年多的时间,我写了您复制到您的问题中的“ blubl”。

从商业上讲,我们在(非排斥列表,就在我的头顶之外): - Autodesk在MapQuest中使用BDB XML -FareLogix使用BDB XML用于预订系统-Starwood Hotels使用BDB XML来管理有关属性的信息, - 杜松网络在NetScreen Security Manager中使用BDB XML-由于合同限制我无法命名的许多... - 等等...

在开源世界中,伯克利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构建的产品通常在其核心上有一些交易数据结构,这些数据结构管理磁盘上的信息。我们在伯克利DB中尚未完成的优化,并在伯克利DB XML中使用。要说从头开始构建的数据库管理XML将比BDB XML要好得多,说伯克利DB缺少某些东西,我认为这里没有可辩护的论点有人拥有有关BDB尚未实现的有效XML存储至关重要的并发交易数据结构的信息。

存在是Java XML数据库,如果您愿意,我们将有一个Java JNI API,并且通常在性能,稳定性和可扩展性测试中击败裤子。

SEDNA是一个不错的XML数据库,它是Apache 2.0,因此它不是双许可证,而是牙线软件。我建议您针对BDB XML进行基准测试,您可能会感到惊讶。

MarkLogic是一款出色的XML/XQUERY数据库服务器,它们已经构建了一个非常可靠的产品。它不是软件库,而是服务器。 BDB XML和MarkLogic之间存在显着差异,但它们都在市售中可用 - 只有BDB XML是开源的。

有人提到艾略特·鲁斯蒂·哈罗德(Elliot Rusty Harold)在XML数据库中的博客,请小心它大约在2007年 - 嘿,不是在任何NOSQL数据库存在之前吗? ;-)

看看Kimbro Stenaken的 旧但仍然相关的评论 (变成了甲骨文的白皮书),这很好,但也有过时的日期。 “使用本机XML数据库进行XML数据:确定何时基于XQUERY的本机XML数据库比SQL数据库更好”

多年来的真正权威是 罗恩·伯雷特(Ron Bourrett). 。他对这个问题有很多话要说。

MongoDB和CouchDB处于不同的市场领域。它们确实分布,分区,最终是一致的碱式(非酸)数据管理,有些人认为他们做得很好。我认为他们还很年轻,陪审团仍在外面。他们的开端是一个良好的开端,我希望它们继续增长,数据存储很难正确,并且一种尺寸不适合每个人的问题/需求。 BDB XML的分布式故事是建立在单官构建的,当主人失败时,(如果您想)基于日志的复制和基于PAXOS的选举算法总是一致的(如果需要的话)。我们没有分区数据,每个节点都包含相同的数据(整个数据库)。我们不允许到处写作,只能在主人那里写作。我们支持复制的不仅仅是TCP/IP(哎呀,您可以根据需要使用硬件总线自定义)。我们构建了HA产品来解决可读性,系统可用性和容错性。 NOSQL的分布式系统设计用于编写任何分区数据管理。选择是好的,对吧? :)

XML作为数据架构和XQUERY作为一种可以访问和管理XML内容的语言,并且继续是一个非常成功的解决方案。如今,使用NOSQL解决方案(对我来说很好,很有趣),也许在更公共的网站中并没有那么多,但是在文档管理,金融,基因组学,生物信息,数据交换,消息传递等方面更重要。与SQL/关系产品相比,XML可能是一个利基数据库,但是它比对象数据库或Block NOSQL数据库解决方案上的任何新孩子都更成功。每个存储解决方案都有其位置,XML将继续在未来做有用的事情。

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

其他提示

要记住的一件事是伯克利DB的执照。除非您要开源项目,否则您需要从Oracle购买许可证,这就是为什么我怀疑您看不到更多。否则,所有伯克利数据库数据库都非常出色。我倾向于将它们用于我不会分发的任何东西(在房屋项目中)。

根据我的经验,伯克利DB XML有很多希望和许多相关用例。但是,您应该小心不要期望它在所有情况下都可以使用。请注意,最后一个版本是2009年12月22日的Berkeley DB XML 2.5.16。

如果您为用例正确配置,它基于伯克利DB的技术非常强大且盲目地呈盲目。有很多细节要正确(例如,启用交易,记录,了解使MVCC工作所需的所有标志)。我相信大多数人由于这种复杂性而存在问题。

不过,我遇到了其他一些缺点。最大的是,查询计划者在排序时不会使用索引。这意味着您不能执行非常常见的数据访问模式,这等同于:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

如果您这样做,伯克利DB会在订购前检查磁盘上的所有时间值,这使得您超越数万个节点时会慢慢。其他人也在这里报告了这一点:

https://forums.oracle.com/forums/message.jspa?messageID=9754987#9754987

您也可以直接列举任何索引,但是随后您将失去进行临时查询的能力。

论坛上还报告了一些与索引类型和性能有关的奇怪行为:

https://forums.oracle.com/forums/message.jspa?messageID=9753022#9753022

因此,尽管基于密钥的访问是快速可靠的,但请注意其未成熟的查询计划者。

取决于您的需求。我不会向另一个本地XML DB推荐一个本地XML DB,但是我可以告诉您,出版行业是整个领域的一个示例,它几乎放弃了关系数据库,并将大量时间转移到本地XML数据库中,以处理其出版物的内容。最突出的(也是最昂贵的)是Marklogic。 aSTENDB是一个似乎正在吸引一定的开放源。

这是一位杰出的XML大师Elliot Rusty Harold的出色文章。http://cafe.elharo.com/xml/the-state-of-native-xml-databases/

最好的[*] XML存储库是从头开始构建的,以支持XML 标记 或者 存在.

但是,BDB-XML的存储引擎是古老的伯克利DB引擎,这是最广泛的嵌入式数据库引擎之一。它很小,快速稳定。

BDB-XML 本身当然是一种能干的产品。如果它可以帮助您找到任何参考文献,则以SleepyCat的名义出售。这是BDB存储引擎与 xqilla Xquery引擎。

另外,您可能会发现更多信息搜索 xqilla. 。这是一个相当强大的引擎,仍然是开源的。

*]当然是“最好的”,是一个主观的术语。

因此,总而言之,这些都是为什么BDB-XML似乎没有被广泛使用的原因:

  • 仅允许内置的本地数据库(尽管有用于执行主奴隶复制的规定)
  • 不免费用于商业用途
  • 从头开始建造的许多竞争产品以支持XML

似乎没有任何理由不使用它,但是同样,在竞争中也没有太多要脱颖而出的。最重要的是,最近的比赛更多的是“哦,闪亮!”上诉和XML数据库本身仍然是一个利基市场。

我最近去过同样的事情,遇到了 SEDNA XML DBMS。

“从根本上有什么问题?”

是的。是XML。

不幸的是,这意味着那些发明它的人并没有费心看待已经存在的概念和技术的力量,例如关系代数和关系计算。

做得比那些更好的事情不是一项琐碎的任务(这是礼貌的任务),到目前为止尝试过的每个尝试的人都失败了。

应该告诉你一些事情。

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