SQL对象类型和Oracle的XMLType

时间:2014-10-14 19:00:36

标签: sql xml database oracle

我正在研究如何制作或至少生成和使用XML Schema,以便使用Oracle的XML DB及其附带的所有技术和优势(XPath,结构化存储等)

但是我有点困惑。显然你可以创建一个常规的对象类型,比如说......

CREATE TYPE my_obj AS OBJECT (
   num INTEGER,
   name VARCHAR2(32),
   ...
   );

但是我要说我正在尝试用XMLTypes替换对象类型。首先,要获得索引性能增益,您需要生成一个模式,或者自己编写一个模式。

这方面的一个完美示例是在Oracle的文档中,请参阅此链接中给出的结构之前的架构:

http://docs.oracle.com/cd/B14117_01/appdev.101/b10790/xdb03usg.htm#BABJFFEG

这对我想要的东西来说似乎很完美。嵌套插入被处理,面向对象的特性与XML模式限制属性等等。现在看看这个...

http://docs.oracle.com/cd/B14117_01/appdev.101/b10790/xdb03usg.htm#BABBGIED

该模式中有“注释”,引用“SQLTypes”,这可能是 - Oracle抽象数据类型。这是我很困惑的地方。如果您仍需要在Oracle系统中创建SQLTypes来实现它,那么为什么要通过额外的复杂性将存储转换为基于模式的XMLType存储?

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

1 个答案:

答案 0 :(得分:0)

" 结构化存储空间"表示您上传XML文档,XMLDB会将内容插入 relational 表。通过更新这些表可以非常有效地完成文档各部分的更新,您可以执行使用XPath无法实现的各种查询。 - 它是一种内置的ORM。

" 非结构化存储空间"会保持你的XML原样。您仍然可以选择在XPath上进行索引,因此可以快速检索大量XML的部分内容。使用Oracle 11,您还可以以二进制(解析)格式存储XML,这种格式会更快更小。

您可能希望查看有关选择最佳XMLType的Oracle White Paper 您的用例的存储选项。