本申请涉及大数据,尤其是涉及一种用于大数据实时计算及同步方法、系统、介质及设备。
背景技术:
1、随着互联网技术的不断发展与网民数量的不断增加,使得网络中存在了大量重要的数据信息,由于数据库可以高效且条理分明地存储数据,所以人们通常使用数据库来更加迅速和方便地管理数据。在使用数据库过程中,为保持数据信息的一致性,需要同步实现数据库的数据变更。
2、现有技术中,可以采用datax以及canal对数据库的万亿级的数据表进行实时同步,但是datax不支持增量同步,canal不支持全量同步,并且datax和canal为单机架构。
3、针对上述中的相关技术,在大数据场景下容易面临性能瓶颈的问题,用户不能通过增加资源去提升作业速度,在需要同步实现数据库的数据变更情况下,读取时间在小时甚至天级别,导致数据库数据变更效率低。
技术实现思路
1、为了提高数据库数据变更的效率,本申请提供一种用于大数据实时计算及同步方法。
2、本申请第一方面提供的一种用于大数据实时计算及同步方法采用如下的技术方案:
3、一种用于大数据实时计算及同步方法,包括:
4、在flink框架内获取远端数据库;
5、根据预置的切分算法,将所述远端数据库划分为多个快照区域;
6、将所述多个快照区域分发给多个读取器,并控制所述多个读取器读取对应的快照区域;
7、将所述多个读取器读取的数据根据主键进行合并,并将合并后的数据存入本地数据库以得到与所述远端数据库相同的本地数据库,所述主键为所述远端数据库中数据源表的每一行标识。
8、通过采用上述技术方案,获取远端数据库后,将远端数据库划分为多个快照区域,将多个快照区域分发给多个读取器进行读取,将读取的数据存入本地数据库,此时本地数据库与远端数据库的数据相同,实现信息同步,而且采用并行读取的方法同时读取多个快照区域,提高了数据库数据读取效率,从而提高了数据库数据的变更效率。
9、优选的,在将所述多个快照区域分发给多个读取器中,包括:
10、将所述划分后的快照区域根据快照区域的多个主键的最大值按照由小到大的顺序进行排序;
11、将相邻的快照区域分为一组以得到若干组快照区域,所述若干组的每一组内的快照区域数量均为预设数量;
12、将同一组的快照区域分发至一个读取器中,使得多个读取器读取对应的快照区域。
13、通过采用上述技术方案,将快照区域根据主键进行排序,并将相邻的快照区域分为一组,每组包含的快照区域数量相同,一个读取器对应一个组,多个读取器同时读取对应组的快照区域,使得读取顺序不混乱且提高了数据读取效率。
14、优选的,在控制所述多个读取器读取对应的快照区域中,包括:
15、控制读取器读取所述快照区域的数据;
16、将读取的所述快照区域的数据发送至缓存。
17、通过采用上述技术方案,将读取器读取的数据先发送到缓存,使得数据的后续修改在缓存内进行,提高数据修改速度,并且由于先发送到缓存而不是内存,减少了内存的读写次数,降低内存损坏的可能性。
18、优选的,在将所述快照区域的数据发送至缓存之后,包括:
19、获取远端数据库的日志,所述日志包括日志主键以及所述日志主键对应的数据变更信息,所述日志主键与所述快照区域的主键对应;
20、根据所述日志主键以及所述日志主键对应的数据变更信息,更改缓存的数据。
21、通过采用上述技术方案,通过远端数据库的日志筛选出对应的缓存的数据里的主键,再根据日志主键对应的数据变更信息更改缓存的数据里的主键对应的数据,根据日志更改缓存的数据使得本地数据与远端数据保持一致。
22、优选的,在将所述多个读取器读取的数据根据主键进行合并中,包括:
23、将所述缓存的数据根据缓存的数据中的主键的值按照预置的顺序进行合并。
24、通过采用上述技术方案,根据主键的值将数据按照预置的顺序进行合并,得到合并的数据。
25、优选的,在将所述多个快照区域分发给多个读取器后,包括:
26、存储当前正在读取的所述快照区域;
27、检测程序状态,获取读取响应信息,根据所述读取响应信息判断程序是否存在崩溃现象;
28、若程序存在崩溃现象,则获取到重新运行程序信息后,根据最近存储的所述快照区域恢复读取器读取数据的进程。
29、通过采用上述技术方案,存储当前正在读取的所述快照区域,如果未接收到读取响应信息,则程序崩溃,待重新运行程序后按照最近存储的所述快照区域恢复读取器读取数据的进程,使得当读取进程意外停止后,通过存储的快照区域,可继续进行读取进程,不必重新读取。
30、优选的,所述预置的切分算法为无锁快照算法。
31、通过采用上述技术方案,使用无锁快照算法将数据库快照划分为多个快照区域,使得读取器在读取数据时不需要加锁也可以保证数据读取的准确性。
32、本申请第二方面提供的一种用于大数据实时计算及同步系统采用如下的技术方案:
33、数据库获取模块,用于在flink框架内获取远端数据库;
34、快照区域划分模块,用于根据预置的切分算法,将所述远端数据库划分为多个快照区域;
35、快照区域分发模块,用于将所述多个快照区域分发给多个读取器,并控制所述多个读取器读取对应的快照区域;
36、数据合并模块,用于将所述多个读取器读取的数据根据主键进行合并,并将合并后的数据存入本地数据库以得到与所述远端数据库相同的本地数据库,所述主键为所述数据库快照中数据表的每一行标识。
37、本申请第三方面提供的一种用于大数据实时计算及同步介质采用如下的技术方案:
38、所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行一种用于大数据实时计算及同步方法的任意一项所述的方法步骤。
39、本申请第四方面提供的一种用于大数据实时计算及同步设备采用如下的技术方案:
40、一种用于大数据实时计算及同步设备包括:定时器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行一种用于大数据实时计算及同步方法的步骤。
41、综上所述,本申请包括以下至少一种有益技术效果:
42、1.本申请采用并行读取的方法同时读取多个快照区域,提高了数据库数据读取效率;
43、2.本申请在读取进程意外停止后,通过存储的快照区域,可继续进行读取进程,不必重新读取,提高读取效率。
1.一种用于大数据实时计算及同步方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种用于大数据实时计算及同步方法,其特征在于,在将所述多个快照区域分发给多个读取器中,包括以下步骤:
3.根据权利要求1所述的一种用于大数据实时计算及同步方法,其特征在于,在控制所述多个读取器读取对应的快照区域中,包括以下步骤:
4.根据权利要求3所述的一种用于大数据实时计算及同步方法,其特征在于,在将所述快照区域的数据发送至缓存之后,还包括以下步骤:
5.根据权利要求3所述的一种用于大数据实时计算及同步方法,其特征在于,在将所述多个读取器读取的数据根据主键进行合并中,包括以下步骤:
6.根据权利要求1所述的一种用于大数据实时计算及同步方法,其特征在于,在将所述多个快照区域分发给多个读取器之后,还包括以下步骤:
7.根据权利要求1所述的一种用于大数据实时计算及同步方法,其特征在于:所述预置的切分算法为无锁快照算法。
8.基于权利要求1~7任意一条所述的用于大数据实时计算及同步方法的系统,其特征在于,所述系统包括:
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项所述的方法步骤。
10.一种电子设备,其特征在于,包括:定时器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~7任意一项的方法步骤。