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数据型态就势所必然。相较之下关系型数据库在技术的成熟度上,或者查询速度上都是更有效率的数据处理方式,如非必要,利用原来的结构化储存方式即可。