IBM DB2 9特性概览

简介

       在信息管理行业庆祝数据库管理系统的第 40 个生日时,IBM 邀请了顾客和合作伙伴来测试 DB2 “Viper”,这是一种混合型的数据服务器,它标志着信息管理技术的又一次进化。
  信息管理技术始于 20 世纪 60 年代早期,也就是美国总统肯尼迪制订 10 年内实现人类登月目标的时候。1966 年,IBM 与 North American Rockwell(它赢得了发射第一艘登月飞船的合同)合作创建了一个自动化系统来管理建造飞船所需的大量资料。层次化的 Information Management System(IMS)和数据库管理技术本身由此诞生了。
  下一个重要的里程碑也是在 IBM 出现的,即 20 世纪 70 年代关系模型和结构化查询语言(Structured Query Language,SQL)的发明。1982 年,IBM 在大型机上引入了 DB2,直到现在这仍然是世界各地的大银行和金融机构选用的数据库。随着市场开始在非大型机平台上实现应用程序,IBM 于 1987 年在 OS/2 上引入了 DB2,90 年代又在 AIX、AS/400、HP-UX、Solaris、Windows 和 Linux 上引入了 DB2。DB2 在这么多平台上的实现使得顾客可以选择最适合自己应用程序需要的版本。
  目前,IBM 正在将数据服务器的进化推进到下一层次,引入了一种可以管理纯 XML 和纯关系数据的混合型引擎,即 DB2 Viper。DB2 Viper 中的新技术使公司能够充分利用非关系业务数据(比如 Excel 电子表格中的金融信息或通常存在于纸上或字处理文档中的重要合同)。利用 DB2 Viper,一个联结语句就可以将这些业务数据与传统的关系数据合并在一个完整的视图中。对电子表格、合同、传真图像或收据的手工搜索可以由一个简单的语句替代。对 XML 数据的标准化访问机制确保现有的报告工具和接口可以将这些新数据直接提交到桌面。纯 XML 技术提供了对业务成功很重要的敏捷性。
  新的混合型 XML-关系功能不是 DB2 Viper for Linux, Unix, and Windows 上惟一的新特性。我将讨论 DB2 Viper 上可用的主要特性。您可以自己通过 Viper 的开放测试来尝试这些特性(ibm.com/db2/viper)。
  XML 驱动业务
  除了存储关系数据之外,DB2 Viper 的混合型引擎还能够使用纯 XML 结构存储 XML 文档。因此,正在逐渐转向 XML 的公司可以使用一种高性能的 XML 存储引擎,并利用工作人员现有的数据库技能来管理和保护 XML 数据(见图 1)。



         图 1. DB2 混合型数据服务器能够管理关系和纯 XML 存储
  由于许多原因,XML 对于当今的业务很重要。在面向服务的体系结构(service-oriented architecture,SOA)环境中,使用独立通用服务的思想使得不再需要为每个应用程序开发自己的访问方法了,并有助于应用程序的集成。XML 是应用程序和通用服务之间常用的消息传递语言。例如,在股票交易中,顾客通过一个 Web 界面购买一定份额的股票。这个 Web 过程向经纪人系统发送一个 XML 消息,从而执行交易。这个 XML 消息是临时的,只是为了触发经纪人系统而存在。DB2 Viper 可以保存这个 XML 消息,同时完整地保留它的数字签名。这样的话,就可以在金融审计中使用这些 XML 消息。
  目前,大多数公司无法轻松地访问现有的业务数据,这是由于使用的大多数数据库技术、平台和数据格式的限制。通过创建一种统一的数据格式,SOA 通用服务可以从原始数据源接收数据,将数据格式化为一种标准格式,并存储在 XML 中,这样就对关键业务数据提供了灵活且标准化的访问方式。
  能够存储业务关键型文档(比如 Excel 电子表格或法律合同)并将此数据与相关的关系数据联系起来,这是 Viper 关键的优势之一。Microsoft Office、Adobe 程序和大多数前端办公产品都提供了将文档存储为 XML 格式的功能。业务用户现在能够轻松地访问电子表格数据,因为 Microsoft Excel 电子表格(常常用来存储对于决策很重要的金融统计数据)现在可以按照 XML 格式存储在 DB2 Viper 数据服务器中,而不是存储在容易损坏的文件服务器或硬盘上。
   纯XML
  现有的关系数据服务器将 XML 文档存储为字符或二进制大对象(CLOB 或 BLOB)。但是,在 CLOB 或 BLOB 中,数据存储为单一的单元或连续的字节串。当查询 XML 文档中的特定值或者更新 XML 文档的一部分时,这种存储格式会造成性能难题。必须读取整个记录并进行解析,然后才能进行谓词评估。建立索引可以降低搜索成本;但是,对 XML 文档的更新要求更新 XML 索引。对 XML 文档的更新还需要重写整个文档。
  对 XML 文档进行分解(Shredding 或 decomposing)是另一种 RDBMS 存储方法。通过将 XML 文档的每个元素映射到一个关系列,XML 文档可以存储在多个表和列中。文档被分解之后,结构和任何相关联的条目(比如数字签名)就丢失了;但是,在不需要保留整个 XML 文档时,分解是一种值得考虑的解决方案。
  DB2 Viper 将最纯粹形式的 XML 保存为经过预解析的带注解的树。当今的市场上有纯 XML 数据库;但是,它们不是混合型数据库(这意味着它们不能同时提供 XML 数据和关系数据的优势)。有了 DB2 Viper,XML 就可以存储为层次化的基于节点的模型,在这种模型中每个节点不只与它的父节点链接,而且与它的子节点链接。这种纯 XML 存储是最高效的访问和存储整个 XML 文档的方法,有很大的性能优势。
  纯 XML 存储通过按照原样存储 XML 文档提供了 BLOB 和 CLOB 的优点,同时解决了性能问题,因为文档存储不虚拟化成单个连续的字节范围。整组文档的存储虚拟化为一个连续的字节范围,但是可以在这个范围中重新定位各个节点,这样就最小化了对其他节点和索引的影响。
  DB2 Viper 支持分解的 XML 和纯 XML 两种方式。支持分解很重要,因为 XML 可以用来填充现有的关系模式。因为文档会增大并可以在许多情况下更新,XML 文档的非 BLOB 存储(包括以节点级粒度进行存储)的优势很显著。
  大多数公司有关系数据服务器,而且已经有专门的人员来支持它们。尽管 Viper 提供了新的高级的 XML 技术,但是公司不需要雇佣新的理解 XML 的开发人员。为了创建 DB2 混合型表(同时包含关系数据和 XML 数据的表),只需一个简单的 CREATE TABLE 语句和新的 XML 数据类型:
  清单 1. 创建包含 XML 列的表
