0x01 Berkeley DB XMl Java版 之入门

1. Berkeley DB XML 介绍

  • Berkeley DB XML(BDB XMl)是一个专门设计用来保存和恢复XML格式文档的嵌入式数据库。
  • BDB XML构建于Berkeley DB之上,可使用XQuery对数百万个XML文档进行高效查询。
  • XQuery是一种查询语言,用于检查和检索XML文档的各个部分。

学习准备

本篇博文将介绍BDB XML,我们将会快速学习BDB XML API集和相关概念。
适用于正在寻找进程内XML数据管理解决方案的Java开发人员和高级软件架构师。

之前没有学习过的或需要BDB XML的经验,参考资料如下:
0x01 Berkeley DB XML介绍之概览
0x02 Berkeley DB XML 之运行Shell
0x03 Berkeley DB XML之shell获取帮助
更多内容:Berkeley DB XML 介绍------通过shell来增删改查XML

本篇博文使用Java示例来讲解Berkeley DB XML.

请注意,虽然本文档使用Java作为示例,但此处描述的概念应同样适用于BDB XML API可用的所有语言绑定。
请注意,此文档的某个版本也适用于C ++语言。

1.1. 概览

BDB XML是一个嵌入式数据库,专门用于管理和查询数百,数千甚至数百万个XML文档。我们可以通过编程API使用BDB XML,该API允许您通过进程内数据库引擎管理,查询和修改文档。因为BDB XML是一个嵌入式引擎,所以可以将它与我们的应用程序一起使用,就像使用任何第三方软件包一样。

在BDB中,XML文档存储在containers(容器)中,您可以使用XmlManager对象创建和管理这些containers(容器)。每个这样的对象可以一次打开多个containers(容器)。

每个containers(容器)可以容纳数百万个文档。对于放置在容器中的每个文档,容器包含所有文档数据,您为文档创建的任何元数据,以及为容器中的文档维护的任何索引。

XML文档可以通过以下两种方式之一存储在BDB XML容器中:

  • 文档全部存储。
    此方法最适用于较小的文档(即大小为兆字节的文档)。
  • 根据文档节点。
    • 存储为节点的文档被分解为它们各自的文档元素节点,然后每个这样的节点作为单独的记录存储在容器中。 除了每个这样的记录,BDB XML还存储所有节点属性和文本节点(如果有的话)。
    • 这种类型的存储最适合大型XML文档(大小超过1兆字节)

从API使用的角度来看,整个文档和节点存储容器之间的差异很小。

将文档放入容器后,我们就可以使用XQuery检索一个或多个文档。 我们还可以使用XQuery检索一个或多个文档的一个或多个部分。 使用XmlManager对象执行查询。 但是,查询本身将查询的范围限制为指定的容器或文档列表。

BDB XML支持整个XQuery规范。 我们可以在这里阅读规范:
http://www.w3.org/TR/xquery/

此外,由于XQuery是XPath 2.0的扩展,因此BDB XML也提供对该查询语言的完全支持。

最后,BDB XML提供了一个强大的文档修改工具,允许您轻松添加,删除或修改文档的选定部分。 这意味着您可以避免编写操作(例如)DOM树的修改代码–BDB XML可以为您处理所有这些细节。

1.1.2. 优点

BDB XML提供了一系列功能,使其比其他常见的XML存储机制更适合存储XML文档。 BDB XML提供高效索引查询的能力意味着它比仅仅在文件系统中存储XML数据更有效的存储机制。 并且因为BDB XML提供与Berkeley DB相同的事务保护,所以它比可能具有多个同时读取器和XML数据编写器的应用程序的文件系统更安全。

更重要的是,因为BDB XML以其本机格式存储XML数据,所以BDB XML享有相同的可扩展模式,这吸引了许多开发人员使用XML。 正是这种灵活性使得BDB XML成为比必须将XML数据转换为内部表和行的关系数据库产品更好的选择,从而将数据锁定到关系数据库模式中。

1.1.3. XML功能

实现BDB XML是为了符合XML,XML命名空间和XQuery工作草案的W3C标准。 此外,它还提供以下专门用于支持XML数据管理和查询的功能:

  • Containers(容器): 容器是包含一个或多个XML文档及其元数据和索引的单个文件。 我们可以使用容器来添加,删除和修改文档,以及管理索引。
  • Indices(索引):BDB XML索引极大地增强了针对相应XML数据集的查询性能。 BDB XML索引基于XML文档的结构,因此您可以根据文档中显示的节点以及这些节点上显示的数据声明索引。
    • 请注意,我们还可以针对元数据声明索引。
  • Queries(查询集):BDB XML查询使用XQuery 3.0语言执行。 XQuery是W3C草案规范http://www.w3.org/XML/Query
  • Query results(查询结果):BDB XML检索与给定XQuery查询匹配的文档。 BDB XML查询结果始终作为一组返回。 该集合可以包含匹配的文档,也可以包含来自那些匹配文档的一组值。
  • Storage:如果我们为文档使用Node节点级存储(请参阅容器类型),则BDB XML会自动将您的文档转码为Unicode UTF-8。 如果使用整个文档存储,则文档将以其使用的任何编码存储。 请注意,在任何一种情况下,您的文档必须使用Xerces支持的编码才能存储在BDB XML容器中。
    • 除了编码之外,文档以其原生格式存储(和检索),并保留所有空格。
  • Metadata attribute support(元数据属性支持): 存储在BDB XML中的每个文档都可以具有与之关联的元数据属性。 这允许信息与文档相关联,而不将该信息实际存储在文档中。 例如,元数据属性可以标识文档的上次访问和最后修改的时间戳。
  • Document modification(文档修改):BDB XML提供了一种用于修改文档的强大机制。 使用此机制,您可以添加,替换和删除文档中的节点。 此机制允许您修改元素和属性节点,以及处理指令和注解。

