一种实现对MongoDB数据库数据的抽取转换方法及装置与流程

文档序号:36180847发布日期:2023-11-29 18:59阅读:42来源:国知局
一种实现对的制作方法

本发明涉及计算机数据同步备份,特别是涉及一种实现对mongodb数据库数据的抽取转换方法及装置。


背景技术:

1、随着信息化技术的发展,以及计算机技术的日新月异,政府、企业积累了大量异构的基础数据,这些分散的数据,往往存在于不同的异构数据库中,阻碍了进一步的信息运用,难以产生更大的效益。因此,在企业信息化的过程中,一个重要的课题就是异构数据库整合,以实现数据的共享,而数据库整合中一项重要的工作就是异构数据库数据的转换。

2、mongodb数据库是一个介于关系数据库和非关系数据库之间的产品,是一种基于分布式文件存储的数据库,旨在为web应用提供可扩展的高性能数据存储解决方案,mongodb 数据库是目前 nosql 数据库中使用最广泛的数据库之一,本发明旨在实现将mongodb数据库中的数据抽取出来并转换成为一种中间数据格式,以便这些中间格式的数据可以再同步到各种关系型数据库或数据仓库中。


技术实现思路

1、为克服上述现有技术存在的不足,本发明之目的在于提供一种实现对mongodb数据库数据的抽取转换方法及装置,实现将mongodb数据库中的数据抽取出来处理后转换为一种中间数据格式,以便能够传输到其他的数据库从而实现数据的异构。

2、为达上述目的,本发明提出一种实现对mongodb数据库数据的抽取转换方法,包括如下步骤:

3、步骤s1,执行全量抽取任务,记录任务开始时间,运行抽取线程、数据转换线程和数据传输线程,利用抽取线程依次遍历每个集合并记录每个集合抽取开始时间,通过遍历每个集合的所有文档,创建表结构转换任务存储到待处理文档队列以及创建相应的数据转换任务存储到待处理文档队列,利用数据转换线程从待处理文档队列里获取任务,生成相应的表结构,并根据表结构将待处理文档转换为表数据放入到待发送队列中,最后由数据传输线程从所述待发送队列中获取表数据,传输到指定服务器的指定端口;

4、步骤s2,执行增量抽取任务,运行操作日志读取线程、操作日志处理线程和数据传输线程,操作日志读取线程从全量任务开始时间作为起点,循环读取操作日志并进行过滤,将过滤后的文档放入到待处理队列中,日志处理线程则从待处理队列中获取操作日志的文档,根据操作日志的类型以及根据设计好的表数据格式将文档转换之后放入到待发送队列,最后由数据传输线程从所述待发送队列中获取数据传输到指定服务器的指定端口。

5、优选地,步骤s1进一步包括:

6、步骤s100,对待同步的mongodb数据库里的集合进行过滤筛选;

7、步骤s101,启动本次全量数据抽取任务,记录任务开始的时间戳缓存到指定目录的文件中,运行抽取线程、数据转换线程和数据传输线程;

8、步骤s102,抽取线程遍历整个集合的所有文档,获取所有文档结构中字段数量最多的文档结构作为表结构使用,创建相应的表结构转换任务存储到待处理文档队列中;

9、步骤s103,遍历整个集合的所有文档,创建相应的数据转换任务存储到队列中,在遍历集合的文档之前记录下当前的时间戳缓存到指定目录的文件中;

10、步骤104,在抽取线程工作的同时,数据转换线程从待处理文档队列里获取任务,生成相应的表结构,将表数据放入到待发送队列中;

11、步骤s105,数据传输线程从所述待发送队列中获取表数据,传输到指定服务器的指定端口。

12、优选地,于步骤s100中,遍历每个集合的数据,对比数据结构筛选出文档之间数据结构相差大的集合以及文档之间某个或某些字段的类型不一致的集合。

13、优选地,对于文档之间某个或某些字段的类型不一致的集合,使用通用数据类型转换文档中不一致的字段。

14、优选地,于步骤s103中, 对于数据转换任务,以批处理的形式进行分配,按照指定的大小确定一个数据转换任务包含多少个文档。

15、优选地,于步骤s104中,所述数据转换线程从待处理文档队列中取出任务,按照任务类型分别进行处理,根据表结构转换任务生成相应的表结构,通过表数据转换任务根据表结构将待处理文档生成相应的表数据,并存放于待发送队列中。

16、优选地,步骤s2进一步包括:

17、步骤s200,启动增量抽取任务,运行操作日志读取线程,从全量任务开始时间作为起点,循环读取操作日志并进行过滤,将过滤后的文档放入到待处理队列中;