create table clients(
id  int primary key not null,
name varchar(50),
status  varchar(10),
contactinfo xml
)
  为了访问混合型表,IBM 支持对 SQL 的工业标准扩展,即 SQL/XML。这些扩展允许只用简单的 SELECT 语句来检索 XML 文档或 XML 文档的一部分。除了 SQL/XML 之外,DB2 还支持新的 XML Query(即 XQuery)语言。XQuery 是一种由 World Wide Web Consortium(W3C)推动的标准,设计它是为了查询 XML 的层次化结构,正如设计 SQL 是为了查询表格数据结构一样。XQuery 与 SQL 的不同之处是它能够提供路径表达式,使程序员能够在 XML 的层次化结构中导航。下面这个简单的 XQuery 示例返回客户的联系数据:
  清单 2. XQuery 语句
xquery db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')
  假设希望检索所有提供了传真号码的客户的传真号码,那么可以编写下面这样的查询:
  清单 3. 检索所有提供了传真号码的客户的传真号码

xquery
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/fax
return $y
  第一行让 DB2 调用它的 XQuery 解析器。下一行让 DB2 遍历 CLIENTS.CONTACTINFO 列中 Client 元素的 fax 子元素。每个 fax 元素被绑定到变量 $y。第三行要求对于每次迭代返回 $y 的值。结果就是下面的 XML 元素序列:
  清单 4. XML 元素序列结果
4081112222
5559998888
  DB2 直接支持 XQuery 语言,这意味着它无需将 XQuery 转换为 SQL(转换会引入不必要的开销以及语义的不一致)。而且它不要求客户将 XQuery 语句包装在 SQL 语句中。DB2 客户可以按照自己的希望利用 XQuery 和 SQL;甚至可以使用 “双语” 查询,也就是在同一个查询中同时利用这两种语言的独特功能。新的高级 XML 索引技术补充了 Viper 对 SQL/XML 和 XQuery 的支持,能够提供很好的运行时性能。
  关于混合型 DB2/XML 引擎的更多信息,请参考 DB2mag.com 上的 “Firing up the Hybrid Engine” Quarter 3, 2005。
参与6

提问者

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2009-11-26
  • 关注会员:0 人
  • 问题浏览:4497
  • 最近回答:2010-11-25
  • X社区推广