基于池化技术的数据抽取方法及装置与流程

文档序号:36175515 发布日期:2023-11-25 00:38 阅读:49 来源:国知局
基于池化技术的数据抽取方法及装置与流程

本申请涉及医疗数据处理,尤其涉及一种基于池化技术的数据抽取技术。


背景技术:

1、在从各业务数据库抽取数据进行分布式存储时,现有技术一般通过使用分布式数据库自带的数据抽取工具抽取数据,或者自行开发的数据抽取工具抽取数据;当抽取数据量较大时,需要分批次获取预设数量的数据,再通过一数据写入执行线程建立与各分布式存储节点的连接,并将读取的数据写入各分布式存储节点中,由于数据写入速度较慢,因此当数据写入未完成时,数据抽取端将被迫暂停数据的读操作,等待写操作完成,写操作完成后执行线程断开与各节点连接,重新读取一批数据到内存中缓存,重复上述操作,数据抽取效率低;不仅数据写入时数据读取需要等待消耗了时间,而且在数据重新读入时数据写入也是中断状态,需要等待读取时间,且数据再次写入时,需要重新建立与分布式存储节点的连接,也会降低数据的整体抽取效率,加大资源的占用。

2、现有技术中也有线程池、连接池等技术手段,但都没有用于数据抽取的场景,且线程池、连接池、数据批量抽取数一般通过人为预先配置参数的方式进行初始化配置,无法及时适应多现场、多数据库的自动快速的抽取数据的需求。


技术实现思路

1、本申请的一个目的是提供一种基于池化技术的数据抽取方法及装置,旨在最大限度的利用服务器资源,提升数据抽取、写入的整体效率。

2、为实现上述目的,本申请的一些实施例提供了一种基于池化技术的数据抽取方法,应用于服务端,所述方法包括:获取配置信息,其中,所述配置信息包括业务数据库信息,和/或分布式数据库信息,和/或服务端信息;根据所述配置信息,确定数据抽取总量、线程池的线程数量、连接池的连接数量、一次缓存数据量,以及服务端的cpu核心数、运行内存数;从各业务数据库抽取目标数据并缓存;当抽取的所述目标数据达到所述一次缓存数据量后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向分布式数据库的一个或多个分布式存储节点写入目标数据;其中,每个cpu核心被配置为处理一个线程。

3、可选地,其中,确定数据抽取总量的方法,包括:根据所述配置信息中的业务数据库信息,获取目标抽取数据表;根据所述目标抽取数据表的数据量及表结构的数据列信息,计算获得单条目标抽取数据的大小及数据抽取总量。

4、可选地,其中,确定线程池的线程数量的方法包括:根据所述配置信息中的服务端信息,确定服务端的cpu核心数;根据所述cpu核心数确定线程数量并生成线程池;其中,所述线程数量不少于所述cpu核心数,和/或所述线程数量是所述cpu核心数的预定倍数。

5、可选地,其中,确定连接池的连接数量的方法包括:根据所述配置信息中的服务端信息,确定服务端的cpu核心数;根据所述配置信息中的分布式数据库信息,确定分布式数据库的分布式节点数;根据所述cpu核心数和所述分布式节点数确定连接数量并生成连接池;其中,所述连接数量数不少于所述cpu核心数和所述分布式节点数之积,和/或所述连接数量是所述cpu核心数和所述分布式节点数之积的预定倍数。

6、可选地,确定一次缓存数据量的方法包括:根据所述配置信息中的服务端信息,确定服务端的运行内存数;获取缓存系数;所述缓存系数为预设和/或基于服务端的可的运行状态确定;根据所述运行内存数和所述缓存系数计算可用内存;根据所述可用内存、各目标抽取数据表的单条数据的数据大小、线程数量设置一次缓存数据量。

7、可选地,所述当抽取的所述目标数据达到所述一次缓存数据量后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向所述分布式数据库的一个或多个分布式存储节点写入目标数据,包括:当抽取的所述目标数据达到所述一次缓存数据量后,使用cpu核心调用所述线程池中的一个线程,将所述目标数据推送至线程队列;调用所述连接池中的一条或多条连接,将所述线程队列中的所述目标数据分别写入分布式数据库的各分布式存储节点;在写入完成后,将调用的一条或多条连接释放至所述连接池。

