2008年8月5日星期二

ORACLE XML DB 系列(2)

ORACLE XML DB概述

XML DB实际上并不是一个独立的数据库,在企业版,标准般,个人版和快捷版数据库中XML DB都是可选的功能。也就是说安装不安装XDB对数据库的核心功能没什么影响。跟ORACLE SPATIAL,ORACLE TEXT一样,XML DB实际上是建立在数据库之上的应用程序,只是在这里我们用关系模型来模拟了树状模型。因此数据库内核实际上并不知道有XML这样的数据类型存在。


对于XML数据来说,模拟的难点在于它是树状的结构,而RDBMS都是关系型的,一种方案是将XML存储成CLOB数据,而另一种解决方案是使用对象表来解决问题。ORACLE采取的也是这两种解决方案,在建立含有XML的数据表时,我们可以指定该XMLTYPE字段是存储成CLOB还是存储成对象表。使用前者存储的优点在于存储的XML数据的可变性,而后者则在检索速度上更胜一筹。主要原因是使用CLOB方式,XML会被当成大对象来存储,不需要符合特定的格式,但是对象表就不同。在检索速度上,由于以对象表存储的方式可以很容易的建立节点级的索引(实际上就是对象表的索引),因此在按节点检索时,速度会快一些。


还需要在概念上明确的是结构化数据和非结构化数据。结构话数据是指基于XML
SCHEMA 的数据,而非结构化数据则正好相反。在ORACLE中建立数据表的时候,我们可以指定数据表中的XMLTYPE字段是不是基于SCHEMA 的。如果该字段是基于SCHEMA的,那么在数据入库的时候,ORACLE会对XML数据进行语法检查,验证其是否符合指定的SCHEMA。


当然,最重要的概念还是XMLTYPE本身。从字面看,XMLTYPE就是一个ORACLE的内置TYPE,只是这个TYPE是专门为XML数据量身定做的。在SYS帐户下可以看见XMLTYPE的定义,当然还有一大堆我们可以用来操纵XML的函数。


除此之外ORACLE还在数据库里提供了XDB帐户,这个帐户是我们使用的很多函数的所有者,当然,还有W3C的一些标准SCHEMA之类的东西。使用 XDB提供的程序,我们可以在ORACLE数据库中打造一个WEB SERVICE。另外ORACLE还有一个可以基于文件来访问的XML库。

没有评论: