中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > DB2 > About the product
IBM DB2 Connect 简介: 内有乾坤
作者:佚名 时间:2005-09-07 00:06 出处:互连网 责编:小渔
              摘要:IBM DB2 Connect 简介: 内有乾坤
第 1 部分: 基础

级别: 初级

Leon Katsnelson, DB2 开发, IBM Canada Ltd.
Paul C Zikopoulos, DB2 竞争性技术团队, IBM Canada Ltd.

2005 年 4 月

对于那些脱离大型机的应用程序 —— 分布式应用程序来说,IBM® DB2® Connect™ 已成为向它们开放 DB2 for z/OS 数据库以及 zSeries 硬件平台传统公认的所有优点的首选方法。本文是一个由 5 部分组成的系列中的第一篇文章,这个系列将介绍 DB2 Connect 的一些主要特性,这些特性有助于提高交付随需应变解决方案的能力。

简介
1993 年,计算机界的专家们预测大型机(mainframe)将迅速退出历史舞台。他们宣称,未来的计算基础设施将会是一个高度分布的、松散连接的个人电脑和客户机-服务器系统的集合。作为该行业的相关参与者,IBM 几乎无立身之处。

我们都知道后来是怎么回事。IBM 设法在分布式市场重新占得先机,并成为大型机(mainframe)技术的“主要”支持力量。从价格的角度来看,IBM 大大缩减了大型机的价格。从技术的角度来看,IBM 放弃了为其大型机提供动力的双极技术(bi-polar technology),而将大量赌注放在 CMOS 芯片技术上,试图通过这种方式,以剧减的价格交付大型机级别的计算。更重要的是,对于所谓大型机是一种过时的技术,属于大型机的时代已经一去不复返这类荒诞的说法,这是一个直接有力的反击。

如今,企业比以前更多地使用大型机作为其计算基础设施的基础。与此同时,Linux™、UNIX®、Windows® 和其他客户机-服务器系统(在此处被称作分布式平台)并没有消失,因为大型机又重新为它们在企业中赢得了地位。

实际上,这些分布式计算基础设施经历了一个发展的过程。最终的结果是,客户希望将分布式平台的简单性和长处与大型机技术无可匹敌的强大性相结合。如果说信息技术(IT)中有一个领域能让这种结合产生立杆见影的效果,那么这个领域一定是数据库应用领域。

IBM DB2 Universal Database™ for z/OS (DB2 for z/OS) 原本是一种大型机数据库,现在已转型为世界上第一种用于客户机-服务器应用程序的数据库服务器。在如今的数据中心里,当您使用运行在大型机上的 CICS 或 COBOL 应用程序时,很可能会遇到 DB2 for z/OS 被用作运行在 Windows、UNIX 和 Linux 上的应用程序的数据库服务器的情况。

正是在这种环境下,我发现 IBM DB2 Connect (DB2 Connect) 产品扮演着一个中心角色。如今,对于那些脱离大型机的应用程序 —— 分布式应用程序来说,DB2 Connect 已成为向它们开放 DB2 for z/OS 数据库和 zSeries 硬件平台的所有传统公认优点的事实上 的首选。

为什么当其他产品遭遇失败的时候,DB2 Connect 却能获得成功呢?这个关于 DB2 Connect 的系列试图描述 DB2 Connect 的一些关键特性,我们相信正是这些特性使得它不同于其竞争解决方案。例如,大多数客户都喜欢由单独一个供应商提供的解决方案,因为这样一来,他们只需跟一个地方联系就可以获得支持:可以说是“one neck to choke”。另外一些客户喜欢 DB2 Connect 的理由是,它来自像 IBM 这样长时间靠得住的大供应商(在连接领域,很多供应商来来去去,或者改换名称)。在这个系列的文章中,我们将把焦点放在 DB2 Connect 解决方案的技术方面,而把非技术方面的东西留给 IBM 销售人员去解决。

这是一个由 5 部分组成的系列中的第一篇文章,这个系列将向您介绍 DB2 Connect 的一些主要特性,利用这些特性可以大大提高交付随需应变解决方案的能力。本文的重点不是讨论 DB2 Connect 的打包和许可。这方面的信息可以参考 Paul C Zikopoulos 和 Leon Katsnelson 合著的 哪个版本的 DB2 Connect 适合您?

