首页 / 从远程数据源加载数据

从远程数据源加载数据失效专利 发明

技术内容

技术领域 本发明一般涉及数据库管理系统,以及,尤其是在基于计算机 的数据库管理系统内,用于将驻留在一个数据源的持续数据卸载、传 送并加载到远程数据源,而不被源或目标的文件传输系统的物理约束 所限制的机制。 背景技术 电子商务的日益普及已经促使许多公司求助于应用程序服务器 来有效地部署和管理它们的应用程序。非常普遍地,这些应用程序服 务器配置成与一个用于数据存储和检索的数据库管理系统(DBMS) 接口。这通常意味着新的应用程序必须在分布式数据环境下工作。结 果,应用程序开发者往往发现,他们对哪个DBMS产品将被用来支 持他们的应用程序或如何设计数据库只有很少的或没有控制权。在许 多情况下,开发者发现他们的应用程序重要的数据扩散到了由不同软 件厂商开发的多个DBMS。 通常希望从一个数据源卸载/提取/导出数据,将它输送到目标端 (target site),并且加载/导入数据到目标端数据存储库,而不被在 源端(source site)或目标端的文件传输系统的物理约束所限制。也 希望目标记录的加载可以在源记录卸载的同时实现。如果数据是逐个 记录地输送,这就可以实现,那样发送一个记录和接收另一个记录的 操作在源端和目标端同时进行。 然而,目前还没有这种能力。数据被卸载到一个文件、整个该 文件被传送、然后数据加载到目标端。文件中的数据传输通常使用文 件传输程序(FTP)执行。令人遗憾的是,公司使用FTP用于 DBMS应用程序可能会遇到一些障碍。通常需要关注的是,源端和 目标端文件格式可能不兼容。此外,传送的数据量可能超过了目标端 操作系统文件的最大大小。而且,如果设计需求要求从属性必须跨越 多个DBMS的数据库表中传输记录数据,则目前并不支持,因为目 前来自多个数据源的记录数据在传送时不能被连接起来。此外,希望 使用多种主导信息技术厂商支持的不同数据库产品,因为它们提供了 许多潜在的商业利益,比如增强的便携性和高度的代码重用。令人遗 憾的是,当前的DBMS厂商不支持在数据记录被传送时,逐个记录 地的数据传送模式,或来自多数据源的数据连接。 因此,开发者被迫转向更复杂(且潜在不方便)的其它可供选 择的方法来获得对所需数据记录的访问。其它方法的实现通常代价高 且耗时,这需要一个更复杂的编程技巧集来实现DBMS技术,其执 行消耗了附加的机器资源,可能增加开发和测试的劳动力需求,并潜 在地禁止了数据本身的便携性。 当应用程序开发者需要构造一个访问和传输在多个数据源中出 现的重要数据的应用程序时,一种目前可用的解决问题的方法包括人 工模拟的透明接入。在这种情况下,程序员担负了编写个别地连接到 每个必要的数据源、读入任何必要的数据、关联(或连接)从多个数 据源读入的结果、执行任何必要的数据翻译等的软件的责任。这实际 上有大量的工作,并大大超出了许多程序员的技术水平。而且导致了 巨大的成本。另外,还需要相当多关于所涉及的每个数据源的应用编 程接口(API)的知识,并提供较少的进行查询优化的机会,这可能 会抑制性能。 另一种目前可用来解决这个问题的方法需要数据的物理合并, 其中来自不同数据源的数据必须拷贝到单一的数据源中,随后程序员 将传送该数据源。然而,这增加了包括数据等待时间和额外开销的问 题。由于数据等待时间,数据的副本将从略微到严重地“老”于原 始数据源包含的数据。采用过时的(且潜在不精确的)数据工作对许 多应用程序可能是不能接受的。增加的开销包括软件开销,这是因为 必须购买、安装、配置和维护附加软件,以根据进度表或周期性原则 从一个源到另一个源拷贝数据,同时还包含人力开销。该软件必须支 持数据迁移工作或实现支持很低数据等待时间的数据复制过程。 因此,有必要提供一种能够逐个记录地,将通常驻留在多个数 据源并可能以不同的格式存储的持续数据传送到目标端仓库的方法和 系统。这将简化应用程序的设计、开发和维护,并提供更可靠的、具 有否则将不能访问的功能的应用程序。 发明内容 本发明上述及其它目标,特征和优势,由下面参考几幅插图对 优选实施例的详细描述中将变得明显。 本发明的一个优选实施例是在一个通过数据库连接通信线路连 接源端和目标端的计算机系统网络中,从远程数据源逐个记录地加载 数据的方法。源端拥有至少一个数据源和一个具有访问DBMS的多 数据库访问的软件服务器。目标端通过一组结构化查询语言(SQL) 语句或其等价物请求从源端加载数据。根据多数据库访问通信协议, 数据通过数据库连接通信线路逐个记录地输送,其中源端卸载记录的 同时目标端加载记录。数据加载也可以以流水线(pipeline)的方式 执行,以多个并行流将数据记录加载到多个分区中,所述多个并行流 由多个数据源分区指针(cursor)所指向。具有对DBMS的多数据 库访问的软件服务器,优选使用分布式关系数据库体系(DRDA), 并且数据库连接通信线路优选使用TCP/IP协议。 本发明的另一个优选实施例是实现本发明上述方法实施例的设 备。 而本发明的另一个优选实施例是明确配置了计算机可执行的指 令程序来执行本发明上述方法实施例的方法步骤的计算机可读的程序 存储设备。 附图说明 现在参看插图,其中例如参考数字代表了全篇相应的部分: 图1根据本发明的优选实施例图解说明一个典型的计算机硬件 和软件环境的框图;以及 图2根据本发明的优选实施例图解说明了LOAD命令的几个 选项的语法格式。 具体实施方式 在下文所描述的优选实施例中,提及伴随的形成其一部分的参 考图,参考图阐明特定的发明可行的实施例。其它的实施例能被利 用,并且结构和功能的变化能不脱离本发明的范围将被理解。 本发明集中在系统、方法和程序存储设备上,该设备包含计算 机可执行的指令程序来实现本发明的方法,该方法逐个记录地将通常 驻留在多个数据源并可能以不同的格式存储的持续数据传送到目标端 仓库。来自多数据源可能以不同格式存储的数据的传输,采用被称为 多数据库软件服务器的现有的常规技术来完成。因此,开发者能够逐 个记录地传输数据且记录属性可能跨越多个数据源。而且,它们能够 在单一的事务中访问任何或所有的这些属性。由于本发明可以被多种 主导信息技术厂商所支持,这提供了许多潜在的商业利益,比如增强 的便携性和高度的代码重用,而不用给应用程序开发者安置任何编程 负担。 本发明的优选实施例优选使用具有对DBMS的多数据库访问的 软件服务器访问数据源,例如分布式关系数据库体系(DRDA)软件 服务器,目标端通过结构化查询语言(SQL)命令或其等价物可访问 该软件服务器。数据优选根据DRDA通信协议规则逐个记录地格式 化和传送,并直接加载到目标端。本发明优选使用标准的SQL命 令,该命令可能是复杂的SQL命令。这允许使用联合和连接函数 (union and join function)用于将来自多个数据源的数据连接起来。 由本发明的实施例,一旦一个或多个数据记录从源端卸载,数 据记录就能够被传送,并且一旦一个记录被传送到目标端,目标端的 数据加载就能够开始。因此,在源端卸载记录的同时目标端能够加载 记录。而且,由于所有将被传输的数据不必完全在传输之前加载到一 个文件,数据量可能是无限的,且不被最大文件传输系统大小所限 制。而且使用DRDA或类似的通信协议提供了一种中性的数据格 式,并不关注加载和卸载端文件格式是否兼容。 本发明允许目标端的用户请求数据从源端传送到目标端。这优 选采用SQL DECLARE CURSOR FOR SELECT语句来完成,它通 过指针名称引用源端表的SELECT命令结果行。这个命令送到源端 执行。下一步,目标端的用户使用LOAD命令,该命令指定目标端 表格。LOAD命令使用一个在本发明中定义的新的算子 INCURSOR,它使用和SELECT语句中相同的指针名称,指示将 要加载到目标端表格中的数据位置。因此,本发明使用指针名而不是 当前用INDDN定义的文件名来分别引用每一个数据记录,而不是引 用整个文件。 图1根据本发明的优选实施例图解说明一个典型的计算机硬件 和软件环境的框图,包括目标端100和源端102,每端有一个或多 个执行存储在关联的计算机存储器(未绘出)中的指令的常规处理器 (未绘出)。工作存储器可加载通过可选的存储驱动器或通过与网络 的接口接收的指令。当本发明的优选实施例使用在网络环境中时特别 有利,在目标端100有一个控制台终端(未绘出),且目标端100 的处理器通过数据库连接通信线路116连网到源端102,所述数据库 通信线路最好是TCP/IP通信线路,根据DRDA通信协议规则在该 通信线路上传送记录。 源端102处理器连接到一个或多个电子存储设备106,例如存 储一个或多个关系数据库的磁盘驱动器。存储设备104也应用在目 标端100。它们可能包括,例如,光盘驱动器、磁带和/或半导体存 储器。每一个存储设备允许接收程序存储设备,例如磁介质盘、磁 带、光盘、半导体存储器和其它机器可读的存储设备,并允许将记录 在程序存储设备上的程序步骤读取并传送到计算机存储器。记录的程 序指令可能包括用于本发明的实施例的方法的代码。另外的,程序步 骤可以从计算机通过网络接收到工作存储器。 在目标端100的控制台终端的操作者使用标准的操作者终端界 面(未示出),例如IMS/DB/DC,CICS,TSO,OS/2或其它类似 的界面,来向目标端100和从目标端100发送电子信号,该信号代 表了在源端用于执行各种任务的命令,例如在存储于电子存储设备 106上的数据库中搜索和检索函数或术语查询。在当前的发明中,这 些查询优选符合SQL标准,并调用由位于源端102的数据库管理 系统(DBMS)(这可能是DBMS家族108的一部分)执行的函 数。在目标端100也存在DBMS 110。在本发明的优选实施例中, RDBMS软件是IBM为AS400、OS390或OS/2操作系统、微软 视窗操作系统或任何基于UNIX被DB2支持的操作系统提供的 DB2产品。但是,本领域技术人员将认识到将本发明应用到任何使 用SQL的RDBMS软件,并可类似的应用到非SQL查询。 图1进一步图解说明了可实现本发明优选实施例的软件环境。 图1所示的系统中,目标端100进一步包括了本发明的交叉加载 (crossloader)软件114,该软件能通过数据库连接通信线路116 和位于源端102的交叉加载软件112通信。每一个交叉加载软件 112、114如下所示,包括一组指令用来逐个记录地执行本发明的数 据发送。目标端100还包括DRDA界面118且源端也包括 DRDA界面120。交叉加载软件114也和DBMS 110连接,且交 叉加载软件112连接到DBMS 108,以允许对数据库条目的访 问。而且,目标端100还包括数据类型转换模块122,需要时用来 进行DRDA协议支持的数据类型转换。源端102进而包括多数据 库软件服务器124,例如图1所示的连接于交叉加载软件112和 DBMS家族108之间的数据连接器(DataJoiner)模块,用于从不 同的DBMS迁移数据(例如从Oracle到DB2)。 本发明实施例的方法包括下面的步骤。首先,用户确定要发送 的数据,数据可能在不同的数据源端,并以不同的格式存储。例如, 她/他可以识别驻留在DB2、Oracle、Sysbase、Informix、IMS或 VSAM数据库,SQL服务器或NCR Teradata中的DBMS家族 108的表格中的某些记录与他/她的应用程序相关并应当迁移。数据源 识别中所涉及的步骤的精确特性可以改变。本发明的优选实施例通过 发布SQL命令来实现,但能够使用许多的其它方法。 如果使用的数据来自分布式数据源,在下一步,用户使用软件 工具从包含数据的DBMS家族108连接到数据源,并使用该软件 工具注册这些数据对象。如图1所示的数据连接器124,这种软件 工具具有多数据库软件服务器的能力,有时称为联合DBMS (federated DBMS),它可以访问多数据源,其中的每一个可以驻留 在不同的系统中,并以不同的格式存储。本发明的优选实施例使用 IBM的DB2数据连接器多数据库软件服务器124,例如用于 DB2 V6.1的数据连接器V2.1,来实现与包括Oracle DBMS、 Sybase DBMS、Informix DBMS等的DBMS家族108的连接。 然后,使用软件工具,即多数据库软件服务器,用户从数据源 创建将来自先前注册的数据的多个多属性合并的命令。该步骤的一个 实现可能包括交叉加载软件114使用一条SQL SELECT语句访问 关系DBMS表格或景象(view),该景象基于应用程序的特定需求 连接从不同的,有时是远程的数据源(例如表格)来的数据。每一句 SELECT命令适当的过滤数据,有时进行选择以将得到的记录或景 象限制为与一个或多个数据源(表)相关联的行和列的子集。对 SELECT语句,用户必须声明一个指针。这可以允许标准的数据库 连接机制连接到软件工具,即多数据库软件服务器,以便逐个记录地 索引数据,仿佛数据来自单一的表。 接下来,在目标端100的交叉加载软件114中的标准的SQL 命令,例如LOAD命令,可用于建立与上述声明的指针的连接,用 于加载由上述定义的景象所代表的数据。一旦完成上面略述的步骤, 程序员能以隐藏他们所需访问数据的分布式属性的方式获得对数据的 访问。这推动了许多有用的商业应用程序地有效开发,因而最小化了 开发和维护成本。使用本发明,用户能够将应用程序从DB2家族的 一个成员迁移到另一个成员。表可能大于服务器操作系统所处理的文 件大小。 由于当前发明使用标准的SQL它能够使用三部分名称来通过 数据位置、方案名称和表格名称标识源数据(如对分布式访问所要求 的那样)。另一实施例使用CONNECT语句来连接源端102和目 标端100。本发明优选使用动态SQL语句构造SQL语句的实用 程序块。EXEC SQL实用程序命令用于指针声明。一些其它的可动 态执行的SQL语句也可以在同一EXEC SQL命令中定义。 下面的语法图说明EXEC SQL命令的格式,其中在同一程序 块中“declare cursor spec”命令后面可跟随“non-select dynamic SQL statement”: >>--EXEC--SQL---declare cursor spec----------ENDEXEC------->            ‘-non-select dynamic SQL statement-’ 短语“declare cursor spec”作为DECLARE CURSOR语句输 入来定义指向SELECT语句结果的指针。它具有下述SQL格式: >>--DECLARE--cursor-name--CURSOR--FOR--select-statement--ENDEXEC--> 短语“cursor-name”识别一个指针。“select-statement”确定 SQL SELECT命令,用于从由在指针声明的语句中声明的指针所指 向的表格中提供结果行。 短语“non-select dynamic SQL statement”指向用于执行在 EXECUTE IMMEDIATE模式中的指定SQL语句的命令。“non- select dynamic SQL statement”可以是下述SQL语句中的一个: °ALTER         °RENAME °COMMENT ON    °REVOKE °COMMIT        °ROLLBACK °CREATE        °SET CURRENT DEGREE °DELETE        °SET CURRENT LOCALE LC_CTYPE °DROP          °UPDATE °EXPLAIN       °SET CURRENT OPTIMIZATION HINT °GRANT           °SET CURRENT PATH °INSERT          °SET CURRENT SQLID °LABEL ON        °SET CURRENT PRECI SION °LOCK TABLE      °SET CURRENT RULES SQL语句执行时,指定的语句串被解析和校验错误。如果 SQL语句无效,它就不会被执行,且阻止它执行的错误状态被报 告。如果SQL语句有效,但是在它执行时发生了错误,该错误状态 被报告。如果语句完成需要花费过多的处理器时间,DB2可以停止 SQL语句的执行。当这种情况出现时,发生错误并进行报告。无论 何时错误发生,实用程序会终止。 一个用来声明一个指针以从MYSOURCE示例表中选取所有的 行和列的有效DECLARE CURSOR语句的例子如下所示: EXEC SQL DECLARE C1 CURSOR FOR SELECT*FROM MYSOURCE ENDEXEC LOAD命令可以有多种选项。图2根据本发明的优选实施例 图解说明了LOAD命令几个选项的语法格式。 在LOAD命令中“INCLUDE cursor-name”参数的使用是本发 明的优选实施例。LOAD命令指定同一指针指向要卸载的源端数 据。因而,指针必定已经在“declare cursor for select”语句中声明。 在SELECT语句表中的列名称一定要与目标表中的列名称相一致, 以接收加载的记录。然而,选择列表中的“AS”子句能够用来改变 SELECT语句返回的列名称。 下面的两个例子说明了本发明的优选实施例的实现。 例1:此例声明指针C1并把记录从源端表格中加载到目标端 表格中,这作为声明指针C1的SELECT语句的结果而得到。 LOAD命令被修改以接受INCURSOR参数,用于逐个记录的 传输模式,这代替了用于常规的整个文件传输的INDDN参数。 EXEC SQL CREATE TABLE MYTARGET LIKE MYSOURCE ENDEXEC EXEC SQL DECLARE C1 CURSOR FOR SELECT*FROM MYSOURCE ENDEXEC LOAD DATA INCURSOR(C1) REPLACE INTO TABLE MYTARGET 本发明也具有可以以多个并行流(即以流水线模式)执行数据 传输的优选实施例。 例2:本例说明并行加载数据到MYTRAGET表格的多个分 区的方法,数据作为SELECT语句的结果而得到,如为每一分区指 针C1-C4所声明的那样。执行LOAD命令以在由分区指针C1-C4 所指向的四个并行流中取数据(流水线模式), EXEC SQL DECLARE C1 CURSOR FOR SELECT*FROM MYSOURCE WHERE EMPNO<=’099999’ ENDEXEC EXEC SQL DECLARE C2 CURSOR FOR SELECT*FROM MYSOURCE WHERE EMPO>’099999’AND EMPNO<=’199999’ ENDEXEC EXEC SQL DECLARE C3 CURSOR FOR SELECT*FROM MYSOURCE WHERE EMPO>’199999’AND EMPNO<=’299999’ ENDEXEC EXEC SQL DECLARE C4 CURSOR FOR SELECT*FROM MYSOURCE WHERE EMPO>’299999’AND EMPNO<=’999999’ ENDEXEC LOAD DATA INTO TABLE MYTARGET PART 1 REPLACE INCURSOR(1) INTO TABLE MYTARGET PART 2 REPLACE INCURSOR(2) INTO TABLE MYTARGET PART 3 REPLACE INCURSOR(3) INTO TABLE MYTARGET PART 4 REPLACE INCURSOR(4) 本发明优选通过DRDA处理分布式数据库之间的交互作用,当 程序员需要访问存储在DBMS家族108的多个DBMS中的数据 时,这可以简化开发任务。DRDA提供公用的SQL API,位置透明 以及(在某些情况)功能性补偿。此外,可以执行多数据库连接和联 合,而不用手动连接每一个数据源,从每一个数据源检索必要的数 据,在一些应用程序管理的数据结构中临时存储这些数据,并编码必 要的逻辑来处理与连接或联合操作相关联的数据集成。这些工作通过 多数据库软件服务器自动处理,它提供物理上可能分布并存储于不同 的DBMS的数据的单端映像(single-site image)。 本发明的优选实施例消除了从不同数据源来的数据的物理合并 的需要,因此避免了所涉及的软件和劳动力开销,也避免了由于数据 等待时间所引入的逻辑曝露问题。它们也减轻了程序员编写用于分别 连接到每一个所需的数据源,读入任何所需数据,使从不同数据源读 入的结果相关(或连接),执行任何所需数据翻译的软件等的负担。 这是完全超过了许多程序员技术水平的实质性工作量,并会导致大量 的成本。此外,程序员不必拥有不同数据源间的差别的详细知识。 本发明优选根据RDRA协议使用数据格式,并通过TCP/IP 数据库连接通信线路应用千兆以太网传送数据。它可以用来从本地或 远程目标端表格加载数据。由于本发明的高速度、稳定性、高效性和 灵活性,它尤其对来自主机计算机(源端)仓库(CC或可视仓库) 的大量数据的常规自动更新(下载)有用。它也能够用于除了DB2 的其它DBMS,例如DL/I或VSAM。本发明可以用于不同操作系 统,例如OS/390,UNIX,Windows,OS/2等,支持的DBMS。它支 持实用程序中的DDL和DML执行,例如CREATE/DROP表, GRANTs INSERT/UPDATE/DELETE,等,而无需使用 DSNTIAD。 本发明的优选实施例可以支持由数据转换模块122执行的几种 数据类型转换,例如数字的,ASCII/EBCIDIC/Unicode、代码页等, 以及取数据块,且没有文件大小的限制或行和域的开销。这些简化了 应用程序的设计、开发和维护,并提供了更可靠的、具有当前不能实 现的功能的应用程序。 本发明优选实施例的上述描述为了描述和图解说明而提出。它 不意指详尽的或限制本发明公开的精确形式。根据上述的教导有可能 有许多修改和变化。这意指本发明的范围不被详细描述所限制而是被 关于本发明随附的权利要求所限制。

相关技术
数据源相关技术
源加相关技术
伊丽莎白·B.·哈迈发明人的其他相关专利技术