SQL+XML=数据库的未来?

日期: 2008-06-10 作者:艾艾 来源:TechTarget中国

  当关系型数据库的始祖—IBM公司在1970年首次提出著名的关系型数据库(Rrelational Database Management System,RDMS)模型的那一刻起,关系型数据库一直扮演着最为本位的角色—从数据中提炼出有用的信息,再从这些信息中找寻更多价值。


  30多年过去了,数据量已经从原来的KB级、GB级迅速呈TB级增长,数据类型也不知扩大了多少倍。在这种情况下,关系型数据库能否承载这些海量的、结构异常复杂的信息环境?


  本刊在2005年第4期杂志所刊登的《下一代数据库谁执牛耳》一文,试图通过对当前主流关系型数据库产品—IBM DB2、甲骨文Oracle、微软SQL Server、Sybase ASE在技术上的简要评析,来预测下一代数据库的基本构架。而当时,XML还仅仅是每个产品的一个功能而已。


  之后,Sybase、微软先后推出了历经五年研发的新版数据库,加上之前Oracle 10g所特有的“网格技术”,以及IBM DB2 8.2所强调的对结构化、半结构化数据处理能力,在验证了本刊“大胆预测”的同时,也使得我们对下一代数据库的长相有了更为清晰的认识。但是,我们始终不能肯定的是,具备怎样功能才称得上是真正的下一代数据库。


  SQL是数据库的语言,SQL数据库是关系型数据库的通俗叫法。它所存放的是事先结构严格定义好的数据。对于非结构化、半结构化数据,就显得很无奈了。用户的需求,使得那些数据库的研发者们开始寻求这种突破。


  两次值得借鉴的探索


  回顾一下在过去30多年关系型数据库的发展历程,有两个概念值得关注—面向对象的关系型数据库和XML数据库。


  美国Stonebraker教授所写的一本名为《面向对象的关系型数据库系统:未来的巨浪》书中提到:



  • 纯关系型数据库系统市场已经逐渐饱和;

  • 纯面向对象型数据库系统除一些特殊用途外,市场极其狭小;

  • 面向对象的关系型数据库才是新型数据库系统的发展方向。

  Stonebraker强调,面向对象的关系型数据库的基本思想是不放弃已经非常成功的查询语言SQL,而直接在SQL语言上进行功能扩展。此后在1999年发表的SQL3标准正是引进面向对象的关系型数据库的许多内容。


  Stonebraker的思想引起了业内极大关注。然而,在之后数年的发展发现,面向对象的关系型数据库系统产品的市场发展的情况并不理想—理论上的完美性并没有带来市场的热烈反应。


  1998年,新的基于互联网的语言—XML(Extensible Markup Language,可扩展标记语言)出现,由于它具有标记不同字段(Field)的能力,使得搜索变得更简单和动态化,从而把企业准备扔进废纸篓的文件变成了进行数据挖掘,从而加以进一步利用的宝藏。一夜之间,千差万别、各种标准存在的数据,成为了企业最有意义的资源。而信息资源的概念,也因为XML的发展而成为可能。


  XML标准和文档的出现为关系数据库出了一道难题,以访问二维表数据为主的SQL和XML的结合就成了一条中和之路。这二者的融合,促成了XML数据库的诞生,而这条路又经过了漫漫的发展和完善道路。


  由于XML数据库存放的是XML文本,只要是格式良好(Well-Formed)的XML文本,都可以随时添加到数据库里去。而XML文本本身不仅仅包含了内容还涵盖结构信息,正所谓一举两得。这就是XML数据库可以存取半结构数据的原理所在。
 
  可以说,XML数据库兼有关系数据库和面向对象数据库两者的优势。


  即便如此,从第一个XML数据库出现到今,在数据库市场所占份额仍不尽如人意。毕竟,XML技术本身发展还未完善,从1998年到今天才6年,而关系数据库的发展已经有30年以上的历史了。


  那么,当以访问二维表数据为主的SQL有些“力不从心”的时候,谁将会主宰数据库的未来?


  XML数据库浮出水面


  有关XML的数据库曾经有两种不同的定义。一种定义认为,只有以XML原始格式存储XML的数据库才能称为XML数据库;另一个定义则认为,只要能存入和检出XML,且它本身又是一个数据库,那它就是一个XML数据库,而不必考虑数据是怎样存入的。可以这样理解:凡内部不是以XML格式存储的XML数据库,叫做 “XML- enabled数据库”;如果内部是以XML格式存储数据的数据库,就称为“Native-XML数据库”。


  而就在7月14日,IBM发布新一代数据库—DB29,这是一种混合型的数据库,结合了关系型数据库和XML数据库二者的优势。


  针对XML还是SQL主宰数据库未来的问题,IBM数据库专家王云院士所给出的答案是:“主宰数据库未来的一定不是哪一家厂商,而是所有能够将SQL与XML技术科学地融为一体的产品。”


  面向对象的关系型数据库和XML数据库之所以不能成功,其最大的原因就是不能将用户原有的结构化数据的应用完全继承下来。


  尤其是面向对象数据库,企图用新型数据库系统来取代现有的数据库系统。这对许多已经运用数据库系统多年并积累了大量工作数据的客户,尤其是大客户来说,是无法承受新旧数据间的转换而带来的巨大工作量及巨额开支的。


  另外,面向对象的关系型数据库系统使查询语言变得极其复杂,从而使得无论是数据库的开发商家还是应用客户都视其复杂的应用技术为畏途。


  XML数据库也是如此。早在2002年6月,正式公布的XML数据库产品就已经有28种之多,其功能也各具特色。在支持对XML文档管理的同时,不同程度地增加了一些附加功能。只是到现在,存活下来的还有几个?


  其实,从目前用户的应用现状来看,原有的数据中结构化数据仍然是最为常用的那一部分。这样,关系型数据库在很长一段时间里仍然会发挥重要的作用。与此同时,我们不能不看到另外一个现实:如何处理现有数据中占有85%以上比例的非结构化、半结构化数据?


  尽管XML数据库离用户的需求还有一段差距。毕竟,它的出现,也给IBM、甲骨文、微软、Sybase很大启示。


  主流厂商加大XML支持力度


  目前,许多主流的关系数据库厂商都已经把XML支持结合到了相关产品中,或者提供可在其数据库中使用XML的工具:即或者“XML- enabled数据库”、或者“Native-XML数据库”。


  2001年,Sybase ASE从12.0开入就加入了XML功能,经过多年的应用, ASE数据库对XML的支持日臻成熟和完善。


  同时,ASE强化了文本搜索功能—可同时支持XPATH/XQUERY和 SQLX两种方式,进一步扩展了XML的功能。同时,该软件还对文件系统中XML内容进行管理。这样,用户可以使用已有的数据库投资处理XML内容,而不需要使用专门的或定制的XML处理引擎,减少了对外部XML资源管理库的需求。


  IBM也从DB2 7.0开始提供了对XML的支持。


  也是从7.0开始,DB2提供DB2 XML Extender在XML文档和DB2之间进行数据转换,以及XML文档与DB2表格之间的映射。


  DB29则提供了对原生XML文档的全面支持,它以树型存储方式来对待XML数据,保持XML数据的层次结构和灵活性,同时还支持传统的关系型数据。


  甲骨文也早在2000年推出Oracle9i第二版时,就将它定义为一个“完全一体化的XML和关系数库”。


  甲骨文提供的Java版本的XML SQL实用工具把XML文档元素建模为一组嵌套的表,通过使用甲骨文对象数据类型把对象引用链从数据库转换到XML文档的层次结构中,支持向数据库发送查询语句并返回XML文档,也可以将XML文档存储到其对象关系数据库中。


  SQL Server通过扩展SQL语法,使得能够把关系数据库中检索得到的数据包装成XML文档形式,并将XML数据以内部格式存储为大二进制对象。


  SQL Server6.5和7.0也进行了XML扩充,后来又加入XML输出选项,用以向其他系统传送信息。


  SQL Server 2005还引入了一种称为XML的本机数据类型,允许表中有一个或多个XML类型的列,提供了XML数据操纵语言(对Xquery语言的一个扩展)对XML数据内容进行更新以及建立索引。


  此外,在SQL Server 2005中,加入了Xquery和本地XML数据类型等改进特性,以帮助企业实现内部系统与外部系统之间的无缝连接。


  开源关系数据库Mysql在5.1版本中也提供了两个内部函数ExtractValue和updateXML,可以对XML文档的查询和更新操作,实现非常简单,功能也相对要弱很多。


  在Native-XML数据库方面,第一个可能也是最有名的商用native-XML数据库是Software AG公司开发的Tamino。而其他native-XML数据库包括dbXML、eXcelon和 XHive/DB,分别由美国的dbXML Group LLC公司、 eXcelon公司和荷兰的The Connection Factory公司研制。


  从边缘到核心


  尽管有如此多与XML相关的数据库,但是数据库所具备的XML功能并没有与SQL得到完美结合。用户需要一个能够将SQL和XML真正融合在一起的数据库,这样才能够更好地为多种数据格式服务。不仅利用旧有的非XML格式的数据资源,又能够利用新型的XML数据资源。就像IBM公司的刘晶炜所说,就算XML数据库是未来的发展趋势,用户也需要一个从SQL到XML的过渡期。


  因此,IBM的DB2 9,弥补了传统数据库“重存储,轻利用”的不足,全面支持原生XML文档,可谓DB2的一个亮点。


  由于DB2.9种有两种数据库引擎:关系型数据库的处理引擎和纯XML处理引擎,这种从“XML-Enabled”到“纯XML+关系型数据库”引擎,以树型存储方式来对待XML数据,保证了XML数据与生俱来的层次结构和灵活性,满足了企业用户对呈几何量级增长的XML数据的存储需要。同时,DB2 9还支持传统的关系型数据,使当前的关系型数据库用户在朝XML数据库转移的过程中有一个平稳的过渡期。


  在DB2 9中,XML从边缘进入核心的一个具体表现是对于SOA的支持。对此,IBM王云院士的解释是这样的:“SOA的核心思想是在整合企业应用的基础上,提供针对核心业务的服务,这是一种灵活、开放的架构体系。而要实现SOA,一个核心难点是顺畅解决不同应用间的数据交换问题。XML以其可扩展性、与平台无关性和层次结构等特性,成为构建SOA时不同应用间进行数据交换的主流语言。而与此同时,如何存储和管理几何量级的XML数据、直接支持原生XML文档成为SOA构建效率和质量的关键。”


  在这样的背景下,DB2 9全面支持原生XML,重新定义了信息存储和访问的方式,帮助企业将信息从分散式仓储中解放出来,并使信息成为业务的战略资本(而非障碍),这必将简化部署SOA的难度。


  对此,招商银行信息中心总经理华敏这样理解:“DB2 9可以在XML内容上建索引,能显著提高查询性能;同时支持SQL查询和XQuery查询,大大降低应用中的处理难度。可以肯定地说这将对我行应用XML技术提供有力支持。”


  XML被整合在IBM DB2.9的各个级别上


  XML被整合在IBM DB2.9的各个级别上,更加核心地支持了SOA/XML.


  链接


  RDBMS的前世、今生与来世


  RDBMS(关系型数据库管理系统)已经有将近40年的发展历史,其发展过程也经历了一番坎坷,现在已经相对成熟,其将来又会如何?


  前关系型数据库系统


  数据库系统并没有一个完整和坚固的数学理论基础,数据库产品直接按实际应用的要求来设计,产品以层次型数据库系统为主。业界把这段时期的产品称为“前关系型数据库系统(pre-relational database)”时期。


  关系型数据库系统


  1970年,IBM公司的研究员Codd发表了题为《大型数据库的数据关系模型》的文章。从此,数据库系统的发展进入了“关系型数据库系统(relational database)”时期。


  关系型数据库系统以关系代数为理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善。代表产品有Oracle、IBM DB2、MS SQL Server以及Sybase ASE等。


  Nativ-XML数据库系统


  上个世纪九十年代末,随着德国Software AG公司宣布世界上第一个Native-XML数据库产品—Tamino问世,数据库系统进入了一个新的发展时期。


  后关系型数据库


  其实,早在上个世纪七十年代后期,人们就已经开始涉足了后关系型数据库(Post-relational database),只是当时并没有被明确称为“后关系型数据库”。


  一位名为P.Chen的人在1976年就提出了实体-关系数据模型。由于当时还是网状数据库、层次数据库和关系数据库并存的时候,P.Chen提出的数据库概念,只是希望能将传统的3种模型的数据库统一到实体-关系数据模型上。


  后关系型数据库也只被作为一种概念型的模型而使用。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

艾艾
艾艾

相关推荐