DB2 Connect 是什么? 本系列概述
为了真正理解 DB2 Connect 是什么,也许先告诉您它不是什么要容易一些。在 DB2 Connect 的发展前期,也就是 Distributed Database Connection Server (DDCS) 时期,很多人在描述这个产品的时候,说它是将分布式平台上的 DB2 数据库连接到大型机上的 DB2 数据库的一种方式。所以让我们首先澄清一点: DB2 Connect 不做那样的事,我们也不知道有哪个产品会像前面所描述的那样“将数据库连接在一起”。DB2 Connect 存在的目的是将应用程序连接到数据,而不是将一个数据库连接到另一个数据库。

那么,在 DB2 Connect 的上下文中,什么是数据库,什么是应用程序呢? 在 IT 界,当我们在一个较高的层次谈论应用程序时,我们通常指的是一个系统或一组系统,它可以帮助我们交付业务解决方案。例如,我们会谈到 CRM 或 ERP 应用程序。在讨论 DB2 Connect 时,我们需要在更窄的定义内使用应用程序 这个词。

在这个系列的文章中,当我们提到应用程序时,我们谈论的就是整个大应用程序中的一个部分。更确切地说,我们指的是实现用户界面(UI)和业务逻辑(以及如何让它们访问所请求的数据)的应用程序代码。换句话说,在这个系列中,当我们说到应用程序 时,我们指的是发出针对数据库的查询、处理结果、调用将更改数据库中数据的事务这样一些实际的代码。例如,一个被连接到 Siebel CRM 应用程序的 Microsoft® Excel 电子表格(这个 Siebel CRM 应用程序运行在 Windows 服务器上,并与 DB2 相连接),或者运行在一个 Linux WebSphere® 服务器上的一组 JSP 和 Java™ Bean,它们都属于我们在这几篇关于 DB2 Connect 的文章中所说的应用程序。

注意,上面那些例子指的是不在 z/OS 操作系统控制下运行的计算机代码。实际上,我们说的是在 Windows、Linux 等系统控制下运行的计算机代码。这正是 DB2 Connect 的精髓。它允许从运行在其他平台(Linux、UNIX 和 Windows)上的计算机代码访问在 OS/390®、z/OS、i5/OS™、 OS/400®、VSE 和 VM 控制下运行的 DB2 服务器。虽然 DB2 Connect 可以连接到所有这些平台上的数据库服务器,但我们主要讨论将应用程序连接到在 z/OS 控制下运行的 DB2。图 1 描绘出 DB2 Connect 的真正工作。

图 1. DB2 Connect 为运行在分布式平台上的应用程序提供一种使用大型机管理的数据的机制
DB2 Connect 的高层概览

用 DB2 Connect 将代码连接到数据
所以,DB2 Connect 是一个中间件,用于将应用程序代码连接到数据。那么,它是怎么做到这一点的呢?

当您编写与关系数据库(例如 DB2)交互的计算机代码时,必须考虑两个关键要素。首先,需要选择一种用于与数据库交互的语言。通常这种语言是 SQL。其次,还需要选择一种应用程序编程接口(API),此 API 可以将那种语言和您的 SQL 发送到数据库进行处理。

任何与 DB2 打过交道的人都知道,DB2 支持很多有特色的、功能强大的 SQL 语言。在与 DB2 Connect 一起使用 SQL 时,实际上就是在使用您很可能在其他应用程序中用到的同一种 SQL。DB2 Connect 只是将 SQL 从应用程序传递到 DB2 数据库进行处理。它不会重写 SQL,也不会以任何方式更改 SQL。换句话说,如果您能熟练地构建 SQL 应用程序,那么就也能够编写分布式平台上的 SQL 应用程序,并让这些应用程序使用大型机上的 DB2。

因为 SQL 的实现在整个 DB2 家族的数据库服务器之间都能很好地兼容,所以这些应用程序还可以使用其他平台上的 DB2 服务器。但是,用 C、Java 或 Visual Basic.NET 编写应用程序的程序员如何将 SQL 提交给 DB2,以便进行处理呢?别忘了,这些编程语言都完全不了解 SQL。于是 API 就派上用场了。所有现代编程语言都支持用于将 SQL 提交给关系数据库的 API。

熟悉大型机 SQL 编程的程序员对嵌入式 SQL 应该不会感到陌生。嵌入式 SQL 也是 DB2 Connect 支持的一种 API。分布式计算领域中出现的其他一些更流行的基于 SQL 的 API 有:DB2 CLI、ODBC、OLE DB、ADO、ADO.NET、JDBC 和 SQLJ。DB2 Connect 支持所有这些 API。这意味着,为 Linux、UNIX、Windows 和其他分布式平台(例如 Mac 操作系统,当我们讨论 Java 时会详细谈到)编写代码的应用程序编程人员,可以用某种方式将 SQL 提交给 DB2,以便进行处理。而且,他们可以用自己选择的语言来开发他们的应用程序代码,例如 Java、Visual Basic.NET、C#、COBOL、C++,等等。

