pureXML的技术优势及展望

关系数据库中的第一代 XML 支持是切分(或分解)文档,以适应关系表格或将文档原封不动地存储为字符或二进制大对象(CLOB 或 BLOB)。这两个方法中的任一种都尝试将 XML 模型强制转换成关系模型。然而,这两种方法在功能和性能上都有很大的局限性。混合型模型将 XML 存储在类似于 DOM 的模型中。XML 数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制。

pureXML在以下领域具有显著优势:

存储:pureXML 技术将以"节点级"(而非"文档级")粒度存储 XML。在数据库中,物理存储层的主要存储单元是节点。每一页中都存在一个节点,而其它的节点则来自相同或不同的文档。每个节点不仅连结其父节点,还连结其子节点。因此,浏览到某个节点的父项、同级项或子项的效率都非常高,只要下一个引用的节点在同一页,其遍历速度将比指针的遍历速度还要快,无需重写整个文档即可增加或减少节点,或者将节点重新部署到其它页。

索引机制:管理着数百万的 XML 文档的 XML 应用程序并不罕见,因此要提供高查询性能就要为大量的 XML 数据编制索引。DB2 支持在 XML 列上建立路径特定的索引,因此元素和属性常用作谓词,且可以编制跨文档连接的索引。

新的 XML 值索引可有效评估XML 模式表达式,从而提高 XML 文档的查询性能。与传统的关系索引相比较,在关系索引中,索引键由用户指定一个或多个表格列组成,而 XML 值索引则使用特定的 XML 模式表达式(XPath 的子集,XPath 不包含谓词等等)来编制路径和 XML 文档(存储在一个 XML 列中)中的值的索引。如果值不是在文档中指定的,则该索引还可以在插入时通过模式来填充默认的属性和元素值。

创建索引时,您可以指定要编制索引的路径和索引类型。可以编制与存储在该列中的 XML 文档中的路径表达式以及路径表达式集匹配的任何节点的索引,而且该索引可以直接指向存储中的节点(它与其父节点和子节点连接以便于快速浏览)。索引条目并不是提供访问文档开头的索引,而是包含实际文档节点的位置信息。因此,该索引可以快速直接访问文档中的节点,并避免文档遍历。

查询:XQuery,即查询 XML 数据的一种新语言,用于处理不同的模式,包含诸如序列(而非 SQL 中的集)、多嵌套序列和稀疏属性。XQuery 还可以支持不同种类的模式以及动态的结构更改。

IBM 实施不包含独立的 XQuery 或 XPath 处理程序。基本的 XQuery 和 XPath 直接嵌入到查询引擎中。该查询编译器自身是双语的,带有两个可互操作的查询语言解析程序 – 一个用于 SQL,另一个用于 XQuery – 以产生查询图表模型(用于处理关系和 XML 数据)的新变量。因为中间的查询表达法是中性语言,XQuery、SQL 以及 XQuery 与 SQL的组合将编译成同样的中间表达法,经过同样的重写和转化,以类似的方式优化并产生类似的可执行代码。无论使用什么语言来指定查询设计,此过程都将产生最优的互操作查询设计。

因为这两个解析程序可以相互操作,所以您可以在同一语句中混合使用 SQL 和 XQuery,从而使搜索功能更强大:在 XML 文档中进行查询并从 SQL 返回其片断。

技术应用及展望

pureXML技术及混合型数据库的出现,超越了关系型数据库固有的局限性,为数据库的应用及开发开辟了新的领域。其意义不仅仅是提供了一种存储XML数据的更有效的方式,可用于使用XML数据的各类领域;同时,由于pureXML所代表的层次型数据组织方式,使得我们有了关系型和层次型两种数据建模的方法,即使是对于传统非XML的关系型数据,在某些情况下将传统关系型的数据转化为层次型存储也将带来巨大的业务价值。

从对现有XML数据管理的应用看,pureXML技术的价值是非常明显的。如在书籍出版领域,W3C已经制定了各类数据的规范,今天很多这个领域的数据就是以XML的形式存在。但是如何提供有效的存储方式,以及准确高效的数据查询方式却始终是对关系型数据库的一个挑战。

以图书为例,任何书籍的信息有部分结构化的成分,但是书籍内容的差异性太大,很难用一种统一的结构化的体系进行描述。另一方面,基于各类书籍文章的结构,提供精确的信息查询和搜索具有重要的应用价值。传统关系型数据库很难对书籍XML数据建模,更难以提供准确的查询和搜索。往往只能用全文检索的模式提供一些简单的功能。而采用pureXML技术,任何书籍的XML信息可以直接存储在数据库中,无需复杂建模。由于XML的自描述能力,一旦数据以XML对象存储,就可以提供精确的查询和搜索。举个简单例子,对于一本300页的书,全文检索只能返回其中是否有你查询的内容,无法准确定位在哪一章、哪一节、哪一页,其实用性很弱。而通过pureXML的Xquery进行查询,可以准确定位到最细的粒度,而且可对指定范围进行搜索。

在广泛使用XML的信息交换领域,pureXML 能够很大程度上降低数据模型设计的复杂性。无需将XML每个数据项的信息都映射到关系型表的字段上,减少了很多不必要的加工处理过程。另外,XML所具有的扩展性和灵活性的优势可得到充分的发挥。数据层的存储模式不再与数据交换本身的内容是紧密耦合的关系。基于pureXML可设计相对通用的数据交换的存储模式,而且可以方便地适应数据标准的调整和变化。这一点在很多监管类报表信息收集(如XBRL)上有重要的应用价值。

即使对于不涉及任何XML数据的应用,pureXML所代表的层次型数据结构和面向对象的设计方式,也可对关系型数据库的设计方式提供重要的补充。比如对于复杂对象的结构的建模,层次型的模型比关系型有明显的优势。