0
点赞
收藏
分享

微信扫一扫

Binary XML Data Storage in 11g


Oracle 11g 新功能提示
在以前版本的 Oracle 中,有两个可扩展标记语言 (XML) 存储选项可用:非结构化或 CLOB,以及存储和结构化或基于架构。在 Oracle 11g 中,二进制 XML 已添加为新的存储选项。
非结构化存储将 XML 文档视为大型对象,并将该文件存储在数据库中,而不知道内容。此选项具有最佳的插入和删除性能,但关系访问和磁盘空间消耗最差。
结构化存储需要事先注册 XML 架构,并将 XML 文档插入到对象关系结构中。此存储选项具有最佳的查询性能和磁盘空间消耗,但在初始插入期间开销最高。造成这种高开销的原因是,在插入过程中,文档被切碎并存储到在注册 XML 架构期间创建的数据库对象中。
二进制 XML 是 11g 中引入的新存储选项,它以专门为 XML 设计的解析后二进制格式存储文档。对于大多数 XML 要求,此选项可能是最佳选择。附加的二进制存储提供与非结构化存储相当的插入性能,但查询和磁盘空间性能可与结构化存储相媲美。与结构化存储不同,二进制 XML 的优点不依赖于架构注册。这是因为可以选择注册二进制 XML 架构以具有基于架构的二进制 XML 表。但是,仍然存在一个限制,即注册的 XML 架构不能在二进制 XML 和对象关系表之间共享。
在选择如何管理 XML 内容时,最佳策略是首先尝试二进制存储选项并评估性能是否可接受。如果关系访问性能不可接受,请尝试结构化存储选项。首选二进制存储的原因是它易于使用,并且需要最少的维护,因为不需要架构注册。二进制 XML 类型列也更容易在非 XMLType 表中使用,因为性能不依赖于索引的创建。
要使用二进制存储,必须使用以下语法创建 XML 表:
SQL>创建表 BINARY_XML_TABLE XML类型 XML类型 存储为二进制 XML
2 /
创建表。
对于订单事务
,请考虑以下 XML 文档:
test_document.xml<?xml version=“1.0”?>
<order>
<客户>
<名称>客户 ABC</名称>
<ccNum>1234123412341234</ccnum>
</客户>
<orderlines>
<项>
<item_id>108</item_id>
<item_name>ORACLE 11G 新功能书 ED1.0</item_name>
<数量>1</数量>
<单元价格>$38.00</单价>
</项>
<项>
<item_id>109</item_id>
<item_name>ORACLE 调谐指南 ED1.0</item_name>
<数量>1</量>
<单价> $22.00</单价>
</项目>
</订单>
<接收>
<小计>$60.00&小计>
<销售税> 4.80 美元</销售税>
<总计> 64.8<0 美元/总计>
</收据>
</订单>
使用以下语法将本文档插入到二进制 XML 表中:
SQL>插入到BINARY_XML_TABLE值中(XMLTYPE(BFILENAME(“XML_DIR”,“test_document.xml”),nls_charset_id(“AL32UTF8”)));
已创建 1 行。
插入后,文档立即可用于关系访问。
选择
提取值(值(b),“/订单/客户/名称”) customer_name,
提取值(值),“/项目/item_id”) item_id,
提取值(值),“/项目/数量”,
提取值(值),“/项目/数量”)unit_price,
提取值(b),“/订单/收据/小计”)小计,
提取值(b),“/订单/收据/销售税”)salesTax,
提取值(值(b),“/订单/收货/总计”)
来自
BINARY_XML_TABLE a
,表(XML 序列(提取(object_value,“/订单”)) b
,表(XML 序列(提取(值(b),“/订单/订单行”)) c
,表(XML 序列(提取(值(c),“/订单行/项目”))d;
CUSTOMER_NAME ITEM_ID数量 UNIT_PRICE 小计 SALESTAX 总计 -------------- ------- -------- ---------- -------- -------- ------

客户 ABC 108 1 $38.00 $60.00 $4.80 $64.80
客户 ABC 109 1 $22.00 $60.00 $4.80 $64.80
如上所述,对二进制 XML 表进行关系访问的语法与其他存储选项不同。

 

参考至:http://www.dba-oracle.com/t_11g_new_binary_xlm_storage.htm

如有错误,欢迎指正


举报

相关推荐

0 条评论