我们大多数人都听说过 ODBC、JDBC 和其他一些类似的接口,它们被称作驱动程序。虽然我们经常听到 ODBC 驱动程序这种说法,但这不完全等同于术语 ODBC API(而且也不应该那样去解释)。其他接口也一样。

例如,ODBC API 是一组函数调用的一种规范,程序员可以对数据库进行这些函数调用。例如,C 程序员会调用 SQLExec 函数将要执行的一条 SQL 语句发送到一个关系数据库管理系统。而 SQLExec 函数和其他 ODBC API 是由 ODBC 驱动程序来实现的。

DB2 Connect 驱动程序
DB2 Connect 提供了实现前一段话中提到的所有 API 的驱动程序。然而,并不是所有 API 都是用驱动程序实现的。例如,嵌入式 SQL是通过一个预编译器实现的,这个预编译器读取 C 或 COBOL 源代码,并用 C 或 COBOL 编译器能够理解的 C 或 COBOL 函数调用替换 SQL 调用。这些函数被实现为 DB2 Connect 所提供的一部分库。有些 API 由相同的驱动程序实现,对于有些 API,可以由多种驱动程序来实现(例如 JDBC)。表 1 总结了不同的 API 和 DB2 Connect 附带的驱动程序。

表 1. DB2 Connect 附带的 API 和驱动程序
API 驱动程序
嵌入式 SQL 特定于语言的预编译器
DB2 CLI DB2 CLI 驱动程序
ODBC DB2 CLI 驱动程序
OLE DB DB2 OLE DB 提供程序
ADO DB2 OLE DB 提供程序
ADO.NET DB2 .NET Data 提供程序
JDBC DB2 JDBC 驱动程序(提供了多种类型)
SQLJ DB2 JDBC 驱动程序(提供了多种类型)

由于 DB2 Connect 提供了这么广泛的驱动程序,这很可能会导致有人再次对 DB2 Connect 的本质产生误解:人们常常相信,DB2 Connect 只是一个驱动程序包,这个产品的功能只有这些。这种想法的诱因很可能是这样的,这些 API 驱动程序以及它们的相关功能、性能和健壮性对于开发与数据库打交道的应用程序来说是如此举足轻重,以致对该产品的调查研究往往就停留在这个层面上。

不幸的是,就因为有些作为竞争对手的供应商的解决方案碰巧只是一个驱动程序包,所以他们总喜欢传递上述信息。

既然 DB2 Connect 中的驱动程序对于应用程序来说是如此重要,那么让我们再多谈一点关于这些驱动程序的话题。需要记住的是,DB2 Connect 提供了业内最广泛的驱动程序。我们相信,这些驱动程序提供了最高水平的标准遵从、性能和健壮性。事实上,DB2 Connect 驱动程序已成为评价市场上所有其他 DB2 驱动程序的黄金标准。

似乎每过一年左右都会出现某个新的(或换了名字的)供应商放肆地声称有比 DB2 Connect 提供的驱动程序快两倍、三倍甚至十倍的驱动程序。然而,事实总是证明,这些供应商最终都失败了,不是消失无踪,就是在市场大潮中沦为下品。DB2 Connect 能有如此丰富的驱动程序,是因为从 1993 年开始它就一直存在,并在世界上要求最高的应用程序中不断证明其耐力。

DB2 Connect 驱动程序的一种有效的架构
为了实现它的驱动程序,DB2 Connect 有一个独特的基础设施,这个基础设施增加了驱动程序的可靠性、可伸缩性和健壮性 —— 我们将在这一节中具体谈到。

DB2 Connect 和 zSeries Workload Manager
比起驱动程序来,应用程序到大型机的连接的实现方式甚至更加 至关重要。与传统的使用分布式服务器的客户机-服务器系统不同,大型机不是为单个应用程序而设计的。实际上,像 zSeries 这样的大型机的一个关键的优点是:它们在本质上就是多工作负载的系统。例如,在使用像大型机这样的共享系统时,重要的是让使用您系统的分布式应用程序参与管理工作负载,并与其他也在使用系统的应用程序“友好共处”。对于购买了如今市场上其他代替产品的客户来说,很不幸的一点是,其他供应商对这方面的需求没有给予多大的关注。

