本技术涉及大数据,尤其涉及一种数据采集方法、装置、电子设备及存储介质。
背景技术:
1、postgresql是一种功能强大的开源数据库,使用范围非常广泛。postgresql作为一个基础性数据库,经常需要将其中的变化数据发送给其他数据源。
2、一般地,不同数据源对postgresql的数据采集需求不同,相关技术中,由技术人员根据自己公司所使用数据源的数据采集需求和所用postgresql的版本,开发数据采集程序,当公司使用的postgresql的版本更新时,由于新版本的postgresql对外提供的数据采集能力不同了,还需基于新版本postgresql的数据采集能力升级数据采集程序,比较麻烦。其他与postgresql特点类似的数据库也存在着这样的问题。
技术实现思路
1、本技术实施例提供一种数据采集方法、装置、电子设备及存储介质,用以解决相关技术中从数据库采集数据比较麻烦的问题。
2、第一方面,本技术实施例提供一种数据采集方法,包括:
3、获取数据源对指定数据库的数据采集需求,所述指定数据库的版本与数据采集灵活度正相关;
4、基于获取的所述指定数据库的版本信息、以及预先建立的数据库版本与数据采集策略之间的对应关系,确定对所述指定数据库的数据采集策略;
5、根据所述采集需求和确定的数据采集策略,对所述指定数据库中的变化数据进行采集;
6、将数据采集结果发送给所述数据源。
7、在一些实施例中,基于获取的所述指定数据库的版本信息、以及预先建立的数据库版本与数据采集策略之间的对应关系,确定对所述指定数据库的数据采集策略,包括:
8、若所述版本信息指示的版本低于指定版本集合中的各版本,则确定以预写式日志wal文件解析的方式进行数据采集;
9、若所述版本信息指示的版本是指定版本集合中的版本,则确定以流复制的方式进行数据采集;
10、若所述版本信息指示的版本高于指定版本集合中的各版本,则确定以逻辑复制的方式进行数据采集。
11、在一些实施例中,所述数据采集需求至少包括目标数据格式和结构化查询语言sql形式的数据处理方式,根据所述采集需求和确定的数据采集策略,对所述指定数据库中的变化数据进行采集,包括:
12、以所述确定的数据采集策略,从所述指定数据库中获取所述目标数据格式的变化数据;
13、基于所述sql形式的数据处理方式,对所述目标数据格式的变化数据进行处理,得到数据采集结果。
14、在一些实施例中,若确定以wal文件解析的方式进行数据采集,则以所述确定的数据采集策略,从所述指定数据库中获取所述目标数据格式的变化数据,包括:
15、当所述指定数据库中的数据发生变化时,确定未采集的多个wal文件;
16、并发下载所述多个wal文件;
17、并发对下载的wal文件进行解析,得到所述指定数据库中的变化数据;
18、将所述变化数据转换为所述目标数据格式。
19、在一些实施例中,所述数据采集需求还包括目标表,并发对下载的wal文件进行解析,得到所述指定数据库中的变化数据,包括:
20、并发对下载的wal文件中属于所述目标表的数据变化记录进行解析,得到所述指定数据库中所述目标表的变化数据。
21、在一些实施例中,若确定以流复制的方式进行数据采集,则以所述确定的数据采集策略,从所述指定数据库中获取所述目标数据格式的变化数据,包括:
22、将第一输出格式插件发送给所述指定数据库,由所述指定数据库以流复制的方式复制所有表的变化数据,并利用所述第一输出格式插件,将复制的所有表的变化数据转换为所述目标数据格式;
23、接收所述指定数据库发送的所有表的所述目标数据格式的变化数据。
24、在一些实施例中,所述数据采集需求还包括目标表,若确定以逻辑复制的方式进行数据采集,则以所述确定的数据采集策略,从所述指定数据库中获取所述目标数据格式的变化数据,包括:
25、将第二输出格式插件和所述目标表的标识发送给所述指定数据库,由所述指定数据库以逻辑复制的方式复制所述目标表的变化数据,并利用所述第二输出格式插件,将复制的所述目标表的变化数据转换为所述目标数据格式;
26、接收所述指定数据库发送的所述目标表的所述目标数据格式的变化数据。
27、在一些实施例中,基于所述sql形式的数据处理方式,对所述目标数据格式的变化数据进行处理,得到数据采集结果,包括:
28、对所述目标数据格式的变化数据进行数据映射、数据过滤或数值计算,得到所述数据采集结果。
29、在一些实施例中,还包括:
30、当接收到所述数据源对任一数据采集结果的确收消息时,将所述数据采集结果对应的日志序列号lsn更新到mysql中;
31、在满足继续采集条件时,基于从mysql中读取的lsn,继续对所述指定数据库中的变化数据进行采集。
32、第二方面,本技术实施例提供一种数据采集装置,包括:
33、获取模块,用于获取数据源对指定数据库的数据采集需求,所述指定数据库的版本与数据采集灵活度正相关;
34、确定模块,用于基于获取的所述指定数据库的版本信息、以及预先建立的数据库版本与数据采集策略之间的对应关系,确定对所述指定数据库的数据采集策略;
35、采集模块,用于根据所述采集需求和确定的数据采集策略,对所述指定数据库中的变化数据进行采集;
36、发送模块,用于将数据采集结果发送给所述数据源。
37、在一些实施例中,确定模块具体用于:
38、若所述版本信息指示的版本低于指定版本集合中的各版本,则确定以预写式日志wal文件解析的方式进行数据采集;
39、若所述版本信息指示的版本是指定版本集合中的版本,则确定以流复制的方式进行数据采集;
40、若所述版本信息指示的版本高于指定版本集合中的各版本,则确定以逻辑复制的方式进行数据采集。
41、在一些实施例中,所述数据采集需求至少包括目标数据格式和结构化查询语言sql形式的数据处理方式,采集模块具体用于:
42、以所述确定的数据采集策略,从所述指定数据库中获取所述目标数据格式的变化数据;
43、基于所述sql形式的数据处理方式,对所述目标数据格式的变化数据进行处理,得到数据采集结果。
44、在一些实施例中,若确定以wal文件解析的方式进行数据采集,则采集模块具体用于:
45、当所述指定数据库中的数据发生变化时,确定未采集的多个wal文件;
46、并发下载所述多个wal文件;
47、并发对下载的wal文件进行解析,得到所述指定数据库中的变化数据;
48、将所述变化数据转换为所述目标数据格式。
49、在一些实施例中,所述数据采集需求还包括目标表,采集模块具体用于,包括:
50、并发对下载的wal文件中属于所述目标表的数据变化记录进行解析,得到所述指定数据库中所述目标表的变化数据。
51、在一些实施例中,若确定以流复制的方式进行数据采集,则采集模块具体用于:
52、将第一输出格式插件发送给所述指定数据库,由所述指定数据库以流复制的方式复制所有表的变化数据,并利用所述第一输出格式插件,将复制的所有表的变化数据转换为所述目标数据格式;
53、接收所述指定数据库发送的所有表的所述目标数据格式的变化数据。
54、在一些实施例中,所述数据采集需求还包括目标表,若确定以逻辑复制的方式进行数据采集,则采集模块具体用于:
55、将第二输出格式插件和所述目标表的标识发送给所述指定数据库,由所述指定数据库以逻辑复制的方式复制所述目标表的变化数据,并利用所述第二输出格式插件,将复制的所述目标表的变化数据转换为所述目标数据格式;
56、接收所述指定数据库发送的所述目标表的所述目标数据格式的变化数据。
57、在一些实施例中,采集模块具体用于:
58、对所述目标数据格式的变化数据进行数据映射、数据过滤或数值计算,得到所述数据采集结果。
59、在一些实施例中,还包括:
60、记录模块,用于当接收到所述数据源对任一数据采集结果的确收消息时,将所述数据采集结果对应的日志序列号lsn更新到mysql中;
61、恢复模块,用于在满足继续采集条件时,基于从mysql中读取的lsn,继续对所述指定数据库中的变化数据进行采集。
62、第三方面,本技术实施例提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
63、存储器存储有可被至少一个处理器执行的计算机程序,该计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述数据采集方法。
64、第四方面,本技术实施例提供一种存储介质,当所述存储介质中的计算机程序由电子设备的处理器执行时,所述电子设备能够执行上述数据采集方法。
65、本技术实施例中,获取数据源对指定数据库的数据采集需求,指定数据库的版本与数据采集灵活度正相关,基于获取的指定数据库的版本信息、以及预先建立的数据库版本与数据采集策略之间的对应关系,确定对指定数据库的数据采集策略,之后,根据采集需求和确定的数据采集策略,对指定数据库中的变化数据进行采集,将数据采集结果发送给数据源。这样,提供了一种对各种版本的指定数据库均可使用的数据采集方案,不必每个公司的开发人员再单独开发、升级数据采集程序,对指定数据库的数据采集变得比较简单。