要理解XML shredding的概念,可以参考下面的图示。在这个例子中,XML文档中包含了客户名称、地址以及电话等信息,它们被映射到两个关系表当中。文档可以包含多个电话元素,因为客户与电话是一对多的关系(手机、家庭座机、办公室座机)。所以,电话号码就被拆分到一个单独的表当中。
在关系型目标架构中,每一个重复的元素(如电话信息)都可以分配到额外的一个表当中。假设客户信息还包含多个Email地址、多个账户、最近订单列表以及每个订单对应的多种商品等重复元素,那么关系型目标架构中的表数量将急剧增加。将XML文档拆分成数量巨大的表,你的逻辑业务对象中会产生复杂的碎片,直接导致应用程序开发的难度与出错率提……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
要理解XML shredding的概念,可以参考下面的图示。在这个例子中,XML文档中包含了客户名称、地址以及电话等信息,它们被映射到两个关系表当中。文档可以包含多个电话元素,因为客户与电话是一对多的关系(手机、家庭座机、办公室座机)。所以,电话号码就被拆分到一个单独的表当中。在关系型目标架构中,每一个重复的元素(如电话信息)都可以分配到额外的一个表当中。假设客户信息还包含多个Email地址、多个账户、最近订单列表以及每个订单对应的多种商品等重复元素,那么关系型目标架构中的表数量将急剧增加。将XML文档拆分成数量巨大的表,你的逻辑业务对象中会产生复杂的碎片,直接导致应用程序开发的难度与出错率提升。而查询拆分的数据或重新组装原始文档需要复杂的多路连接。
XML 文档拆分示例图
相反地,根据XML文档的复杂程度、可变性以及用途,适当地进行拆分或许也是一个不错的选择。下表总结了将XML文档拆分成关系表的优缺点。
在许多XML应用场合,XML数据的结构与使用率都决定了拆分工作的困难。这也就是为什么DB2支持XML列,使得用户无需转换就可以对XML数据进行索引与查询。有些时候,你会发现部分拆分或XML混合存储可以最大地满足你的应用需求。
- 部分拆分的概念,就是将XML文档中元素或属性的一个子集拆分成关系表。当应用不需要XML的所有数据值时,这样的方法将很有效。
- XML混合存储就是当向一个XML列插入一个XML文档时,抽取选定的元素或属性并将它们冗余存储在关系列中。
无论你选择全部拆分还是部分拆分XML文档,DB2都提供强大的功能,可以实现以下效果:
- 再插入关系列之前,执行数据值的自定义转化。
- 将相同的元素或属性拆分到表的多个列中。
- 将不同的元素或属性拆分到表的同一列中。
- 指定条件来管理是否对相应元素进行拆分。
- 在拆分过程中使用XML Schema进行XML文档验证。
- 同拆分数据一同存储完整XML文档。
翻译
相关推荐
-
Oracle Hyperion 11.1.2.1 迁移特性与问题
Oracle Hyperion 11.1.2.1包含可以简化移植的新工具,它们在很多情况下能够减少操作步骤。但还是有诸如Essbase Studio的一些问题必须在以后的版本中进行修复。
-
SQL Server 数据访问策略:CLR
CLR在很大程度上解放了TSQL逻辑运算能力不足的问题,而且CLR拥有丰富的语言支持,C#,VB.NET等;在.Net Framework基础上,拥有复杂的过程逻辑和计算。
-
在Oracle数据库中使用XML数据获取业务信息
只需要通过从一个XML表中提取数据,我们就能发送XML格式化的采购订单给下游使用,这与需要更多转换步骤的多个关系型表才能实现形成明显对比。
-
详解如何将关系型数据发布为XML
抽取是通过使用XMLType视图实现的,本质上是物化为SQL执行的一个存储查询结果。XMLType视图允许文档为中心的应用程序把底层的关系结构查询为虚拟的XML文档。