DB2 9 Viper快速入门


  本文标签:DB2 Viper

  DB2数据库在开发过程中开发出了很多新的版本,功能性较之前有了很大的提高,其中DB2 9 Viper就是其中之一,下文中详细为大家介绍DB2 9 Viper  。

  为了帮助您快速掌握 DB2 自身的 XML 特性,请完成几个普通的任务,比如:

  创建用于管理 XML 数据的数据库对象,包括一个测试数据库、一些示例表和视图  。

  

  使用 INSERT 和 IMPORT 语句将 XML 数据填充到数据库中  。

  

  验证您的 XML 数据  。使用 DB2 开发和注册您的 XML 模式,并在导入数据时使用 XMLVALIDATE 选项  。

  

  后续文章将包括其他主题,比如使用 SQL 查询、更新和删除 DB2 XML 数据,使用 XQuery 查询 DB2 XML 数据,开发存取 DB2 XML 数据的 Java 应用程序和 Web 组件  。

  

  创建数据库对象

  让我们先来创建一个单独的 DB2 Unicode 数据库  。在 DB2 Viper 中,只有 Unicode 数据库才能同时存储 XML 文档和 SQL 数据的更多传统格式,比如整数、日期/时间、变长字符串,等等  。随后,您将在这个数据库中创建对象来管理 XML 和其他类型的数据  。

  创建测试数据库

  为了创建一个新的 DB2 Unicode “测试” 数据库,打开 DB2 命令窗口,发出语句来指定 Unicode 编码集合和支持的区域,如 清单 1:

  清单 1. 创建用于存储 XML 数据的数据库

  create database test using codeset UTF-8 territory us

  旦创建了 Unicode 数据库,您就不需要发出任何专门的命令或采取任何进一步措施来使 DB2 能够以它自身分层的格式存储 XML 数据,因为您的 DB2 系统已经准备好了  。

  创建示例表

  为了存储 XML 数据,请创建包含一个或多个 XML 列的表  。这些表充当文档集合的逻辑容器;在幕后,DB2 实际上使用了不同的存储方案来存储 XML 和非 XML 数据  。然而,使用表作为管理各种受支持的数据格式的逻辑对象,简化了管理和应用程序开发问题,特别是当需要在一个单独的查询中集成不同的数据格式时  。

  您可以对 DB2 表进行定义,使其只包含 XML 列、只包含传统 SQL 类型的列或者同时包含两者  。本文对后一种情况进行了建模  。清单 2 中的例子连接到 “测试” 数据库,并创建了两个表  。第一个是 “items” 表,追踪关于货物的销售情况和顾客对货物的评价信息  。第二个表追踪的是关于 “客户” 的信息,包括关于联系信息的数据  。注意 “comments” 和 “contactinfo” 是基于新的 DB2 XML 数据类型,而所有其他的列都是基于传统 SQL 数据类型的  。

  清单 2. 创建用于 XML 数据的表

  connect to test;

  create table items (

  id int primary key not null,

  brandname varchar(30),

  itemname varchar(30),

  sku int,

  srp decimal(7,2),

  comments xml

  );

  create table clients(

  id int primary key not null,

  name varchar(50),

  status varchar(10),

  contactinfo xml

  );

  如果您仔细地查看这些表定义例子,您将注意到 “comments” 和 “contactinfo” 列都没有进行 XML 文档内部结构的定义  。这是 DB2 的一个重要特性  。用户不需要为了存储数据而预定义一个 XML 数据结构(或者,更准确地说是一个 XML 模式)  。事实上,DB2 可以在一个单独的列中存储任何格式良好的 XML 文档,这意味着不同模式的 XML 文档 —— 或没有和任何注册的模式关联的文档 —— 都可以存储在相同的 DB2 列中  。当我们讨论如何在 DB2 中存储数据时,本文将深入讨论这个特性  。

  创建视图

  您可以随意地在包含 XML 数据的表上创建视图,就像您可以在只包含传统 SQL 数据类型的表上创建视图一样  。清单 3 中的例子创建具有 “Gold” 状态的客户的一个视图:

  清单 3. 创建一个包含 XML 数据的视图

  create view goldview as

  select id, name, contactinfo

  from clients where status=Gold;

  关于索引的一点说明

  最后,没有必要在 XML 列上创建专门的索引来提高数据的查询速度  。因为这是一篇介绍性文章,而且示例数据很少,所以本文不会涵盖到那个主题  。然而,在生产环境中,定义一个适当的索引对实现最佳的性能来说很关键  。查看本文结尾部分的 “参考资料”,以助于了解 DB2 的新索引技术  。