相反,DB2 Connect 在产品中内置了用于最小化资源使用和参与大型机的工作负载管理的功能。例如,DB2 Connect 完全与 z/OS Workload Manager (WLM) 集成,能够根据它从 WLM 收到的指令,将任务安排到大型机的不同 LPAR 上。因此,每个通过 DB2 Connect 进来的事务都是根据整个系统的资源可用性和利用率来分配大型机资源的,而不只是强制地将任务随便放在一个 LPAR 上,事实上这个 LPAR 可能已经超载了,或者已经被分配给其他有更高优先级的任务。

DB2 Connect 和连接集中器
在 DB2 中,所有 SQL 都是在 DB2 线程的上下文中进行处理的。线程是一种有限的资源。在传统的大型机应用程序中,对线程的使用不是很重要,因为只有少数几个应用程序使用少数几个线程启用任务。然而,如果将 DB2 for z/OS 作为在分布式平台上运行的应用程序的服务器,那么线程的使用情况就非常值得关注。想像一下这种情况:几千台运行应用程序的桌面电脑共用一两个到数据库的连接。如果考虑到大多数连接方法都会为Ï个连接指定专用的线程,即使您不是数学天才,您也很快就会认识到这种架构难于长久。

DB2 Connect 提供了一项连接集中(connection concentration)功能,将很多数据库连接分插(multiplexe)到数量少得多的一组大型机线程上,由这些线程处理从这些连接传进来的任务。管理员可以决定分配多少资源给一个应用程序(例如决定分配多少个线程)。这个 DB2 Connect 功能不仅使资源消耗情况可以预测,便于管理员预先计划(这是好事,这些人不喜欢出现意外),而且即使在工作负载比较低的情况下,仍可以保证现有的资源得到更好的利用。

例如,将多个连接分插或集中到一个线程上,可以减少总线程数。这样可以将一些大型机资源释放出来,否则这些资源就会被分配给那些处理很少活动的连接的线程。于是现在可以利用新释放出来的资源,将它们用在更好的地方,例如增加 EDM 池的大小,从而提高 EDM 池的命中率,减少语句准备的次数。最终可以提高应用程序的响应时间。

连接集中器(connection concentrator)是 DB2 Connect 特有的一个功能。不要将它与 DB2 Connect 同时提供的“连接池”混淆。连接池与连接集中器关键的不同之处在于:当另一个应用程序断开连接时,连接池可以让一个应用程序重用连接资源。而 DB2 Connect 中的连接集中器功能不要求应用程序断开连接就可以实现资源重用。现在,由于应用程序服务器常常会建立长时间(有时候长达几个星期甚至几个月)运行的连接,所以连接池已经变得不太重要,而连接集中则是必不可少的功能 —— 特别是在高容量环境中。

DB2 Connect 和数据共享
DB2 for z/OS 已成为高可用性数据库的基准,即使是作为竞争对手的供应商也抢着声称他们有大型机级的可用性 —— 这正是对大型机的恭维。由于 DB2 for z/OS 上的数据共享支持,大型机在可用性方面的声誉已经深入人心。

数据共享带来更高的可用性。如果某一个 DB2 子系统停机,或者出于维护的目的暂时离线,那么数据共享组中的其他 DB2 子系统就会接管目前离线的数据共享成员的工作负载。让一个数据库一天二十四小时、一周七天全天候地可用,但是又没有能够利用这种可用性的应用程序,这样没有任何意义。说也奇怪,在如今市场上,其他许多驱动程序供应商身上就可以碰到这样的情况。相反,DB2 Connect 可以一直对数据共享组的健康状况和状态有一个认识,并且可以透明地化解故障。例如,当一个 DB2 子系统停机时,DB2 Connect 知道它的资源是不可用的,它就会把事务转移到数据共享组中处于活动状态的子系统上。对任务的重新安排对于任何提交给服务器的新事务来说完全是透明的。出现故障时正在运行的事务将被取消,应用程序会收到一个 SQLCODE -904 (资源不可用)错误代码。当应用程序重新提交被取消的事务时(可以通过在应用程序中编写代码来实现),它就被安排到一个功能正常的 DB2 子系统上。

DB2 Connect 和网络
连接应用程序和大型机的网络是基础设施中另一个应该考虑的重要部分。对这个管道 的适当利用可以对应用程序以及整个系统的响应时间、吞吐率和可靠性产生重大的影响。虽然有许多 DB2 Connect 功能是看不到的,但这些功能使得对网络连接的使用方式与其他产品有很大的不同。

