在大型现代企业中,信息几乎不可避免地分布在几个数据库管理系统中。尽管许多研究性社团相当关注该领域,但很少有商业性系统试图解决了这一问题。本文描述了这样一项技术:它使客户机能够访问和集成数据,能够专门计算各种关系型和非关系型数据源。
简介
在大型现代企业中,组织中的各部门使用不同数据库管理系统来存储和搜索其重要数据,这几乎是不可避免的。竞争、不断发展的技术、合并、收购、地域分布以及扩展中不可避免的分散等因素都会造成这种多样性。但只有将这些系统中的信息组合起来,企业才会认识到这些系统所包含数据的整体价值。
例如,在金融行业,合并几乎是很常见的事。新创建的实体沿袭了原有机构的数据存储。许多这样的存储都是关系数据库管理系统,但这些系统常常来自不同的厂商;例如,一家公司可能主要用 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] <http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/0203haas/0203haas.html> 的最佳技术之上,并且在可扩展性和性能方面,通过应用 Garlic 研究项目 [2] <http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/0203haas/0203haas.html> 的一些位于前沿的特性而得到了增强,这些技术在该行业是独一无二的。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 联邦数