pureXML应对新一代数据库技术挑战

来源:百度文库 编辑:神马文学网 时间:2024/04/29 17:37:52
许多年以来在数据库技术领域很少有重大的技术创新能够引起人们对整个数据库发展历程的回顾与反思。2006年DB2 9中推出的pureXML技术,对过去数十年来关系型数据库的最基本的数据组织方式进行了重大的创新,第一次让我们对数据库的历史,以及过去支撑其发展壮大的理论基础和外部挑战从新的角度进行审视。
今天我们很少去回顾数据库的历史,对于绝大多数IT技术人员,数据库等同于关系型数据库,数据则和表紧密联系。E-R模型几乎是我们描述世界的唯一方式,SQL语言是数据库信息访问处理的唯一手段。关系型数据库已经成为了一种宗教式的信仰,数据相关的所有理论问题似乎都已经解决。
然而历史的发展总是在我们不经意间产生转折,所有重大技术的产生及发展都有其生存的土壤。40年前数据库的诞生并不是关系型数据库,第一代的数据库第一次实现了数据管理与应用逻辑的分离,采用层次结构来描述数据,是层次型数据库(IMS)。第二代数据库奠基于上世纪70年代E.F Codd博士提出的关系型理论以及SQL语言的发明。实现了数据建模和数据操作处理的标准化,关系型数据库在其后的20多年的时间取得了长足的发展,得到了广泛的应用。技术的演进主要集中在性能、扩展性和安全性等方面的提升,其基本的理论框架和技术理念并没有大的变化。
与之相反,在过去的20多年里,IT产业发生了重大的变化和一系列技术及理念的创新。数据库所生存的外部土壤随着Internet以及在网络环境下IT系统互联互通相互协作的趋势,对信息管理技术提出了新的挑战。概括而言,有以下难以回避的重要问题:
多样化的世界-信息的复杂性
今天信息的复杂性与关系型数据库理论产生的时代已不可同日而语,信息的结构日益复杂,随着个性化服务等需求增长,信息的多样性和差异性都大大增加了,而关系型理论在管理信息复杂性方面的不足日益明显。
E-R模型本质上是一个二维的模型,通过一系列二维关系的组合来描述复杂实体对象,每个表所代表的所有实体在建模设计时没有差异性,即使只有一个实体拥有某种属性,也必须为其建立一个字段。因而在很多系统中,我们经常可以看到一张表有数百个字段,而对于每条记录,大多数字段都是空的。
如果这种个体间的差异性不是仅仅表现在属性上,而且涉及结构和关系,则需要为有差异的实体建立不同的表和对应关系。因而今天的许多业务系统往往需要几千张表,甚至数万张表。数据库的结构变得十分复杂,数据库中的信息变得难以理解。
多种信息应用方式-信息的可理解性
从某种意义上而言,今天业务系统数据库的信息是业务系统运行的副产物。数据库是为支撑特定业务应用的运行而设计,数据库中的数据也只被单一系统使用,所以很少考虑这些信息是否易于理解。然而,今天越来越多的系统需要相互协作、共享信息。信息的可读性、能否易于理解变得日益重要。关系型数据库在此方面存在较大不足,表中的数据不能自我描述,表与表之间的关系在数据中不能直接清晰地体现。从而使很多系统即使开放表结构,其他应用依然难以理解数据的关系和含义。
需求及业务的变化-信息的灵活性
随着IT系统进入社会生活的各个方面,信息不仅日益复杂,而且其需求内容和结构随着时间的推移也不断地产生变化.现实世界要求信息技术具有越来越高的灵活性和适应性.关系型数据理论所采用的是一种固定的建模方式,任何关系和属性一旦定义,就是固定的,难以随着需求的变化进行灵活的调整。

XML作为一种数据格式在上世纪90年代中期出现,一开始其主要目的是应用于系统间数据的交换。为便于数据交换,其设计包含了几个主要的特点,首先是采用自描述的标签式数据描述方式,数据本身描述自己的含义,从而使数据的可读性大大提高,十分易于人或程序理解。
另外,XML采用层次型(树型)的方式组织数据,通过层次关系体现出数据与数据之间的关系。层次模型能够比较清晰地描述复杂对象,并易于扩展。经过近10年的发展,XML已经成为数据交换的事实标准,国际上形成了很多行业性的XML技术标准,对信息技术产生很大的影响。
虽然XML设计之初主要应用于数据交换,但这种新型的数据组织方式却在应对信息的复杂性、可理解性和灵活性的挑战方面开启了新的道路,迎合了技术发展的方向和潮流。同时XML也模糊了传统上结构化数据和非结构化数据的严格分界线,对20余年来关系型数据库理论基础产生冲击。人们反思数据究竟应该是关系的还是层次化的,是单一的表格关系还是多样化的对象?
与此同时,在过去10余年中,另外一个重要的技术也对IT产生了重要的影响,这就是面向对象的技术。
面向对象技术鼓励设计者使用对象(而不是表)来思考数据,在面向对象的设计思想中,数据也是以对象的形式存在,层次结构是对数据对象最直接、最自然的体现。
而关系型数据库的理论与面向对象的思想并不匹配,E-R模型中没有对象的概念,在关系型数据库中实现对象的嵌套、对象的多样性很不直观,需要很大的代价。在关系理论中,数据应该被组织成规范的表——也就是数据应该按唯一的方式组织,使得程序员能够消除冗余,确保数据变化的一致性。这种设计技术的引入确保了关系表中的数据是一组独立的、通过键来关联数据。这种技术来自集合论的数学理论,但问题是集合论不能表达数据之间所有的关系和结构。
以规范的方式存储数据常常要求程序员在存入数据库之前分解对象,并且重新组织数据——就像在车库中存储车时,你把它的门、椅子、轮子等等分别卸下来存放。这不仅消耗资源,而且没有任何意义。

今天在应用领域,软件开发已经广泛采用了面向对象的设计思想和技术。而面向对象的数据库技术却迟迟未被市场接受。对象数据库出现时,关系型数据库供应商已经积聚了巨大的动力,并占领了大量市场份额。在标准的SQL接口下,访问关系型数据库的面向对象程序很容易写。相反,多数早期的对象数据完全不提供SQL接口,不适合任何查询应用程序。
XML技术的出现,以及相关国际标准的制定(如Xquery, SQL/XML)为数据库引入面向对象的技术提供了新的动力。现实外部世界的技术挑战,XML、面向对象技术与标准的成熟为新一代数据库的创新提供了条件。那么未来会是怎样呢?迎接新的技术变革我们准备好了吗?

今天,关系数据库推动各种规模的公司发展业务。尽管这些数据库是受欢迎而且重要的,但从长远来看,它们根本无法与用 XML 表示的半结构化(和分层)内容相比。我们无法忽略过去20年来业界在关系型数据库上的巨大投入(企业在关系数据和关系数据库管理系统 (RDBMS) 方面的投资高达万亿美元)。
因此,简单地将 RDBMS 替换成纯 XML 存储的做法并不可取,但我们更无法回避新技术的潮流和巨大价值。世界既可以是关系的,也可以是层次的,两种技术各自有其优势和局限性,因而容纳关系型和层次型两类模型的混合数据库就成为数据库发展的必然选择。

pureXML技术创新
ibm 的新一代数据库 DB2 9中第一次实现了关系型引擎与层次型引擎的结合,实现了混合数据库。IBM将此技术称为pureXML技术。
关系型数据库很早就已经开始考虑对XML的支持,但传统的技术一般还是基于关系型数据库的基本框架,用表之间的关系去模拟XML的层次结构.仅仅是对关系型数据的一些功能性增强,而非真正去适应XML所代表的层次型结构和面向对象的数据处理方法,因而难以发挥XML的灵活性、扩展性等方面的优势,大大限制了XML技术在数据库的应用.
关系数据库中的第一代 XML 支持是切分(或分解)文档以适应关系表格,或将文档原封不动地存储为字符或二进制大对象(CLOB 或 BLOB)。这两个方法中的任一种,都尝试将 XML 模型强制转换成关系模型。以大对象保存XML数据的方式,使得数据库无法理解XML中的信息内容,每次对XML中任何信息的访问都必须将整个文档取出,然后再分解获得相应的信息内容,效率和灵活性都存在极大的限制.
如果采用将XML文档中的数据项都拆分到很多个对应的关系型表中的方式,首先失去了XML灵活性的优势。由于XML的数据项与关系型表中字段的对应是固定的,所以XML的扩展和变化必然要求数据库中对应表的结构改变;另外数据对象拆分后,已经不再有物理上对象的概念,同样在功能和性能上都有很大的局限性。

与过去关系型数据库的XML增强功能不同,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 数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制。
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的技术应用及展望
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所代表的层次型数据结构和面向对象的设计方式,也可对关系型数据库的设计方式提供重要的补充。比如对于复杂对象的结构的建模,层次型的模型比关系型有明显的优势。以电子病历为例,下面为关系型建模的样例:

如果采用层次型的数据存储方式,则相对简单、直接。

在关系型的模型中对象与对象之间的嵌套关系比较难于描述,不对数据内在的顺序关系进行维护,只能通过增加附加的属性通过数据值进行管理。实体之间的差异性需要通过不同的表,这样对于同类信息,也可能要建立很多不同的表。

在同一个表中,如果每条记录的属性差异性很大,则需要通枚举的方式将各种可能出现的属性都建成表上的字段。如果采用pureXML技术则可大大方便对这类信息的管理。

以上仅是pureXML应用的简单示例,随着XML的标准在各个行业更为广泛深入地应用,以及Web 2.0等新兴技术领域的发展,我们相信这类技术将越来越多地应用到各类系统中。
数据库的历史经历了40年的历程,每一种技术都是随挑战应运而生。层次型数据库和关系型数据库在此过程中都曾为其发展起到重要的作用,而技术的发展在一次次潮流的循环往复中得到升华。为适应今天及未来的业务挑战,由层次模型与传统的关系型模型结合的混合数据库技术,为数据库的发展开辟了新的方向。IBM所推出的DB2 pureXML技术仅仅是新的变革的开始,正如关系型数据库曾经为IT产业的发展做出了举足轻重的贡献,我们有理由对pureXML所代表的新一代混合数据库技术充满期待!