例如,DB2 Connect 使用结果集分块(blocking)。在将查询的结果发送回发出请求的应用程序之后,每当应用程序发出 FETCH 请求时,可以将结果逐行返回。或者,也可以将多个行一起返回,以便应用程序获取更多的行。DB2 Connect 每次尽可能发送回一整块的行(32 KB)。这大大减少了通过网络发送的请求和响应的次数。更重要的是,这样可以大大缩短获得下一个行的时间。

另一个有助于缩短响应时间的功能是下一个块的预取(pre-fetch)。DB2 Connect 服务器不仅接收块中的行,还可以在方便的时候请求多个块。当 DB2 Connect 收到一个 32 KB 的数据块时,它知道后面还有更多的数据,于是自动请求下一个块。当应用程序还在从第一个块中取行的时候,这个后续的块就已经到达。当第一个块被取尽之后,应用程序可以立即得到预取的第二个块中的行,并接着请求下一个块。最终的结果是,应用程序永远不用等数据,因为数据总是在本地内存中等待应用程序来取。

DB2 Connect 经过优化的网络通信基础设施具有减少与游标(结果集)管理相关的网络流的能力。当 DB2 Connect 检测到结果集中没有更多的行时(例如,它收到一个没有完全填满的块),它就会在 DB2 for z/OS 上关闭这个游标。当应用程序要求 DB2 Connect 关闭它的游标时,DB2 Connect 无需发送任何命令给大型机。它可以立即向应用程序作出响应,说这个请求已经完成。

这一节中列出的 DB2 Connect 的所有网络优化对于一个健康的、可伸缩的系统来说是极为重要的。通常,通信网络更适合在一个网络流中发送更多的数据,而不是每次传输一点点东西。随着 Gigabit Ethernet 的问世,TCP/IP 协议现在提供了发送非常大的帧(称为巨型帧)的能力。DB2 Connect 充分利用了这个能力,它会自动调整它所发送或准备接收的包的大小,直到这个包具有最佳大小。这个功能在复制和 ETL 之类的环境中特别有用,在这种环境下,需要通过网络传输大型的数据集。而且,它还可以结合 DB2 for z/OS 连续块流支持来进行传输,确保能够连续地传输数据,减少通信线路的周折。

结束语
在本文的第一部分,我们介绍了 DB2 Connect 提供的不同编程接口,以及实现这些接口的驱动程序。在最后几页,我们初步地描述了 DB2 Connect 提供的通信基础设施,我们查看了这个基础设施是如何大大减少对大型机资源的使用,并使分布式应用程序可以充分利用大型机平台的强大性(例如,轻松地管理混合的工作负载并提供连续的应用程序可用性)。

至此,您所学到的知识可以帮助我们开始理解 DB2 Connect 实际上是什么。阅读本文之后,有一点已经很清楚,DB2 Connect 是支持应用程序的 API 和一个健壮的通信基础设施的强有力结合,其中通信基础设施用于使分布式应用程序能够使用大型主机 DB2 服务器,如图 2 所示。

图 2. DB2 Connect 提供了用于将应用程序连接到数据的基础设施
DB2 Connect 提供了用于将应用程序连接到数据的基础设施

API 和连接基础设施构成了大型机数据库解决方案的强有力的基础。然而,这还不是 DB2 Connect 的全部。

在本文接下来的部分当中,我们将向您介绍 DB2 Connect 其他一些您可能不知道的功能,我们还将解释在解决当今企业中面临的实际业务问题时,如何利用这些功能。

后面的文章将谈到 DB2 Connect 如何提供对大型机 DB2 数据库以外的各种数据源的透明的数据访问。您将了解到如何将这些数据源集成到一个单独的数据库视图中,通过数据库视图为应用程序开发人员提供非常简单的开发模型,并为数据架构师提供透明的数据安排架构,使他们获得所需的灵活性。

这个系列的另一部分将注意力放在扩展企业数据和事务到移动设备上,例如 Pocket PC 设备、RIM 寻呼机和带有嵌入式操作系统的专用设备。

本系列的这个部分将涉及有关应用程序开发的一些话题,开发人员可以从中获益很多(那些 VB.NET 程序员希望构建能利用存储在 DB2 for z/OS 上的数据的应用程序)。您知道吗,DB2 Connect 可以使得构建使用大型机数据的应用程序变得和构建分布式应用程序一样容易。这都是在不会牺牲企业应用程序所要求的原则和安全性的环境下进行的。市场上很多产品声称可以提供容易的开发,而 DB2 Connect 已经真正做到了。

准备了解关于 DB2 Connect 的方方面面吗?继续关注吧 ... 您再也不会认为它只是一个驱动程序包了。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有