DRDA
在谈到分布式DB2数据时,有必要谈谈DRDA。 DRDA代表分布式关系数据库体系结构。 它是由IBM开发的一种体系结构,它使关系数据能够在多个平台之间分布。 平台和平台都可以相互通信。 例如,一个DB2子系统可以与另一个DB2子系统(如)进行通信。 或者,DB2子系统可以与第三方RDBMS通信(与此不同)。 平台不必相同。 只要它们都符合DRDA规范,它们就可以进行通信。 DRDA可以被视为一种“通用的分布式数据协议”。
本文将介绍DRDA。 请记住,没有供应商,甚至是IBM,都没有实现完全支持所有DRDA功能的RDBMS。
什么是DRDA?
DRDA是一组协议或规则,使用户能够访问分布式数据,无论其实际驻留在何处。 它提供了一个开放,健壮的异构分布式数据库环境。 DRDA提供协调分布式位置之间通信的方法。 这允许应用程序访问不同位置的多个远程表,并将它们显示给最终用户,就好像它们是逻辑整体一样。
但是,应该在架构和实现之间进行区分。 DRDA描述了分布式数据的体系结构,仅此而已。 它定义了访问分布式数据的规则,但它没有提供执行访问的实际应用程序编程接口(API)。 因此DRDA不是一个实际的程序,但更像是一个程序的规范。
当DBMS被认为符合DRDA标准时,所有暗示的是它遵循DRDA规范。 DB2是符合DRDA标准的RDBMS产品。
DRDA的好处
DRDA只是一种支持分布式RDBMS的协议。当然,如果您是DB2用户,那么它可能是唯一重要的用户。
DRDA提供的最大好处是其明确规定的支持分布式数据访问的规则。遵循这些规则的任何产品都可以与任何其他符合DRDA标准的产品无缝集成。此外,符合DRDA标准的RDBMS支持完整数据分发,包括多站点更新。然而,最大的优势是它现在可用,许多供应商正在加入DRDA合规行列。
DRDA的替代方案是利用网关产品来访问分布式数据。网关由至少两个组件组成:每个分布式位置一个。这些部件彼此通信。就DB2而言,基于主机的网关组件是必需的。它作为另一个大型机DB2应用程序。访问DB2的大多数网关产品都使用CICS(有时是VTAM)执行。但是,网关通常仅支持动态SQL。
因此,DRDA在性能领域还有两个优势:
- 删除与网关及其代码相关的开销
- 消除对它的依赖和不可避免的性能下降
RDA怎么样?
尽管DRDA是DB2使用的分布式体系结构,但它并不是业界唯一的体系结构。 RDA(远程数据库访问)是由ISO和ANSI标准委员会开发的一组竞争协议。
作为DB2开发人员,DRDA将是您用DB2实现分布式数据的方法。 但是,了解RDA有点不会受到伤害。
构建RDA是为了使用可从DBMS到DBMS的标准SQL子集。 DRDA旨在通过特定于平台的SQL扩展来运行。
静态SQL可以与DRDA一起使用; 使用RDA时,只有动态SQL可用。
DRDA功能
DRDA使用三个功能来提供分布式关系数据访问:
- 应用请求(AR)
- 应用服务器(AS)
- 数据库服务器(DS)
这三个功能在另一个上互操作以启用分布式访问。 让我们进一步研究这三个功能。
应用请求(AR)
DRDA应用程序请求程序(AR)功能使应用程序可以请求SQL和程序准备请求。 AR接受来自应用程序的SQL请求,并将它们发送到适当的应用程序服务器(或多个服务器)以进行后续处理。使用此功能,应用程序可以访问远程数据。
理论上,如果您感兴趣的所有数据都位于其他地方(即远程),则可能不需要本地RDBMS,并且DRDA不要求请求者在具有本地RDBMS的系统上运行。
对于DB2系列,DRDA AR功能是使用DB2 Connect实现的。
应用服务器(AS)
DRDA应用程序服务器(AS)功能接收来自应用程序请求者的请求并处理它们。这些请求可以是SQL语句或程序准备请求。 AS作用于可以处理的部分,并将剩余部分转发到DRDA数据库服务器以进行后续处理。如果本地RDBMS无法处理请求,则必须执行此操作。
AR使用称为应用支持协议的通信协议连接到AS。应用程序支持协议负责提供适当级别的数据转换。只有在请求中涉及不同的数据表示时,才需要这样做。一个例子是将ASCII字符转换为EBCDIC(反之亦然)。
数据库服务器(DS)
DRDA数据库服务器(DS)功能接收来自应用程序服务器或其他数据库服务器的请求。这些请求可以是SQL语句或程序准备请求。与应用程序服务器一样,数据库服务器将处理它可以执行的操作,并将余数转发到另一个数据库服务器。
请务必注意,数据库服务器请求可能适用于SQL语句的组件。当数据分布在两个子系统并请求连接时,就会发生这种情况。 join语句从两个不同位置的表请求数据。因此,必须在一个位置处理一部分;另一部分位于不同的位置。
由于分布式请求中涉及的数据库服务器不必相同,因此使用数据库支持协议。它存在的原因如下:
- 将应用程序服务器连接到数据库服务器
- 连接两个数据库服务器
与应用程序支持协议一样,数据库支持协议用于确保不同数据库服务器之间的请求兼容性。
返回是什么?
完全处理请求后,应用程序服务器必须通知请求进程,即应用程序请求者。这是如何完成的?
AS将返回码和结果集(如果生成一个)传递回AR。返回码是SQLSTATE(或SQLCODE)。在以下情况下不会生成结果集:
- INSERT
- UPDATE
- DELETE
- 没有行符合条件时选择SELECT
- DCL和DDL请求
除非使用光标,否则将使用此协议。当从只读游标获取行时,可以使用有限的块协议。有限块协议一次通过网络传递多行,即使一次提取一次只能处理一行。有限块协议通过最小化网络流量来增强整体性能。如果光标不是只读的(即,可以更新行),则不使用有限块协议。
DRDA架构和标准
为了使DRDA存在,它依赖于其他已建立的协议。以下各节将介绍这些体系结构。
高级程序通信程序(APPC)
高级程序到程序通信基于LU 6.2协议提供对等级通信支持。 LU 6.2是一种高级通信体系结构,它定义了功能等效逻辑单元之间通信的格式和协议。
APPC / LU 6.2提供协作处理和分布式事务处理所需的通信和事务处理设施。
分布式数据管理(DDM)
分布式数据管理体系结构定义了使用APPC和LU 6.2跨网络访问分布式数据的工具。使用DDM,要访问的分布式数据可以驻留在文件或关系数据库中。然而,在DRDA的背景下暗示了RDBMS。
格式化数据:对象内容体系结构(FD:OCA)
FD:OCA是一种体系结构,用于分配和交换字段格式的数据。使用FD:OCA,数据及其描述都打包在一起,以便任何符合DRDA的DBMS都能理解其结构和内容。
字符数据表示架构(CDRA)
字符数据表示体系结构是用于确保在任何SAA关系DBMS上使用的任何符号或字符具有相同含义而不管底层编码字符集的体系结构。 CDRA提供了一种从任何SAA平台明确识别数据的方法。
特别是在PC工作站(使用ASCII代码)和大型机(使用EBCDIC代码)之间传输数据时,CDRA是必需的。从理论上讲,CDRA可以扩展为支持其他代码(例如Unicode,一种获得支持的新字符编码方案)。
Application Requester
The DRDA application requester (AR) function enables SQL and program preparation requests to be requested by application programs. The AR accepts SQL requests from an application and sends them to the appropriate application server (or servers) for subsequent processing. Using this function, application programs can access remote data.
In theory, if all of the data that you are interested in is physically located somewhere else (i.e., remote), there may be no need for a local RDBMS, and DRDA does not require the requester to run on a system with a local RDBMS.
For the DB2 Family, the DRDA AR function is implemented using DB2 Connect.
Application Server
The DRDA application server (AS) function receives requests from application requesters and processes them. These requests can be either SQL statements or program-preparation requests. The AS acts upon the portions that can be processed and forwards the remainder to DRDA database servers for subsequent processing. This is necessary if the local RDBMS cannot process the request.
The AR is connected to the AS using a communication protocol called the Application Support Protocol. The Application Support Protocol is responsible for providing the appropriate level of data conversion. This is only necessary when different data representations are involved in the request. An example of this is the conversion of ASCII characters to EBCDIC (or vice versa).
Database Server
The DRDA database server (DS) function receives requests from application servers or other database servers. These requests can be either SQL statements or program preparation requests. Like the application server, the database server will process what it can and forward the remainder on to another database server.
It is important to note that a database server request may be for a component of an SQL statement. This would occur when data is distributed across two subsystems and a join is requested. The join statement is requesting data from tables at two different locations. As such, one portion must be processed at one location; the other portion at a different location.
Because the database servers involved in a distributed request need not be the same, the Database Support Protocol is used. It exists for the following reasons: