DB2中的混合XML存储

日期: 2010-01-07 作者:Matthias NicolaPav Kumar-Chatterjee翻译:冯昀晖 来源:TechTarget中国 英文

在许多情况下,XML文档结构非常复杂,使得分割非常困难,低效率,而且不方便。除了分割的性能问题,分散XML文档的值跨越存储在大量表中,也使得应用程序开发人员很难理解并查询这些数据。要改善XML插入性能并降低你数据库中表的数量,你可能想以混合方式存储XML文档。这种方法提取选定XML元素和属性的值并把它们挨着完整的XML文档存储在关系列中。

  前面部分的示例使用了两个表作为分割客户文档的目标表,这两个表是地址表和电话表。你可能更希望使用包含关系列“客户id”,“名称”,和“所在城市”的单个表,把包含重复电话元素的完整的XML文档和其他信息放到一个XML列中。你可以按下面的语句定义表:   CR……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在许多情况下,XML文档结构非常复杂,使得分割非常困难,低效率,而且不方便。除了分割的性能问题,分散XML文档的值跨越存储在大量表中,也使得应用程序开发人员很难理解并查询这些数据。要改善XML插入性能并降低你数据库中表的数量,你可能想以混合方式存储XML文档。这种方法提取选定XML元素和属性的值并把它们挨着完整的XML文档存储在关系列中。

  前面部分的示例使用了两个表作为分割客户文档的目标表,这两个表是地址表和电话表。你可能更希望使用包含关系列“客户id”,“名称”,和“所在城市”的单个表,把包含重复电话元素的完整的XML文档和其他信息放到一个XML列中。你可以按下面的语句定义表:

  CREATE TABLE hybrid(cid INTEGER NOT NULL PRIMARY KEY,

  name VARCHAR(30), city VARCHAR(25), info XML)

  图11.4展示了执行迁移到该表的插入语句。XMLTABLE函数通过参数标记符号(“?”)把XML文档作为输入参数。XMLTABLE函数生成的四个列中的该列定义与目标表混合的定义相匹配。XMLTABLE函数中的生成行表达式只是“$i”,它会生成完整输入文档。该表达式是XMLTABLE函数“COLUMNS”从句生成列表达式的输入。特别要注意的是,列表达式“.”原样返回完整输入文档并为给该目标表插入“info”列生成XML列文档。

  图11.4 以混合方式存储XML文档。

  目前,在DB2中还不可能实现定义检查约束限制来确保同一行的一个XML文档关系列和值的完整性。然而,你可以给表定义插入和修改的触发器,这样无论何时插入或修改了一个文档,都会自动迁移关系列。

  在DB2命令行处理器(CLP)中测试这类插入语句很有意义。要做到这一点,你可以把参数标记符(“?”)替换为XML文档原文,如图11.5所示。XML文档原文是一个字符串,必须被单引号括起来并用XMLPARSE函数转换为XML数据类型。同样,你还可以用一个自定义函数从文件系统读取输入文档。用户自定义函数的用法请参见图11.6中的内容。

  图11.5 使用XML文档原文的混合插入语句。

  图11.6 使用“FromFile”用户自定义函数的混合插入语句。

  图11.4,图11.5和图11.6中的插入逻辑是相等价的。唯一差异是输入文档的提供方式:通过参数标记(“?”)提供;以单引号括起来的原文字符串提供;或者通过用户自定义函数从文件系统中读取文档的方式提供。

相关推荐

  • 从Oracle的数据库世界路过

    Oracle是IT领域的供应商之一,它提供了很多企业应用涉及的软硬件技术。其关系型软件,现在称为Oracle Database,依然是其旗舰产品。

  • 数据库产品巡礼:IBM DB2概览

    IBM DB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。

  • 如何进行分布式大数据应用调优

    分布式环境通常是与数据库服务器相分离的。而DBA的工作就是监视这些环境并配置和优化数据库服务器以满足多种需求。大数据的出现加剧了DBA的问题。

  • IBM DB2将迎来30岁“生日”

    再过几天,主流数据库产品DB2就将迎来它30岁的“生日”。作为关系型数据库技术的标志性产品,DB2在过去的30年中也在伴随用户需求的变化不断地发展。