Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL对象类型和Oracle';s XML类型_Sql_Xml_Database_Oracle - Fatal编程技术网

SQL对象类型和Oracle';s XML类型

SQL对象类型和Oracle';s XML类型,sql,xml,database,oracle,Sql,Xml,Database,Oracle,我正在研究如何创建或至少生成和使用XML模式,以便使用Oracle的XML数据库以及它附带的所有技术和好处(XPath、结构化存储等) 不过我有点困惑。很明显,你可以创建一个常规的对象类型,比如说 CREATE TYPE my_obj AS OBJECT ( num INTEGER, name VARCHAR2(32), ... ); 但假设我试图用XMLTypes替换对象类型。首先,为了获得索引性能的提高,您需要生成一个模式,或者自己编写一个模式 Oracle文档中有

我正在研究如何创建或至少生成和使用XML模式,以便使用Oracle的XML数据库以及它附带的所有技术和好处(XPath、结构化存储等)

不过我有点困惑。很明显,你可以创建一个常规的对象类型,比如说

CREATE TYPE my_obj AS OBJECT (
   num INTEGER,
   name VARCHAR2(32),
   ...
   );
但假设我试图用XMLTypes替换对象类型。首先,为了获得索引性能的提高,您需要生成一个模式,或者自己编写一个模式

Oracle文档中有一个很好的例子,请参阅此链接中给出的结构前面的模式:

这似乎正是我想要的。嵌套的插入被处理,面向对象的特性与XML模式限制属性一起存在,等等

该模式中有“注释”,引用了“SQLTypes”,大概是Oracle抽象数据类型。这就是我困惑的地方。如果仍然需要在Oracle系统中创建SQLTypes来实现存储,那么为什么还要经历额外的复杂性来将存储转换为基于模式的XMLType存储呢

请参见此处的Oracle XML模式自动生成示例:
http://roman-oblak.blogspot.com/2010/01/changing-xsd-schema-to-oracle-xsd.html

结构化存储”表示您上载一个XML文档,XMLDB将把内容插入到关系表中。通过更新这些表,可以非常高效地更新文档的某些部分,并且可以执行使用XPath无法执行的各种查询。-这是一种内置的ORM

非结构化存储”“将使XML保持原样。您仍然可以选择在XPath上建立索引,因此可以快速检索大型XML的部分内容。使用Oracle11,您还可以以二进制(解析)格式存储XML,这将更快、更小

您可能想回顾一下关于选择最佳XMLType的内容 适用于您的用例的存储选项