如何理解Oracle11g中的XML
3个回答
展开全部
首先要明白:XML在互联网应用领域被作为标准广泛地应用于数据交换和保存。XML在数据存储方面有一个明显的优点:那就是可以直接将逻辑关系编写在XML文件中。
其次,在oracle 8i以及后期的版本中,开始提供了xmldom方式来实现对XML格式数据的处理,但在实际的业务信息系统应用开发中,更多的都习惯在程序中(如java,.net等开发语言提供的xml组件)来解析XML数据。
XML数据可以为字符串(适合处理较小的xml数据),Oracle 11g提供了二元性的XML支持,意即在实际使用过程中,用户既可以将XML嵌入到PL/SQL中使用,也可以将PL/SQL整合到XML中使用。
将XML融入主流的数据库引擎,首先要做到的一点是如何将现有的关系型数据输出成XML格式。现在已经有一些数据库可以做到将SQL查询结果直接转换成XML形式,这样应用程序就可以直接利用这些XML文件结果作为内容输出源了 。
其实将XML格式的文档导入到数据库中并不困难,因为XML文件具有内在的逻辑和规范,困难之处在于将千差万别的文档转换成XML格式的文件。当然,数据的查询工作也需要做出相应的改变,在支持XML的数据库当中单纯的依靠SQL查询已经难以保证效率。
有两条截然不同的道路可以实现传统数据库与XML的融合,一种方式是数据库厂商可以编写更多的转换器和工具以实现传统数据库实体与XML数据的交互,即将XML数据作为各种数据表现形式中的一种来看待;另一种方式就是彻底的在数据库引擎底层纳入对XML数据的支持,甚至基于XML来设计和构建数据库产品。不知道有多少数据库厂商有勇气采取后一种策略,当然这也取决于XML在数据存储和表现领域会成长到什么程度。
其次,在oracle 8i以及后期的版本中,开始提供了xmldom方式来实现对XML格式数据的处理,但在实际的业务信息系统应用开发中,更多的都习惯在程序中(如java,.net等开发语言提供的xml组件)来解析XML数据。
XML数据可以为字符串(适合处理较小的xml数据),Oracle 11g提供了二元性的XML支持,意即在实际使用过程中,用户既可以将XML嵌入到PL/SQL中使用,也可以将PL/SQL整合到XML中使用。
将XML融入主流的数据库引擎,首先要做到的一点是如何将现有的关系型数据输出成XML格式。现在已经有一些数据库可以做到将SQL查询结果直接转换成XML形式,这样应用程序就可以直接利用这些XML文件结果作为内容输出源了 。
其实将XML格式的文档导入到数据库中并不困难,因为XML文件具有内在的逻辑和规范,困难之处在于将千差万别的文档转换成XML格式的文件。当然,数据的查询工作也需要做出相应的改变,在支持XML的数据库当中单纯的依靠SQL查询已经难以保证效率。
有两条截然不同的道路可以实现传统数据库与XML的融合,一种方式是数据库厂商可以编写更多的转换器和工具以实现传统数据库实体与XML数据的交互,即将XML数据作为各种数据表现形式中的一种来看待;另一种方式就是彻底的在数据库引擎底层纳入对XML数据的支持,甚至基于XML来设计和构建数据库产品。不知道有多少数据库厂商有勇气采取后一种策略,当然这也取决于XML在数据存储和表现领域会成长到什么程度。
展开全部
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库。
对于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库。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
XML其实是一种格式数据,通俗点讲:就是一个xxxx.XML的文件,以XML特定的格式存储数据,再将这个XML存储到数据库中,导出数据的时候以XML文件格式导出,类似于XXX.TXT一样,将一些数据写到TXT中,以一个文本的形式储存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询