一种异构数据库之间多线程数据交换的方法技术

技术编号:7575512 阅读:366 留言:0更新日期:2012-07-18 19:04
本发明专利技术涉及数据库数据存储领域,尤其涉及一种异构数据库之间多线程数据交换的方法,该方法采用相互独立的多线程读写方式通过对数据缓冲池的应用,使系统可以在不同操作系统、不同数据库之间做到数据高效率转换和导入导出高速度,解决了现有技术中存在的问题。

【技术实现步骤摘要】

本专利技术涉及数据库数据存储领域,尤其涉及一种异构数据库之间多线程数据交換的方法。
技术介绍
数据库数据转换和导入导出在数据库领域中是经常需要使用的操作。传统的方式是采用数据库厂商专用的工具。这些工具在异构数据库之间转换和导入导出数据时通常具有以下不足1、仅针对単一数据库,无法或很难实现异构数据库之间导入或导出,性能不高,灵活性差。很难应用于数据库仓库领域。2、对于异构数据库之间数据类型转换自定义功能的支持较弱或不支持。3、配置繁琐,尤其在异构数据库导入导出场合,需要安装多种数据库客户端,每个客户端都需要単独配置,配置不统一,脚本编写麻烦。4、有些工具针对于特定操作系统,无法跨操作系统平台。
技术实现思路
本专利技术本专利技术为克服上述的不足之处,目的在于针对异构数据库之间大量数据处理的需要,提供一种异构数据库之间多线程数据交換的方法,采用相互独立的多线程读写方式通过对数据缓冲池的应用,使系统可以在不同操作系统、不同数据库之间做到数据高效率转换和导入导出高速度,解决了现有技术中存在的问题。本专利技术是通过以下技术方案达到上述目的,包括读线程、写线程和监控管理线程,读线程负责通过源对象接ロ从不同操作系统、不同类型的源数据库读取数据,源数据库数量可以是1个或多个,也可以是文件类型, 并以数据包形式放入数据缓冲池数据队列头部;写线程负责从数据缓冲池数据队列的尾部读取数据,并通过目标对象接ロ写入不同操作系统、不同类型的目标数据库,目标数据库数量可以是1个或多个,也可以是文件类型;监控管理线程负责整体系统的运行管理;其实施包括如下步骤1)读入配置參数,包括读写数据包大小、数据转换规则、源数据库信息、目标数据库信息、日志文件信息和读线程、写线程启动数。读入配置參数也可以将配置信息写到配置文件中,然后指定配置文件路径,通过读入文件的方式获得。一般情况下,数据包大小为2 IOM之间。数据转换规则是针对复杂类型的转换和用户特殊的转换规则,用户根据自身情况进行定制,如某数字类型字段在转换中保持的小数点位数,指定对应的转换类型数据。对于复杂数据转换还可以指定函数来处理,如对于oracle的date类型分别赋值给ー个db2的 date字段和time字段。这个函数实现可以用java语言,也可以指定为perl脚本函数。源数据库信息和目标数据库信息包括数据库url、操作系统、数据库类型、数据库3名称、用户名、密码。2)按照步骤1)所述配置參数要求,启动监管管理线程、读线程和写线程;3)读线程根据配置參数情况生成ー个或多个线程,通过源对象接ロ连接源数据库,将获取的数据分批放入到缓冲池中,当缓冲池未满时数据被加入到缓冲池中的数据队列的头部,当缓冲池满了的时候,阻塞读线程;4)写线程根据配置參数情况生成ー个或多个线程,连接目标数据库,从缓冲池的数据队列尾部获取数据并通过目标对象接ロ写入目标数据库,若缓冲池无数据则阻塞写线禾王;5)监控管理线程负责监控读写线程的工作情況,并记录日志,供调优分析,并根据调优分析结果动态调整读线程和写线程的比例和数量;6)如果所有的读线程发现没有数据可读,并且数据缓冲池中数据队列长度为零, 此时系统结束读线程和写线程,进行数据清理,监控管理线程停止整个过程。本专利技术的有益效果本专利技术支持异构数据库之间进行数据类型转换和处理工作, 为多种数据库提供统ー访问接ロ,屏蔽不同数据库之间数据接ロ差异。为增加数据处理效率,在系统中设计了多线程读写和数据缓冲池,避免传统ー边读ー边写相互影响的问题,既保证了系统效率又减小了系统开发工作量。部署维护方便,不依赖任何第三方应用程序,可独立运行。附图说明图1 一种异构数据库之间多线程数据交換的方法示意图。 具体实施例方式下面结合附图通过实施例对本专利技术作进ー步阐述一种异构数据库之间多线程数据交換的方法,包括读线程、写线程和监控管理线程,读线程负责通过源对象接ロ从不同操作系统、不同类型的源数据库读取数据,源数据库数量可以是1个或多个,也可以是文件类型,并以数据包形式放入数据缓冲池数据队列头部;写线程负责从数据缓冲池数据队列的尾部读取数据,并通过目标对象接ロ写入不同操作系统、不同类型的目标数据库,目标数据库数量可以是1个或多个,也可以是文件类型; 监控管理线程负责整体系统的运行管理;其实施包括如下步骤1)读入配置參数,包括读写数据包大小、数据转换规则、源数据库信息、目标数据库信息、日志文件信息和读线程、写线程启动数。读入配置參数也可以将配置信息写到配置文件中,然后指定配置文件路径,通过读入文件的方式获得。一般情况下,数据包大小为2 IOM之间。数据转换规则是针对复杂类型的转换和用户特殊的转换规则,用户根据自身情况进行定制,如某数字类型字段在转换中保持的小数点位数,指定对应的转换类型数据。对于复杂数据转换还可以指定函数来处理,如对于oracle的date类型分别赋值给ー个db2的 date字段和time字段。这个函数实现可以用java语言,也可以指定为perl脚本函数。源数据库信息和目标数据库信息包括数据库url、操作系统、数据库类型、数据库名称、用户名、密码。42)按照步骤1)所述配置參数要求,启动监管管理线程、读线程和写线程;3)读线程根据配置參数情况生成ー个或多个线程,通过源对象接ロ连接源数据库,将获取的数据分批放入到缓冲池中,当缓冲池未满时数据被加入到缓冲池中的数据队列的头部,当缓冲池满了的时候,阻塞读线程;4)写线程根据配置參数情况生成ー个或多个线程,连接目标数据库,从缓冲池的数据队列尾部获取数据并通过目标对象接ロ写入目标数据库,若缓冲池无数据则阻塞写线禾王;5)监控管理线程负责监控读写线程的工作情況,并记录日志,供调优分析,并根据调优分析结果动态调整读线程和写线程的比例和数量;6)如果所有的读线程发现没有数据可读,并且数据缓冲池中数据队列长度为零, 此时系统结束读线程和写线程,进行数据清理,监控管理线程停止整个过程。异构数据库之间难点是数据转换,不同数据库之间数据类型往往不一,直接导入很可能导致数据错误。数据转换功能主要针对特定的数据类型在异构数据库之间转换问题,由于历史原因,不同厂商数据库在对标准的实现上有所差异,比如针对于相同类型, 不同的数据库在实现细节方面有些是不一致的,在转换中需要根据情况进行转换,例如 Orac 1 e中的DATE含有年、月、日、时、分、秒,它和DB2/400中的DATE不相互对应,DB2/400中的DATE只有年、月、日,TIME类型含有吋、分、秒,因此日期和时间类型要进行转换。Oracle 中的NUMBER类型可以对应DB2/400中的很多类型,这种对应关系要依赖于Orac 1 e中 number将用于保存何种类型的数据,是整型还是带有小数位的实型数据,另外类型所占用的存储空间也不相同。为了转换过程中尽量保证数据的准确性,系统根据字段数据情况进行进行了智能判断和最优选择如对于oracle date类型的数据转换到db2的date类型, 将oracle的年、月、日数据赋值。若转换为db2的time类型则将用时、分、秒数据赋值。对于number类型是同样道理。系统根据两个数据库之间的异同进行判断。保证了大部分需求。数据缓冲池像是ー个容器提供数据的生命周期管本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:钟宏泽赵鹏
申请(专利权)人:浙江鸿程计算机系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术