我正在研究如何制作或至少生成和使用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
答案 0 :(得分:0)
" 结构化存储空间"表示您上传XML文档,XMLDB会将内容插入 relational 表。通过更新这些表可以非常有效地完成文档各部分的更新,您可以执行使用XPath无法实现的各种查询。 - 它是一种内置的ORM。
" 非结构化存储空间"会保持你的XML原样。您仍然可以选择在XPath上进行索引,因此可以快速检索大量XML的部分内容。使用Oracle 11,您还可以以二进制(解析)格式存储XML,这种格式会更快更小。
您可能希望查看有关选择最佳XMLType的Oracle White Paper 您的用例的存储选项。