异构数据库系统之间进行数据通信的技术侯爱民1(东莞理工学院计算机科学与技术系 广东东莞 523808)摘要 数据库在企业信息管理中占有重要的地位。
面对各种各样的数据库(Orcale ,Sybase SQL Anywhere ,MS SQL Server ,Informix ,等等)和同一个数据库的不同版本,如何保留历史数据和利用共享数据,是企业管理者所关心的一件事情。
本文讨论了采用数据管道来解决数据库系统之间进行数据通信(即从一个数据库系统中传递历史数据或共享数据到另一个数据库系统中)的一种技术,论述了利用可视化的高级语言开发工具(PowerBuilder )及其数据管道对象来实现这项技术的原理、方法及程序实现。
关键词 信息管理,数据库,数据管道,通信A Technique of Data Communication between HDBAimin Hou(Department of Computer Science and Technology , Dongguan University of Technology,Guangdong Dongguan 523808,China)Abstract : Database plays a key role in the business informatiom management . Facing the fact that there exist many different kinds of databases (for example , Qracle , Sybase SQL Anywhere , MS SQL Server , Informix , etc) and a various versions of the same database , how does the business manager remain the old data and enjoy the share data ? It is indeed a tough problem which the business manager should concern with . This paper discusses a technique for using data pipeline to solve the data communication between databases , so as to transfer the old or share data from one database to another , and presents the principle 、method and program of this technique which is accomplished based on a visual programming language (i .e . PowerBuilder) and a PB’s data pipeline object .Keywords : information management ; database ; data pipeline ; communication学科分类:520人们在进行信息化管理时要使用数据库系统。
市场上的数据库产品多如牛毛,大型数据库系统有Oracle ,Sybase SQL Anywhere ,MS SQL Server ,Informix 等。
桌面数据库有Access ,FoxPro ,Paradox 等。
既然市场存在如此多的数据库系统,那么,在它们之间进行数据共享就是一件十分重要和自然的事情了。
另一方面,即使同一个用户,他也很有可能前后使用了两套管理系统产品,或一套管理系统的两种版本的产品。
这两套或两种管理系统各自使用的数据库系统可能是同构的,也可能是异构的。
不管怎样,尽最大的可能利用以前的数据,减少不必要的重复投资和工作量,就是一件具有现实意义的事情了。
为了实现不同数据库系统之间的数据共享,人们必须找到一种行之有效的方法,在各个数据库系统之间传递数据,并且要保证在传递过程中数据的一致性和完整性。
利用可视化的高级语言(PowerBuilder )中的数据管道对象,就可以实现这样的通信技术。
本文着重讨论了这项 1 侯爱民,男,1963年生,副教授,硕士。
主要研究领域为智能安全系统,神经网络,数据库系统_______________________________________________________________________________技术的原理、方法及程序实现。
1 方法概述为了对本文讨论的技术的设计有个全貌的认识,我们先从总体上进行概述。
1.1 数据管道数据管道在源数据库中和目标数据库中以数据表的形式进行表结构和数据的传输。
它提供了一条简洁的方法,在同构或异构数据库之间传递数据。
使用数据管道进行数据传递,通常有两种方法。
方法一,在数据管道画板中设计数据管道并执行。
方法二,生成数据管道对象,在程序中通过一定的触发条件来执行。
使用方法一,对操作人员要求较高,必须具有计算机专业水平。
使用方法二,可以由计算机专业人士编制成软件产品,然后由普通人员来使用。
本文着重讨论第二种方法的实现技巧。
在创建数据管道对象时,必须指定数据管道的如下特性:源数据库——数据的传递方。
目标数据库——数据的接收方。
源数据库用户表——源数据库中取出数据的那个用户表。
目标数据库用户表——目标数据库中接收数据的那个用户表。
管道操作类型——定义数据管道的执行方式,具体实现数据从源数据库用户表传递到目标数据库用户表的过程中对后者的影响方式和结果。
传递行数——定义一次提交所包含的源数据库用户表中的记录条数。
允许发生的最大错误数——定义一次提交中传递记录失败的最大条数。
低于这个阈值,本次提交事务的操作成功。
高于这个阈值,本次提交事务的操作失败。
扩展特性——定义源数据库用户表中需要传递的扩展特性。
比方说,BLOB(二进制大对象)列。
1.2 设计原则若要在应用程序中使用数据管道进行程序设计,开发出一个成功的数据库之间的通信技术,应当遵守以下设计原则:建立数据库——使用数据库管理系统各自建立源数据库和目标数据库。
主要定义数据库的结构(表,视图,组,元数据,存储过程和函数,用户,触发器),表的结构(字段,主键,外键,索引),字段的属性(字段名,数据类型,宽度,小数点位数,是否允许为空,缺省值)。
使用ODBC定义数据源——ODBC(Open DataBase Connectivity开放数据库互连标准)为应用程序连接数据库提供了一个开放式的标准接口。
定义数据源就是通过ODBC接口与某个特定的用户数据库建立连接,直接使用该数据库的驱动程序,从而实现对该数据库的操作。
因此,必须使用ODBC定义源数据库的数据源和目标数据库的数据源。
建立数据管道对象——在PB的数据管道画板中进行操作。
主要完成前面提到的数据管道若干特性的定义。
该对象的实质是若干条描述数据库怎样从源数据库向目标数据库传递数据的SQL语句。
建立数据管道用户对象——在PB的用户对象画板中进行操作。
该对象是从数据管道系统对象继承而来的。
通过执行该对象的函数和事件,来执行并监控数据管道的运行。
建立窗口——在PB的窗口画板中进行操作。
该窗口主要用作应用程序窗口,是与用户进行交互操作的界面。
在该窗口中设计相应的菜单或按钮,通过编写菜单或按钮的事件来调用数据管道用户对象的函数,从而执行数据管道,修改管道错误,终止管道运行。
在该窗口中还要设计一个数据窗口控件,用来显示数据管道运行时产生的错误信息。
需要特别提醒的是,不要将任何数据窗口对象与该数据窗口控件相联系。
1.3 框图表示使用ODBC连接不同的数据源,使用数据管道传递数据,它们的工作原理及流程如下列框图所示。
2 ODBCODBC是一种用来在相关的或不相关的数据库管理系统(DBMS)中存取数据的标准应用程序设计接口(API)。
通过使用ODBC API,应用程序可以存取保存在多个DBMS中的数据,即使每个DBMS使用不同的数据存储格式和编程接口。
为了解决与不同的DBMS进行数据通信的问题,ODBC定义了一个抽象术语“数据源”。
ODBC将“数据源”这一名称映射到适当的驱动器、网络软件、服务器名称或地址、以及DBMS 中的上下文中。
所以,必须首先使用ODBC定义一个与具体的DBMS打交道的“数据源”。
在这里,为了实现两个数据库之间的通信,必须定义两个数据源:源数据库的数据源,目标数据库的数据源。
假定源数据库管理系统使用的是Sybase公司的Adaptive Server Anywhere 6.0,目标数据库管理系统使用的是Microsoft公司的MS SQL Server 7.0。
在控制面板中,双击“ODBC(32bit)”图标,进行数据源的设置。
具体的“数据源”定义内容如下:源数据库的数据源的定义目标数据库的数据源的定义Data Source Name: ds_ASA Data Source Name: ds_MSSDescription: Source Database Description: Object DatabaseUser ID: dba Login ID: saPassword: *** Password: ********Server Name: <default> Server Name: MSS_ServerStart line: C:\example\Support\ Network Address: 11.1.8.126:1433 Dbeng6.exe –q –c8m Database Name: db_objectDatabase Name:db_source Database file: C:\Program Files\MicrosoftDatabase file: c:\example\db_source.db SQL Server\MSSql\Data\db_object.mdfNetwork Protocols:TCP/IP Network Protocols: TCP/IP在控制面板中定义好数据源以后,若想在PowerBuilder中使用这些数据源,创建数据管道对象的话,还需要在PowerBuilder中配置数据库描述文件。
具体的配置参数如下:源数据库的描述文件的定义目标数据库的描述文件的定义在PB环境中,单击“Database Profile”在PB环境中,单击“Database Profile”图标,选中“ODBC”节点,单击图标,选中“MSS MS SQL Server”节点,“New”按钮。