关系式数据库中的XML

| | Comments (0)

xml_database.gif
从早期将XML转换为关系型数据表或大型对象,到今日转向原生XML数据型态,关系型数据库与XML之间的合作日益紧密。

10年前XML开始起草并向W3C提案,而在1998年后成为W3C的标准。事隔10年之后,XML已经随着网络应用日益普及,更在Web Services和SOA推波助澜下,可以预见XML的角色将会更形重要。

观察XML的重要发展趋势之一,是XML和关系型数据库的合流。IBM甫于6月在美国发表的新版本数据库DB2 9.0,便以原生XML数据型态和存取技术作为改版重点之一。事实上,微软于去年年底推出的SQL Server 2005同样也在XML上下了一番功夫,改变过去将XML转换成关系型数据表的存放方式,让开发人员可以用XML的方法使用储存在数据库中的XML文件或片段。其它如Oracle或Sybase等数据库也都具备在数据库中处理XML的技术和工具。由于XML部分技术仍在审议,因此每家数据库厂商除对标准的规格支持外,也各自发展不同的实作方式。

XML比关联性数据库更具弹性
就数据储存而言,关系型数据库已经是相当成熟的应用,从80年代商用产品出现至今,早已深入企业储存及数据应用的核心。相较之下, XML部分技术尚且在发展阶段,为什么关系型数据库竞相拥抱XML呢?

比较两者处理数据的方式,关系型数据库是透过详细定义和控制结构化数据的方式,达到数据增、删、查询的目的。因此它是以字段数据型态的精确定义,将数据以列(row)的方式一笔笔储存,再透过数据表之间的互相关联,建构出数据和数据结合后的复杂结果。企业在日常营运可以仰赖这种方式来储存数据,像是ERP、CRM这种应用程序产生的数据,都可以透过数据库来储存。

由于XML是以阶层式的树状结构作为储存架构,透过元素(Element)和属性(Attribute)来包含数据,再利用XML schema控制数据的正确性。这种架构特性,让XML随时可以新增字段,只要吻合XML schema的定义,字段便可以弹性置入。相对而言,关系型数据库一旦要修改字段,牵动的范围相当大,既会影响到过去的数据,与其它数据表的关系也必须一并思考在内,在变动的弹性上较小。由于企业内产生的数据并非总是这么规矩,一旦遇到非结构化的数据型态,关系型数据库便显得左右支绌,施展不开手脚。

此外,XML透过元素和属性描述数据,以及不需转译编码的文字型态,让它可以不受操作系统和应用程序的限制,在数据交换上相当容易进行,而且它的内容可以被人类解读之外,也能被机器或应用程序所辨读,微软在Vista或新版本的Office上,就大量应用XML作为应用程序的设定或文件的产出格式。

鉴于这些XML的优势,可以解决关系型数据库在应用及储存上的不足,因此传统数据库大厂纷纷实作出支持XML的方式,让企业的资料应用可以更为全面。

保留XML原生数据格式成为主流
关系型数据库在支持XML上大致有二种方式,一种是将XML拆解成关系型数据库的运作逻辑,另外一种则是保留XML原有的运作方式,后者又称之为原生XML数据库。

早期关系型数据库的作法趋向前者,将XML的树状结构数据拆解成数成关系型数据库的型态之后再存入数据库,一旦需要存取时,再透过自订支持XML查询的SQL语法将它组合、还原成XML文件。

另外一种原生型数据库的做法,则是保留阶层式的XML格式存进数据库,并且利用XML的树状节点特性,进行查询节点数据或新增、删除数据。

以SQL Server为例,在2000版本时,支持XML的方式便是将XML数据转成关系型数据的存放方式,无论是储存或查询都还是使用关系型引擎为主。而SQL Server 2005遵循W3C InfoSet规格,以特有的内部结构存放XML文件,并保存XML文件语意。新的XML技术可以透过变量或数据域位定义XML Schema,验证XML数据输入或更新时的正确性。此外可以利用业界标准XQuery进行查询,也引进XML索引技术,提升查询效率。

无独有偶,IBM的DB2 9.0也提出了pureXML的技术与概念,诉求原生的XML数据型态,一改过去作法,直接保留原来树状结构的数据型态,同时也支持XML索引功能和XQuery查询。此外,在查询技术上,DB2 9.0整合middle ware的技术,让开发人员可以忽略底层的数据是关系型数据库或XML,开发人员可以透过擅长的SQL或XQuery语言进行查询,取得所需的结果。

关系型数据库的成熟度加持XML
XML的阶层式特性协助关系型数据库在处理数据时更为全面,同样的,关系型数据库也能为XML带来好处。

对于XML的储存、使用而言,由于它本身是档案型的数据储存方式,在安全管理的机制上并没有良善的处理方式,一旦储存在数据库中,就可以享有数据库本身的安全机制。透过关系型数据库的查询语法,也可以和其它相关记录字段作交易管理,数据库的写入锁定机制还可以解决多人作业时写入冲突的问题。此外像是搜寻、更新、备份/还原、交易管理和记录稽核等,XML数据同样可以享受数据库带来的这些管理机制。过去需要程序开发人员劳心劳力之处,透过数据库本身的机制,就可以强化XML的体质。

储存为XML或关系型数据的裁量
XML与关系型数据库的合流,固然为企业数据带来更全面的应用方式,但对数据库开发人员而言,既然数据库同时可以储存关系型结构化的数据与XML阶层式的数据,如何裁量数据储存的方式,也形成了一个挑战。

由于XML具有跨平台、跨组织交换数据的特性,又具有阶层性的弹性结构关系,因此企业的数据如果有B2B的应用需求或跨系统的交易机会,XML是相当理想的储存方式。另外如果数据结构有经常变动的可能,关系型数据库显然较难胜任,XML就可取而代之。这些透过XML数据能作更有利的应用,那么储存为XML数据型态就势所必然。相较之下关系型数据库在技术的成熟度上,或者查询速度上都是更有效率的数据处理方式,如非必要,利用原来的结构化储存方式即可。

Leave a comment

About this Entry

This page contains a single entry by CcChen published on February 27, 2007 12:11 AM.

3.5G时代成为现实,国内3G依然未起步 was the previous entry in this blog.

log了5年网络,我得到了什么? is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Google Ads