2002 年 3 月
在大型现代企业中,信息几乎不可避免地分布在几个数据库管理系统中。尽管许多研究性社团相当关注该领域,但很少有商业性系统试图解决了这一问题。本文描述了这样一项技术:它使客户机能够访问和集成数据,能够专门计算各种关系型和非关系型数据源。
简介
在大型现代企业中,组织中的各部门使用不同数据库管理系统来存储和搜索其重要数据,这几乎是不可避免的。竞争、不断发展的技术、合并、收购、地域分布以及扩展中不可避免的分散等因素都会造成这种多样性。但只有将这些系统中的信息组合起来,企业才会认识到这些系统所包含数据的整体价值。
例如,在金融行业,合并几乎是很常见的事。新创建的实体沿袭了原有机构的数据存储。许多这样的存储都是关系数据库管理系统,但这些系统常常来自不同的厂商;例如,一家公司可能主要用 Sybase,而另一家公司用 Informix® IDS。他们可能都有一个或多个文档管理系统(譬如,Documentum 或 IBM Content Manager)用于存储文本文档(譬如,贷款副本等)。每种系统可能都有一些应用程序来计算重要信息(例如,某个特定客户的贷款风险)或挖掘有关客户购买模式的信息。
在企业合并之后,他们需要能够从两套存储中访问所有客户信息,使用现有的和新的应用程序来分析他们新的资产组合,通常情况下,还要通过一个公共接口来使用两个机构中经过组合的资源。虽然不同公司可能用完全不同的标识键来标识他们的客户,但在合并后他们需要能够标识他们公共的客户,合并这些客户的帐户。在这些情况下,联邦技术通过提供异构数据的统一接口有效地解决这一问题。
IBM 在联邦技术上进行了大量投资,使之在整个数据管理产品系列中取得市场领先能力。现在,联邦技术能够统一地访问任何信息存储中以任何格式(结构化的和非结构化的)表示的任何数字信息。现在,通过各种 IBM 产品 — 包括 DB2® UDB(和 DB2 Relational Connect)、DB2 DataJoiner® 和 IBM Enterprise Information Portal(EIP),还有最新发布的 Information Integrator — 可以使用这些联邦技术。这组联邦技术会继续得到增强,我们的客户在所有这些产品上的投资会继续产生实际的商业价值。
本文主要讨论高级的数据库联邦技术,它们是通过代号为“Garlic”的技术来实现的,这种技术代表了 IBM 软件的下一代信息联邦增强功能。这些增强功能将使客户机能够访问和集成数据,能够专门计算各种关系型和非关系型数据源。随着时间的推移,Garlic 技术将会不断融入 IBM 所有提供联邦技术软件产品之中。客户可以放心,不但他们对现有产品的投资会受到保护,而且以后无论选择哪种产品,他们都将能够利用这里所描述的高级技术。
IBM 的联邦数据库系统为组合来自多个数据源的信息提供了功能强大的工具。IBM 的联邦数据库技术构建在早期产品 DB2 DataJoiner [3] 的最佳技术之上,并且在可扩展性和性能方面,通过应用 Garlic 研究项目 [2] 的一些位于前沿的特性而得到了增强,这些技术在该行业是独一无二的。DB2 DataJoiner 引入了虚拟数据库的概念,这个虚拟数据库是通过联邦多个异构数据源而创建的。DB2 DataJoiner 的用户可以随意查询存储在联邦系统中任意位置的数据,而不必担心数据的位置、实际数据源系统的 SQL 语言种类或者存储的能力。相反,对于联邦数据库中的任何数据,用户可以按照 DB2 的方式来进行操作。Garlic 项目展现了拓展这一思想来构建联邦体数据库系统的可行性,该系统可以有效地使用各种不同的、可能是非关系型数据源的查询能力。在这些系统中(如当今的 DB2),中间件查询处理器促进了优化执行方案,并弥补了各数据源可能缺乏的功能。
在本文中,我们描述 IBM 联邦技术的主要特征:透明性、异构性、高级功能、底层联邦数据源的自治、可扩展性、开放性和优化的性能。然后,我们回过头来向您展示 IBM 的数据库联邦技术是如何工作的。我们演示了在各种情形下如何使用联邦技术,并推断将来的一些发展趋势。
IBM 联邦解决方案的特征
透明性
如果联邦系统是透明的,则它对用户掩盖了底层数据源的差异、特质和实现。最理想的情况是,它使一组联邦数据源对用户而言象是一个系统。用户应该无需知道数据存储在哪里(位置透明);无需知道数据源支持何种语言或编程接口(调用透明);如果使用 SQL,无需知道数据源支持哪种 SQL 语支(语言透明);不需要知道数据是以哪种物理方式存储的,或者数据是否被分区和/或被复制(物理数据独立性、分段和复制透明性);或者无需知道使用何种网络协议(网络透明性)。用户应该看到一个统一的接口,包括单一的一组错误代码(错误代码透明性)。IBM 提供了所有这些特性,使得在编写应用程序时就好象所有数据都位于一个数据库中,尽管事实上,数据可能存储在异构的数据源集合中。
异构性
异构性是指各数据源之间的差异程度。数据源在许多方面可以不同。它们可以运行在不同的硬件上,可以使用不同的网络协议,以及使用不同的软件来管理它们的数据存储。它们可能具有不同的查询语言、不同的查询能力甚至不同的数据模型。它们处理错误的方式可能不同,或者提供不同的事务语义。它们可能非常类似于这样两个 Oracle 实例:一个运行 Oracle 8i,另一个运行 Oracle 9i,并且模式可能相同或者不同。或者它们的多样性可能类似于这样:一个功能强大的关系数据库,一个简单的结构化平面文件,一个可以采用 URL 形式查询并且可以根据一些 DTD 来发回半结构化的 XML 的网站,一个 Web 服务和一个响应特定函数调用集的应用程序。IBM 的联邦数据库可以容纳所有这些差异,将上述这些系统封装在一个无缝的透明联邦体中。
高级功能
IBM 的联邦技术向用户提供了两全其美的特性:对于联邦体中的所有数据,它具有丰富的、符合标准的 DB2 SQL 能力这些所有功能,以及底层数据源的所有功能。DB2 的 SQL 支持许多复杂的查询特性,其中包括内连接和外连接、嵌套的子查询和表表达式、递归、用户定义的函数、聚集、统计分析、自动摘要表和其它因太多而无法在此逐一列出的特性。许多数据源可能不提供所有这些特性。然而,用户仍然可以对这些数据源的数据使用 DB2 SQL 的完整功能,因为有功能补偿。功能补偿意味着,如果数据源不能执行某个特定的查询功能,则联邦数据库会检索必要的数据,并自己应用该功能。例如,文件系统通常不能进行任意排序。然而,用户可能仍然要求按某种顺序检索来自那个数据源(即某个文件子集)的数据,或者要求消除其中的重复数据。联邦数据库会只检索相关数据,并自己进行排序。
虽然许多数据源没有提供 DB2 SQL 的所有功能,但确实存在许多数据源具有 IBM 联邦数据库所缺乏的专门功能。例如,文档管理系统通常具有记分功能,针对用户的搜索,用这些功能来估计被检索文档的相关性。在金融行业,时间序列数据非常重要,并且存着这样一些系统:它们可以以特有的方式来比较、绘制、分析和划分时间序列数据。在制药行业,新药是建立在具有特殊性质的现有化合物的基础之上。一些具有专门用途的系统可以比较化学结构,或者模拟两个分子的结合。虽然可以直接实现这些功能,但利用数据源和应用程序系统上已有的功能常常会更有效,更节约成本。IBM 允许用户指出联邦数据源中自己感兴趣的功能,然后在查询中使用它们,从而使联邦系统的用户不会丢失数据源的原有功能。
联邦体的可扩展性和开放性
所有系统都需要随时间而发展。在联邦系统内,可能需要新的数据源来满足用户业务不断变化的需求。IBM 使增加新的数据源变得很方便。联邦数据库引擎通过称为包装器的软件组件来访问数据源。通过为那个数据源获得或创建包装器来访问新型的数据源。包装器体系结构支持新包装器的创建。一旦存在包装器之后,简单的数据定义(DDL)语句允许在不停止正在进行的查询或事务的情况下动态地将数据源添加到联邦体。
可以包装任何数据源。IBM 支持 ANSI SQL/MED 标准 [1](MED 表示外部数据的管理,Management of External Data)。这个标准记载了联邦服务器与外部数据源通信所采用的协议。任何写到 SQL/MED 接口的包装器可以结合 IBM 的联邦数据库一起使用。因而可以由第三方和 IBM 编写包装器,然后结合 IBM 的联邦数据库一起使用。
数据源的自治
通常,数据源有现有的应用程序和用户。所以,当将数据源引入联邦体时,不影响它的操作是很重要的。IBM 的联邦数据库不影响现有数据源的本地操作。现有应用程序的运行不会发生变化,既不会修改数据也不会移动数据,接口也保持相同。尽管对联邦系统执行全局查询可能会涉及各种数据源,但数据源处理数据请求的方式并不受此影响。同样,当数据源进入或离开联邦体时,不会影响本地系统的一致性。唯一的例外是在对加入联邦体的数据源执行联邦的两阶段提交处理期间,会受到影响。(但在 DB2 V7 中不存在这种问题,联邦的两阶段提交用在 DataJoiner 中。)在同一工作单元中所涉及到的数据源将需要参与到提交处理过程之中,如果有必要,可能会要求回滚相关的更改。
与其它产品不同,我们的包装器体系结构不需要在主管数据源的机器上安装任何软件。通过使用数据源正常的客户机,我们通过客户机服务器体系结构与数据源进行通信。用这种方式,使 IBM 的联邦数据源看上去就象这个数据源的另一个应用程序。
优化的性能
优化器是关系数据库管理系统的组件,它决定执行每条查询的最佳方式。关系查询是非过程化的,每个关系运算符通常有几种不同的实现,而且在执行一条查询时,可供选择的运算符的可行顺序有许多种。虽然一些优化器使用启发式规则来选出一种执行策略,但 IBM 的联邦数据库考虑各种可能的策略,对每种策略可能的成本建模,然后选出一种成本最低的策略。(通常,根据所消耗的系统资源来衡量成本。)
在联邦系统中,优化器必须决定是由联邦服务器来执行查询中所涉及到的各种操作还是由存储数据的数据源来执行这些操作。它还必须决定操作的顺序,以及采用哪些实现来执行查询的本地部分。为了做出这些决定,优化器必须以某种方式了解每个数据源能够做什么,了解它的成本如何。例如,如果数据源是一个文件,那么认为它是智能的,并请它来执行排序或应用某种函数,显然是毫无意义的。另一方面,如果数据源是一个关系数据库系统,它能够应用一些谓词,并可做一些连接操作,那么如果利用这个数据源的功能能减少返回给联邦引擎的数据量,那应是个不错的想法。这通常取决于每条查询的具体细节。IBM 优化器对查询中所涉及到的各种数据源使用包装器来评价各种可能性。通常,在执行策略上,好的决定