18、步骤s201,执行日志处理线程,从待处理队列中获取oplog操作日志的文档,根据操作日志的类型以及根据设计好的表数据格式将文档转换后放入待发送队列中。

19、步骤s202,数据传输线程从待发送队列中获取数据,传输到指定服务器的指定端口。

20、8、如权利要求7所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于,于步骤s200之前,还包括:

21、读取全量抽取阶段缓存的全量抽取任务开始时间和每个集合抽取开始时间。

22、优选地,于步骤s 200中,所述操作日志读取线程从全量抽取任务开始时间作为起点,利用oplog操作日志本身的唯一时间戳,循环读取存储oplog操作日志的集合,对读取的文档进行预先的过滤处理。

23、为达到上述目的,本发明还提供一种实现对mongodb数据库数据的抽取转换装置,包括:

24、全量抽取模块,用于执行全量抽取任务,记录任务开始时间,运行抽取线程、数据转换线程和数据传输线程,利用抽取线程依次遍历每个集合并记录每个集合抽取开始时间,通过遍历每个集合的所有文档,创建表结构转换任务存储到待处理文档队列以及创建相应的数据转换任务存储到待处理文档队列,利用数据转换线程从待处理文档队列里获取任务,生成相应的表结构,并根据表结构将待处理文档转换为表数据放入到待发送队列中,最后由数据传输线程从所述待发送队列中获取表数据,传输到指定服务器的指定端口;

25、增量抽取模块,用于执行增量抽取任务,运行操作日志读取线程、操作日志处理线程和数据传输线程,操作日志读取线程从全量任务开始时间作为起点,循环读取操作日志并进行过滤,将过滤后的文档放入到待处理队列中,日志处理线程则从待处理队列中获取操作日志的文档,根据操作日志的类型以及根据设计好的表数据格式将文档转换之后放入到待发送队列,最后由数据传输线程从所述待发送队列中获取数据传输到指定服务器的指定端口。

26、与现有技术相比,本发明一种实现对mongodb数据库数据的抽取转换方法通过将mongodb数据库中的数据抽取出来处理后转换为一种中间数据格式,以便能够传输到其他的数据库,本发明既能抽取存量数据,也能抽取增量数据,并且按照一定的形式把mongodb数据库里的集合对应到关系型数据库里的表,进而实现了数据的异构。



技术特征:

1.一种实现对mongodb数据库数据的抽取转换方法,包括如下步骤:

2.如权利要求1所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于,步骤s1进一步包括:

3.如权利要求2所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于:于步骤s100中,遍历每个集合的数据,对比数据结构筛选出文档之间数据结构相差大的集合以及文档之间某个或某些字段的类型不一致的集合。

4.如权利要求3所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于:对于文档之间某个或某些字段的类型不一致的集合,使用通用数据类型转换文档中不一致的字段。

5.如权利要求2所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于:于步骤s103中, 对于数据转换任务,以批处理的形式进行分配,按照指定的大小确定一个数据转换任务包含多少个文档。

6.如权利要求2所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于:于步骤s104中,所述数据转换线程从待处理文档队列中取出任务,按照任务类型分别进行处理,根据表结构转换任务生成相应的表结构,通过表数据转换任务根据表结构将待处理文档生成相应的表数据,并存放于待发送队列中。

7.如权利要求2所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于,步骤s2进一步包括:

8.如权利要求7所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于,于步骤s200之前,还包括:

9.如权利要求8所述的一种实现对mongodb数据库数据的抽取转换方法,其特征在于:于步骤s 200中,所述操作日志读取线程从全量抽取任务开始时间作为起点,利用oplog操作日志本身的唯一时间戳,循环读取存储oplog操作日志的集合,对读取的文档进行预先的过滤处理。

10.一种实现对mongodb数据库数据的抽取转换装置,包括:


技术总结
本发明公开了一种实现对MongoDB数据库数据的抽取转换方法及装置,该方法包括:步骤S1,执行全量抽取任务,记录任务开始时间,依次遍历每个集合并记录抽取开始时间,创建表结构转换任务及数据转换任务存储到待处理文档队列,从待处理文档队列里获取任务,生成相应的表结构,将表数据放入到待发送队列中,从待发送队列中获取表数据,传输到指定服务器的指定端口;步骤S2,执行增量抽取任务,从全量任务开始时间作为起点循环读取操作日志进行过滤,将过滤后的文档放入到待处理队列,从待处理队列获取文档,根据操作日志的类型,根据设计好的表数据格式将文档转换后放入待发送队列,从待发送队列获取数据传到指定服务器指定端口。

技术研发人员:温立涛,杨彬,陈勇铨,周华
受保护的技术使用者:上海英方软件股份有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1