1.1.4. 数据库功能

除了特定于XML的功能之外,BDB XML还继承了Berkeley DB的许多功能,它允许BDB XML提供与Berkeley DB相同的快速,可靠和可扩展的数据库支持。 结果是BDB XML是必须管理XML数据的关键任务应用程序的理想候选者。

BDB XML从Berkeley DB继承的重要功能包括:

  • In-process data access(进程内数据访问):BDB XML的编译方式与任何库相同。 它在与应用程序相同的进程空间中运行。 结果是数据库支持占用空间小,而不需要传统的基于客户端/服务器的数据库实现所需的IPC开销。
  • 能够管理最大256 TB的数据库。
  • 数据库环境支持:BDB XML环境支持与Berkeley DB环境相同的所有功能,包括多个数据库,事务,死锁检测,锁定和页面控制以及加密。 特别是,这意味着BDB XML数据库可以与Berkeley DB数据库共享环境,从而允许应用程序优雅地使用它们。
  • 原子操作:可以使用BDB XML的事务支持将复杂的读写访问序列组合在一起形成单个原子操作。 事务中的所有读取和写入操作都会成功,或者都不会成功。
  • 独立的操作:在事务内执行的操作会查看所有XML文档,就好像当前没有其他事务在其上运行一样。
  • 可恢复:无论应用程序或系统随后如何失败,BDB XML的事务支持都可确保所有已提交的数据都可用。
  • 并发访问:通过结合使用BDB XML中内置的隔离机制,以及应用程序提供的死锁处理,多个线程和进程可以以安全的方式同时访问XML数据集。

1.1.5.语言和平台

官方BDB XML发行版提供了C ++,Java,Perl,Python,PHP和Tcl语言的库。 由于BDB XML在开源许可下可用,因此不断增加的第三方列表正在以非官方支持的语言提供BDB XML支持。

1.2 开始使用BDB XML

BDB XML作为Java jar文件存在,我们使用的方式与任何Java API集相同。
您可以从BDB XML产品页面下载BDB XML发行版
注意:
1.下载首先需要注册一个Oracle账号
2. 下载*.msi文件在这里插入图片描述
3. 默认安装目录 C:\Program Files\Oracle\Berkeley DB XML 6.1.4\jar
在这里插入图片描述
将db.jar 和dbxml.jar 两个依赖添加到自己项目的classpath中。

1.2.1 文档支持

Oracle Berkeley DB XML 官方英文文档

有关语言和平台支持的其他帮助和最新新闻,最好使用BDB XML论坛

1.2.2 类库依赖

BDB XML依赖于几个外部库。 结果是,随着其依赖关系的成熟,BDB XML的构建指令可能会在发行版之间发生变化。 因此,最好查看您的Berkeley DB XML版本附带的安装说明,以了解库的特定构建要求。 这些说明来自默认安装解压路径:

C:\Program Files\Oracle\Berkeley DB XML 6.1.4\dbxml\docs\index.html

也就是说,BDB XML目前依赖于以下库:

  • Berkeley DB:Berkeley DB为BDB XML提供底层数据库支持。 BDB XML支持Berkeley DB 4.3或更高版本。
  • Xerces:Xerces提供了BDB XML用于XML数据解析的DOM和SAX支持。 BDB XML需要Xerces 3.0.1或更高版本。
  • XQilla: 此库提供了BDB XML的XQuery支持。
  • ZLIB:该库用于支持BDB XML中的压缩。 请注意,此库是可选的,因为您可以在编译BDB XML时关闭zlib支持

请注意,BDB XML包附带了构建和使用BDB XML所需的所有库。

1.2.3 编译和运行BDB XML 应用程序

有关如何为特定平台/编译器构建和运行BDB XML应用程序的信息,请参阅BDB XML分发中docs目录中提供的构建说明。 或者,您可以在此处找到最新的构建说明:
http://docs.oracle.com/cd/E17276_01/html//toc.htm

猜你喜欢

转载自blog.csdn.net/hadues/article/details/87776778