扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:IBM 刘晶炜 来源:论坛整理 2007年12月15日
关键字: DB2
在本页阅读全文(共4页)
IBM 的新一代数据库 DB2 9中第一次实现了关系型引擎与层次型引擎的结合,实现了混合数据库。IBM将此技术称为pureXML技术.
关系型数据库很早就已经开始考虑对XML的支持,但传统的技术一般还是基于关系型数据库的基本框架,用表之间的关系去模拟XML的层次结构.仅仅是对关系型数据的一些功能性增强,而非真正去适应XML所代表的层次型结构和面向对象的数据处理方法,因而难以发挥XML的灵活性、扩展性等方面的优势,大大限制了XML技术在数据库的应用.
关系数据库中的第一代 XML 支持是切分(或分解)文档以适应关系表格或将文档原封不动地存储为字符或二进制大对象(CLOB 或 BLOB)。这两个方法中的任一种都尝试将 XML 模型强制转换成关系模型。以大对象保存XML数据的方式使得数据库无法理解XMl中的信息内容,每次对XML中任何信息的访问都必须将整个文档取出,然后再分解获得相应的信息内容,效率和灵活性都存在极大的限制.
如果采用将XML文档中的数据项都拆分到很多个对应的关系型表中的方式,首先失去了XML灵活性的优势.由于XML的数据项与关系型表中字段的对应是固定的,所以XML的扩展和变化必然要求数据库中对应表的结构改变,另外数据对象拆分后,已经不再有物理上对象的概念,同样在功能和性能上都有很大的局限性。
与过去关系型数据库的XML增强功能不同,DB2 9中的pureXML技术第一次真正意义上提供了一种与XML层次型结构相匹配的层次型存储方式和相对应的操作访问方式.
在pureXML中,XML 作为一种新的数据类型。几乎每个 DB2 组件、工具和实用程序都已得到增强,以识别和处理这种新数据类型。新的存储模式以解析后的注释树形式(类似于 XML 文档对象模型 (DOM))保留 XML,它与关系数据存储分开。
DB2 的新 XML 关系存储模型
在两种数据存储(关系和 XML)的顶部是一个混合型数据库引擎。该引擎可以处理 XQuery、Xpath、SQL和 SQL/XML。该引擎采用带有 SQL 和 XQuery 解析程序的双语查询编译器。因此开发人员可以根据具体情况更适用的原则使用任何一种语言(或同时使用这两种语言)。使用混合型 DB2 ,您可以根据信息管理的需要来灵活地选择数据的存储组织模式和访问方法,实现二者之间灵活的转换。
在数据库管理系统中存储关系和 XML 数据可提供灵活性和一贯快速的性能,因为数据库管理系统在每一个级别(从客户端到引擎,再到磁盘)都了解和支持这两种模式。XML 数据继承了 DB2 为关系数据提供的相同的备份与恢复、优化、可伸缩性和高可用性。最终,统一的 XML/关系数据库通过避免对分开存储的 XML 数据和关系数据进行集成,简化了业务过程。
pureXML的优点
关系数据库中的第一代 XML 支持是切分(或分解)文档以适应关系表格或将文档原封不动地存储为字符或二进制大对象(CLOB 或 BLOB)。这两个方法中的任一种都尝试将 XML 模型强制转换成关系模型。然而,这两种方法在功能和性能上都有很大的局限性。混合型模型将 XML 存储在类似于 DOM 的模型中。XML 数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制。
DB2 pureXML在以下领域具有显著优势:
存储:DB2 的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 格式表示 XML数据。
混合型系统并不要求所有的数据都表示成关系数据,也不要求所有数据都使用 XML 格式;相反,使用它您可以为适当的任务选择适当的模型。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者