本发明专利技术公开了一种用于异构数据库之间数据复制的系统及方法,该系统包括:用于在计算机中创建并初始化数据共享内存、消息队列和信号量的初始化模块;包括数据读取器、数据适配器和数据装载器的源数据处理模块;用于根据消息队列中消息将数据共享内存中目标数据复制到至少一个目标数据库中的目标数据复制模块;用于释放复制完毕数据共享内存的清理模块。该方法包括:在计算机中创建并初始化数据共享内存、消息队列和信号量;从至少一个源数据库中读取数据,然后将该数据转成至少一个目标数据库的目标数据,再将转换后数据装载入数据共享内存;根据消息队列中消息将数据共享内存中目标数据复制到至少一个目标数据库中;释放复制完毕的数据共享内存。
【技术实现步骤摘要】
本专利技术涉及一种用于数据库数据复制的系统及方法,尤其涉及一种用于异构数据 库之间数据复制的系统及方法,属于数据库
技术介绍
近年来,数据库技术实现了迅速发展,大型企业在选择商业数据库(例如Oracle、 DB2、Sybase等)时,一般都会根据实际情况配置异构的数据库产品,以提高不同系统间的 兼容性以及系统的容灾能力。在此所涉及的“异构的数据库”概念,是广泛包括计算机体系 异构、操作系统异构以及数据库产品异构的情况,而数据库产品的异构又包括不同的数据 库管理系统与不同版本的数据库管理系统的情形。一旦采用了异构的数据库产品,就会面临需要在不同的数据库之间进行高效及 时、安全稳定的数据复制这个棘手的问题。这里的数据库“复制”是包含两个层面的内容 一是数据的转移,例如应用对数据库A产生了一批新数据,则作为备份的数据库B (可能同 构也可能异构)也需要及时地“增加”对应的数据;二是数据的同步,例如部分数据记录的 修改(或删除),也应快速地在其他数据库(可能是做备份,可能是做参数分发等)上反映 出来。当前,学术界和业界解决异构数据库之间数据复制的几种主要方法是(1)拷贝 法。即通过数据库管理系统导出成特定格式的文件,再将数据导入到目标数据库中;(2)变 化捕捉法。该方法是通过捕捉源数据库内数据的变化,再作用到目标数据库中。实现的具 体方法比较多,如触发器法、日志法、广播法等等;(3)特定的产品。基本上大型数据库管理 系统都提供一套复制组件,提供有限度的复制功能。然而,现有技术中的上述复制技术均存在一定的缺陷。具体而言,拷贝法需要占用 大量的存储开销,实时性也较差,对于异构数据库的支持更是要取决于数据库厂商;对于变 化捕捉法,其实时性较好,但是会对源数据库产生较大的额外负担,无法满足大批量实时数 据的转移或同步;而特定厂商的复制产品,则大部分只针对厂商自身的产品量身定做,因此 对于异构数据库支持不够,也无法满足大批量实时数据的转移或同步需求。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种用于异构数据库之间数据复制的系统及方 法,以解决在现有技术的异构数据库之间数据复制中存在的效率低、通用性差和处理大批 量数据的实时性不佳等问题。为实现上述专利技术目的,本专利技术采用的技术方案如下一种用于异构数据库之间数据复制的系统,其包括初始化模块,其用于在计算机中创建并初始化数据共享内存、消息队列和信号量 以用于存储数据;源数据处理模块,其包括数据读取器、数据适配器和数据装载器,所述数据读取器用于从至少一个源数据库中读取源数据,所述数据适配器用于将所述数据读取器读取的 源数据转换成至少一个目标数据库的目标数据,所述数据装载器用于将转换后的所述目标 数据装载入所述数据共享内存;目标数据复制模块,其用于根据所述消息队列中的消息将所述数据共享内存中的 所述目标数据复制到所述至少一个目标数据库中;以及清理模块,其用于释放所存数据已被复制完毕的所述数据共享内存。优选地,每一个所述数据共享内存对应于一个目标数据库中的一个目标表,所述 数据共享内存的结构包括共享内存体,其包括多个用于存储数据的共享内存段,每个所述 共享内存段中的基本存储单位是数据元,所述数据元对应于所述目标数据库中的一个目标 表的一条记录或该记录中部分字段的组合;以及,共享内存头,其用于存放所述共享内存体 的管理信息,所述管理信息包括该共享内存体中所述共享内存段的数量、该共享内存段中 所述数据元的数量、所述目标数据记录的长度以及每个所述共享内存段的运行状态;所述 消息队列包括任务消息队列与空闲内存通知消息队列,所述任务消息队列用于存放任务 消息,所述空闲内存通知消息队列用于存放通知出现空闲共享内存段的消息。优选地,所述数据适配器还包括用于筛选和/或重构数据记录的处理单元。优选地,所述数据装载器包括装载单元,其用于将数据装载入所述共享内存段; 锁定单元,其用于通过所述信号量锁定所述共享内存头;修改单元,其用于修改存于所述共 享内存头中的所述共享内存段的运行状态;以及,控制单元,其用于检索并获取与所需存放 的数据相适配的空闲共享内存段,并通过调用所述装载单元、所述锁定单元与所述修改单 元以将所需存放的数据完全存放于所述空闲共享内存段中。优选地,所述初始化模块、源数据处理模块、目标数据复制模块和清理模块均配置 为至少一个,并且所述源数据处理模块与所述目标数据复制模块的配置数目应使得所述源 数据处理模块的数据装载速度与所述目标数据复制模块的数据复制速度相匹配。优选地,每个所述共享内存体中所述共享内存段的数量均与所述空闲内存通知消 息队列的容量相等。一种用于异构数据库之间数据复制的方法,其包括如下步骤a、在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;b、从至少一个源数据库中读取数据,然后将所读取的数据转换成至少一个目标数 据库的目标数据,再将转换后的所述目标数据装载入所述数据共享内存;C、根据所述消息队列中的消息将所述数据共享内存中的所述目标数据复制到所 述至少一个目标数据库中;以及d、释放所存数据已被复制完毕的所述数据共享内存。优选地,每一个所述数据共享内存对应于一个目标数据库中的一个目标表,所述 数据共享内存的结构包括共享内存体,其包括多个用于存储数据的共享内存段,每个所述 共享内存段中的基本存储单位是数据元,所述数据元对应于所述目标数据库中的一个目标 表的一条记录或该记录中部分字段的组合;以及,共享内存头,其用于存放所述共享内存体 的管理信息,所述管理信息包括该共享内存体中所述共享内存段的数量、该共享内存段中 所述数据元的数量、所述目标数据记录的长度以及每个所述共享内存段的运行状态;所述 消息队列包括任务消息队列与空闲内存通知消息队列,所述任务消息队列用于存放任务消息,所述空闲内存通知消息队列用于存放通知出现空闲共享内存段的消息。优选地,所述步骤b中还包括对所读取的源数据记录进行筛选和/或重构的处理步骤。优选地,所述步骤b中将转换后的所述目标数据装载入所述数据共享内存的具体 步骤包括bl、检索当前是否存在空闲的共享内存段;b2、判断所得的检索结果,并进行如下的处理如果存在空闲共享内存段,则根据所述空闲共享内存段对应的共享内存头中的所 述管理信息,进一步判断所述空闲共享内存段的空间是否大于存放所述目标数据所需要的 空间如果大于所需要的空间,则直接将所述目标数据装载于该空闲共享内存段,然后 向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个 目标数据库中;如果等于所需要的空间,则先装载所述目标数据,然后锁定所述共享内存头,再将 已装载所述目标数据的共享内存段的运行状态表示为装载完成,并向所述任务消息队列发 送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中; 否则,则先将所述目标数据的部分装载满所述共享内存段,然后锁定所述共享内 存头,再将已装载所述目标数据的共享内存段的运行状态表示为装载完成,并向所述任务 消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库 中,然后重新执行步骤bl,直至获取所需的共享内存段并将数据剩余部分全部装载完毕;或者,如果不存在空闲共享内存段,则阻塞本文档来自技高网...
【技术保护点】
一种用于异构数据库之间数据复制的系统,其特征在于,该系统包括:初始化模块,其用于在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;源数据处理模块,其包括:数据读取器、数据适配器和数据装载器,所述数据读取器用于从至少一个源数据库中读取源数据,所述数据适配器用于将所述数据读取器读取的源数据转换成至少一个目标数据库的目标数据,所述数据装载器用于将转换后的所述目标数据装载入所述数据共享内存;目标数据复制模块,其用于根据所述消息队列中的消息将所述数据共享内存中的所述目标数据复制到所述至少一个目标数据库中;以及清理模块,其用于释放所存数据已被复制完毕的所述数据共享内存。
【技术特征摘要】
【专利技术属性】
技术研发人员:杨燕明,陈林,华锦芝,茅毓铭,庄晓,鲁志军,
申请(专利权)人:中国银联股份有限公司,
类型:发明
国别省市:31[中国|上海]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。