显然,至少从2003年开始,BDB-XML已经存在,但我最近才在甲骨文的网站上偶然发现它: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功能,例如使用具有自动选举功能的主/从模型进行自动复制。
但是,我似乎无法找到任何使用它的项目。它有什么根本性的错误吗?许可证太繁重了吗?这太复杂了吗?
为什么不使用?
答案 0 :(得分:46)
答案 1 :(得分:7)
要记住的一件事是Berkeley DB的许可证。除非您打算开源您的项目,否则您需要从Oracle购买许可证,这就是为什么我怀疑您没有看到更多的许可证。所有Berkeley DB数据库都非常出色。我倾向于将它们用于我不打算分发的任何东西(在家庭项目中)。
答案 2 :(得分:4)
根据我的经验,Berkeley DB XML有很多承诺和许多相关用例。但是你应该小心,不要指望它在所有情况下都能起作用。请注意,最后一个版本是2009年12月22日的Berkeley DB XML 2.5.16。
它所基于的技术,Berkeley DB,如果您正确配置它的用例,它非常强大且速度非常快。有许多细节可以做到(例如,启用事务,记录,理解使MVCC工作所需的所有标志)。我认为,由于这种复杂性,大多数人都有问题。
我遇到了一些其他缺点。最大的一个是查询规划器在排序时不会使用索引。这意味着你不能做一个非常常见的数据访问模式,它相当于:
SELECT * FROM table ORDER BY time DESC LIMIT 100;
如果你这样做,Berkeley DB会在订购之前检查磁盘上的所有时间值,这会使你在超过几万个节点时变慢。还有其他人在这里报告了这一点:
https://forums.oracle.com/forums/message.jspa?messageID=9754987#9754987
您也可以直接枚举任何索引,但是您将失去进行即席查询的能力。
在论坛上也报道了一些与索引类型和性能相关的奇怪行为:
https://forums.oracle.com/forums/message.jspa?messageID=9753022#9753022
因此,虽然基于密钥的访问快速可靠,但要注意其不成熟的查询规划器。
答案 3 :(得分:3)
取决于您的需求。我不会推荐一个本地xml数据库而不是另一个本地xml数据库,但我可以告诉你,出版行业是整个行业的一个例子,它几乎放弃了关系数据库,并将大量时间转移到本机xml数据库以处理其出版物的内容。最突出(也是最昂贵的)是MarkLogic的那个。 eXistDB是一个开源的,似乎正在获得一些牵引力。
这是一篇由杰出的xml大师Elliot Rusty Harold撰写的关于此主题的优秀文章。 http://cafe.elharo.com/xml/the-state-of-native-xml-databases/
答案 4 :(得分:3)
最好的[*] XML存储库是从头开始构建的,用于支持XML,例如MarkLogic或eXist。
然而,BDB-XML的存储引擎是古老的Berkeley数据库引擎,是最广泛的嵌入式数据库引擎之一。它小巧,快速,稳定。
BDB-XML本身肯定是一个有能力的产品。它以前以Sleepycat的名义出售,如果这有助于您找到任何参考。它是BDB存储引擎与 XQilla XQuery引擎的组合。
您也可以找到搜索XQilla的更多信息。它是一个相当强大的引擎,仍然是开源的。
[*]“最好的”当然是一个主观的术语。
答案 5 :(得分:1)
总而言之,这些都是BDB-XML似乎没有被广泛使用的原因:
似乎没有任何理由不使用它,但同样没有太多可以使它在竞争中脱颖而出。最重要的是,最近的比赛更多的是“噢,闪亮!”上诉和XML数据库本身仍然是一个利基市场。
答案 6 :(得分:-1)
我最近一直都是这样,遇到了Sedna XML dbms。
答案 7 :(得分:-7)
“它有什么根本性的错误吗?”
是。这是XML。
不幸的是,这意味着那些发明它的人并没有费心去看看现有的概念和技术的力量,比如关系代数和关系演算。
做得比这些好,这不是一项微不足道的任务(而且这是礼貌的),而且到目前为止尝试过的每个人都失败了。
那应该告诉你一件事。