8、可选地,所述当抽取的所述目标数据达到所述一次缓存数据量后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向分布式数据库的一个或多个分布式存储节点写入目标数据,还包括:确定处理写入目标数据的所述cpu核心数是否超出预设数;若未超出,则通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向分布式数据库的一个或多个分布式存储节点写入目标数据;若已超出,则调用所述线程池中的一个空闲线程,将所述目标数据推送至线程队列,等待写入线程写入结束。

9、可选地,所述从各业务数据库抽取目标数据并缓存,包括:根据所述业务数据库信息,和/或所述分布式数据库信息,和/或预设抽取时间,确定要开启的数据抽取进程数及各数据抽取进程所要抽取的目标数据。

10、可选地,所述调用所述连接池中的一条或多条连接,将所述线程队列中的所述目标数据分别写入分布式数据库的各分布式存储节点,包括:根据缓存的所述目标数据中的标识信息,计算哈希值,并与分布式存储节点取模,确定各条目标数据所对应的分布式存储节点;调用所述连接池中的一条或多条连接,将所述线程队列中的所述目标数据分别写入对应的分布式存储节点。

11、根据本申请的另一方面,本申请还提供了一种基于池化技术的数据抽取装置,包括:数据获取模块,用于获取配置信息,其中,所述配置信息包括业务数据库信息,和/或分布式数据库信息,和/或服务端信息;数据计算模块,用于根据所述配置信息,确定数据抽取总量、线程池的线程数量、连接池的连接数量、一次缓存数据量,以及服务端的cpu核心数、运行内存数;抽取缓存模块,用于从各业务数据库抽取目标数据并缓存;数据处理模块,用于当抽取的所述目标数据达到所述一次缓存数据量后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向所述分布式数据库的一个或多个分布式存储节点写入目标数据;其中,每个cpu被配置为对应一个线程。

12、本申请的上述技术方案,通过自动获取每个现场的硬件情况及数据库结构,根据每个现场的硬件情况及数据情况,生成配置信息(包括业务数据库信息和/或分布式数据库信息和/或服务端信息);并根据所述配置信息配置线程池、连接池等(即确定数据抽取总量、线程池的线程数量、连接池的连接数量、一次缓存数据量,以及服务端的cpu核心数、运行内存数),并在从各业务数据库抽取目标数据并缓存后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向分布式数据库的一个或多个分布式存储节点写入目标数据,可以合理利用服务器资源,最大限度的提升数据抽取、写入的整体效率。



技术特征:

1.基于池化技术的数据抽取方法,其特征在于,应用于服务端,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,确定数据抽取总量的方法,包括:

3.根据权利要求1所述的方法,其特征在于,确定线程池的线程数量的方法包括:

4.根据权利要求1所述的方法,其特征在于,确定连接池的连接数量的方法包括:

5.根据权利要求1至4任一项所述的方法,其特征在于,确定一次缓存数据量的方法包括:

6.根据权利要求5所述的方法,其特征在于,所述当抽取的所述目标数据达到所述一次缓存数据量后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向所述分布式数据库的一个或多个分布式存储节点写入目标数据,包括:

7.根据权利要求1所述的方法,其特征在于,所述当抽取的所述目标数据达到所述一次缓存数据量后,通过至少一个cpu核心使用所述线程池中的至少一个线程调用所述连接池中的一条或多条连接向分布式数据库的一个或多个分布式存储节点写入目标数据,还包括:

8.根据权利要求1所述的方法,其特征在于,所述从各业务数据库抽取目标数据并缓存,包括:

9.根据权利要求6所述的方法,其特征在于,所述调用所述连接池中的一条或多条连接,将所述线程队列中的所述目标数据分别写入分布式数据库的各分布式存储节点,包括:

10.基于池化技术的数据抽取装置,其特征在于,包括:


技术总结
本申请提供了一种基于池化技术的数据抽取方法及装置,包括:获取配置信息;根据配置信息,确定数据抽取总量、线程池的线程数量、连接池的连接数量、一次缓存数据量,以及服务端的CPU核心数、运行内存数;从各业务数据库抽取目标数据并缓存;当抽取的目标数据达到一次缓存数据量后,通过至少一个CPU核心使用线程池中的至少一个线程调用连接池中的一条或多条连接向分布式数据库的一个或多个分布式存储节点写入目标数据;其中,每个CPU核心被配置为处理一个线程。可以根据每个现场的硬件情况及数据情况生成参数配置信息,基于参数配置信息配置线程池、连接池,可最大限度的提升数据抽取、写入的整体效率,合理利用服务器资源。

技术研发人员:叶大江,彭伟
受保护的技术使用者:上海柯林布瑞信息技术有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1