数据同步方法、装置、电子设备及存储介质与流程

allin2024-10-19  85



1.本技术涉及大数据技术领域,更具体地,涉及一种数据同步方法、装置、电子设备及存储介质。


背景技术:

2.随着互联网行业的飞速发展,大数据、人工智能的兴起,企业、单位或个人积累了大量的业务数据、操作数据等,这些数据作为一种资源,逐渐被企业、单位重视,使用、分析上述数据产出的经济和社会价值也越来越明显。随着数据量的不断积累,使得数据越来越庞大、复杂,呈现数据量巨大、数据种类繁多的特点,这势必给数据带来安全隐患,因此数据的同步和备份显得尤为重要。


技术实现要素:

3.鉴于上述问题,本技术提出了一种数据同步方法、装置、电子设备及存储介质,能够解决上述问题。
4.第一方面,本技术实施例提供了一种数据同步方法,应用于电子设备,所述电子设备包括源数据库、缓存区域以及目标数据库,所述方法包括:在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域;根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率;依据所述增量数据更新所述目标数据库,其中,更新后的目标数据库包括的数据和所述源数据库包括的数据一致。
5.第二方面,本技术实施例提供了一种数据同步装置,应用于电子设备,所述电子设备包括源数据库、缓存区域以及目标数据库,所述装置包括:缓存模块,用于在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域;获取模块,用于根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率;同步模块,用于依据所述增量数据更新所述目标数据库,其中,更新后的目标数据库包括的数据和所述源数据库包括的数据一致。
6.第三方面,本技术实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述方法。
7.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述方法。
8.本技术提供的一种数据同步方法、装置、电子设备及存储介质,在源数据库中包括增量数据时,根据频率较高的第一获取频率从源数据库中获取增量数据并缓存于缓存区域,根据频率较低的第二获取频率从缓存区域获取增量数据,由于第一获取频率高于第二获取频率,因此,在缓存区域中已经积累了一些增量数据,再依据增量数据更新目标数据库,使得更新后的目标数据库包括的数据和源数据库包括的数据一致,实现数据同步,第一
获取频率高于第二获取频率,避免一出现增量数据就立即更新目标数据库,防止目标数据库因更新导致频繁的跳变,也节约了电子设备处理资源。并且增量数据是源数据库中发生变更的数据,为保证两个数据库一致,需要用增量数据更新目标数据库,将增量数据单独存储于缓存区域,可以直接从缓存区域中获取增量数据,无需再根据索引从数据量巨大的源数据库中查找增量数据,相较于依据索引更新的方法而言,本实施例可以无需单独设置索引,可以快速实现数据备份,保证数据备份的时效性。
9.本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
10.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1示出了数据同步方法的流程示意图;
12.图2示出了本技术一实施例提供的数据同步方法的一种应用环境示意图;
13.图3是本技术一实施例的用于执行根据本技术实施例的数据同步方法的电子设备的框图;
14.图4示出了本技术一实施例提供的数据同步方法的流程示意图;
15.图5是本技术一实施例的用于执行根据本技术实施例的数据同步方法的电子设备的框图;
16.图6示出了本技术另一实施例提供的数据同步方法的流程示意图;
17.图7是本技术另一实施例的用于执行根据本技术实施例的数据同步方法的电子设备的框图;
18.图8示出了本技术的图6所示的数据同步方法的步骤s210的一种流程示意图;
19.图9示出了本技术又一实施例提供的数据同步方法的流程示意图;
20.图10示出了本技术再一实施例提供的数据同步方法的流程示意图;
21.图11示出了本技术一实施例提供的数据同步装置的框图;
22.图12是本技术又一实施例的用于执行根据本技术实施例的数据同步方法的电子设备的框图;
23.图13示出了本技术实施例的用于保存或者携带实现根据本技术实施例的数据同步方法的程序代码的存储单元。
具体实施方式
24.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.随着互联网行业的飞速发展,大数据、人工智能的兴起,企业、单位或个人积累了大量的业务数据、操作数据等,这些数据作为一种资源,逐渐被企业、单位重视,使用、分析
上述数据产出的经济和社会价值也越来越明显。在挖掘上述数据的潜在价值时,需要离线数据仓库的支持,其中,数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合,是出于分析性报告和决策支持目的而创建,也是决策支持系统(decision-making support system,简称dss)和联机分析应用数据源的结构化数据环境,它的特征在于面向主题、集成性、稳定性和时变性。随着数据量的不断积累,使得数据越来越庞大、复杂,呈现数据量巨大、数据种类繁多的特点,这势必给数据带来安全隐患,离线数仓对海量数据的处理也面临着新的挑战,其中就包含对大规模原始数据进行采集、集成的问题。因此数据的同步和备份显得尤为重要。
26.而在数据同步、集成方面,传统数据仓库通常采用直连数据库或其备份数据库的方式,通过前期的数据调研,借助工具,以增量或者全量的方式对数据进行同步、集成,达到保存快照数据的目的,其中,快照数据指的是某一时刻的全部静态数据,这样能解决90%的数据集成问题,并且满足时效性。同时,该方式也存在使用限制,具体如下:
27.1)增量同步适用于数据量超过阈值的数据库,例如,阈值v=1000万(可以根据实际需求调整),且更新时间字段必须有索引,这样抽取效率较高,集成也快;如果没有索引,则会对源数据库(可以为表的形式)进行全面扫描,大大降低业务库的读写性能,抽取效率也随之降低,更无法满足时效性。
28.2)全量数据同步适用于数据量低于阈值的数据库,比如阈值v=1000万(可以根据实际需求调整),有无索引均可,因为数据量较小,抽取速度也较快。
29.基于以上,如果数据量达到亿级,10亿级或者更大时,面对源数据库无索引的场景,传统数仓无法满足数据抽取的时效。现有的数据同步方法如图1所示,mysql数据源是常用的数据库,以源数据库为mysql数据源,且目标数据库为ods层为例进行说明,其中,ods是operational data store的简称,即操作数据存储,是面向主题的、集成的、可变的、反映当前数据值的和详细的数据的集合。如图1所示,在现有的方法中,确定mysql数据源中的调研数据量,判断调研数据量是否小于阈值,例如阈值可以为1000万,当数据量小于阈值时,获取mysql数据源中的全量数据,然后直接使用抽数工具从mysql数据源中抽取增量数据或者全量数据,其中,全量数据是指mysql数据源中的全部数据,增量数据是指的上次获取数据后(通常用“更新时间”来判断),mysql数据源中新增的、更新的部分数据。将全量数据或者增量数据合并到ods层中,结束数据抽取。或者是,当数据量大于或等于阈值时,获取mysql数据源中的增量数据,判断更新时间是否有索引,当更新时间无索引时,利用抽数工具全表扫描抽取增量,但是该方式效率极低;当更新时间有索引时,依据索引,利用抽数工具从mysql数据源中抽取增量数据,再合并到ods层中,结束抽数。
30.针对亿级、10亿级或者更大的数据表,如果源表“更新时间”字段无索引(且无法创建索引),传统数仓通常采用全量抽取、设置切片字段、提高并发量、拉长抽取时间等方式将数据同步至分布式文件系统(distributed file system,简称hdfs),其中,hdfs被设计成适合运行在通用硬件(commodity hardware)上,但是仍然无法满足时效要求。
31.针对上述技术问题,发明人经过长期的研究发现并提出了一种数据同步方法、装置、电子设备及存储介质。在源数据库中包括增量数据时,根据频率较高的第一获取频率从源数据库中获取增量数据并缓存于缓存区域,根据频率较低的第二获取频率从缓存区域获取增量数据,由于第一获取频率高于第二获取频率,因此,在缓存区域中已经积累了一些增
量数据,再依据增量数据更新目标数据库,使得更新后的目标数据库包括的数据和源数据库包括的数据一致,实现数据同步,第一获取频率高于第二获取频率,避免一出现增量数据就立即更新目标数据库,防止目标数据库频繁的跳变,也节约了电子设备处理资源。其中,具体的数据同步方法在后续的实施例中具体说明。
32.为了更好理解本技术实施例提供的一种数据同步方法、装置、电子设备及存储介质,下面先对适用于本技术实施例的应用环境进行描述。
33.数据同步可以在不同的设备上进行同步,即源数据库和目标数据库可以在不同的电子设备上,图2示出了本技术一实施例提供的数据同步方法的一种应用环境示意图,请参阅图2,数据同步方法用于数据同步系统100,该数据同步系统100包括第一电子设备110、第二电子设备120以及通信网络130,第一电子设备110和第二电子设备120之间通过通信网络130连接。
34.第一电子设备110包括源数据库,第二电子设备120上包括目标数据库,源数据库中的全量数据通过通信网络130同步至目标数据库中进行备份,当源数据库中存在增量数据的情况下,将增量数据通过通信网络130同步至第二电子设备120的目标数据库中进行备份。例如,第一电子设备110(例如为手机)上安装有应用程序,第二电子设备120上安装有与第一电子设备110相同的应用程序,或者安装有用于备份的应用程序,第一电子设备110上的应用程序在使用过程中产生各种数据,比如社交聊天记录、视频文件、照片等,为了避免上述数据丢失,可以将上述数据从第一电子设备110通过通信网络130同步至第二电子设备120(例如为电脑)进行备份,以便在第一电子设备110上的数据丢失时,可以从第二电子设备120上获得相应的备份数据。
35.第一电子设备110(或第二电子设备120)可以为各种类型的计算机设备,例如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)以及可穿戴设备等。其中,便携式手持设备可以包括蜂窝电话、智能电话、平板电脑、个人数字助理(pda)等;可穿戴设备可以包括头戴式显示器和其他设备。第一电子设备110能够执行各种不同的应用程序,例如各种与internet相关的应用程序、通信应用程序(例如电子邮件应用程序)、短消息服务(sms)应用程序,并且可以使用各种通信协议。
36.第一电子设备110(或第二电子设备120)也可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
37.通信网络130可以是任何类型的网络,其可以使用多种可用协议中的任何一种(包括但不限于tcp/ip、sna、ipx等)来支持数据通信。仅作为示例,一个或多个网络130可以是局域网(lan)、基于以太网的网络、令牌环、广域网(wan)、因特网、虚拟网络、虚拟专用网络(vpn)、内部网、外部网、公共交换电话网(pstn)、红外网络、无线网络(例如蓝牙、wifi)和/或这些和/或其他网络的任意组合。
38.可选地,数据同步可以在同一电子设备上进行同步,即源数据库和目标数据库也可以在同一电子设备中,示例性地,请参阅图3,电子设备200包括源数据库210、缓存区域220以及目标数据库230,源数据库210、缓存区域220以及目标数据库230依次连接,源数据
库210中的增量数据可以缓存于缓存区域220,将缓存区域220中缓存的增量数据同步至目标数据库230中。
39.图4示出了本技术一实施例提供的数据同步方法的流程示意图,请参阅图4,本技术实施例提供了一种数据同步方法,该方法可以用于用图2所示的数据同步系统100、图3所示的电子设备200以及如图11所示的数据同步装置300。下面将以数据同步方法应用于电子设备200中为例进行说明,针对图4所示的流程进行详细的阐述,所述数据同步方法具体可以包括如下步骤:
40.步骤s110、在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域。
41.数据库是以数据为中心的应用的重要组件,可以存储大量的数据。源数据库中存储有由企业、单位或个人产生的数据,可选地,源数据库可以是mysql数据库。例如,源数据库中的数据可以是由用户的电子设备上的某一应用在使用过程中产生的数据,也可以是用户的电子设备在使用过程中产生的所有数据。再例如,源数据库可以为表格的形式,源数据库可以为“账户交易流水表”(该表对应的数据量在30亿以上)、“金价变动表”等。在源数据库出现宕机、错乱、数据损坏或者数据丢失等问题的情况下,为防止有用数据的丢失,可以将源数据库中的数据备份至指定位置即目标数据库,以便在源数据库出现上述问题的情况下,可以从目标数据库中恢复数据。
42.增量数据是相较于全量数据而言的,全量数据指的是在备份起始时刻已经存在于源数据库中的数据,可以理解为在备份起始时刻时,源数据库中的全部数据。增量数据指的是上一次数据备份后到此次数据备份之间,源数据库中新增的数据。例如,增量数据可以为上一次数据备份后到此次数据备份之间,应用程序运行时产生的数据。再例如,增量数据还可以为上一次数据备份后到此次数据备份之间,“账户交易流水表”中发生的交易变更,如增量数据可以是涨0.005%,或者是收支明细。
43.在源数据库中包括增量数据的情况下,为减少数据备份的压力,以及节约目标数据库中的存储资源,可以只对增量数据进行备份,根据用户开启的备份设置或者电子设备的默认备份功能,根据第一获取频率从源数据库中获取增量数据,并且将增量数据缓存于缓存区域,可以理解的是,该缓存区域起到的是临时存储增量数据的作用,也即,所述缓存区域可以是电子设备中的一个存储区域。
44.可选地,可以设置一个频率较高的第一获取频率,可以根据该第一获取频率,实时获取源数据库中的增量数据,并且缓存于缓存区域,即只要源数据库中存在增量数据就将增量数据缓存于缓存区域,确保源数据库中的数据改变均记录于缓存区域中。还可以设置一个稍大的第一获取频率,例如第一获取频率可以设置为1分钟/次、2分钟/次等,可以根据该第一获取频率,准实时获取源数据库中的增量数据,并且缓存于缓存区域,即增量数据可以不停地缓存于缓存区域。示例性地,获取第一获取频率设置为2分钟/次,在8:00已经备份过数据,根据第一获取频率,在8:02需要再次备份增量数据,在8:00-8:02之间源数据库中新增的数据作为增量数据,获取该增量数据并且缓存于缓存区域。
45.在一些实施方式中,缓存区域可以包括binlog日志,binlog日志为二进制日志文件,是一个临时内存文件。binlog日志记录了源数据库中所有的数据操纵语言(data manipulation language,简称dml)操作,其中,dml操作不限于修改、创建、增加、插入、删除
等操作,dml操作可以以增量数据的形式缓存于binlog日志中。
46.在另一些实施方式中,缓存区域包括canal模块、kafka模块以及hudi表,在源数据库中包括增量数据时,以第一获取频率依次通过canal模块、kafka模块以及hudi表对增量数据进行缓存,具体如何通过canal模块、kafka模块以及hudi表对增量数据进行缓存在后续实施例中说明。
47.步骤s120、根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率。
48.缓存区域中缓存有增量数据,依据结构化查询语言(structured query language,简称sql)或者使用离线工具(例如,spark、sqoop、datax等)根据预先设置的第二获取频率从缓存区域中获取增量数据用于备份。
49.在本实施例中,第一获取频率高于第二获取频率,将第二获取频率设置为一个较低的频率,使得第一获取频率高于第二获取频率,例如,第一获取频率可以为1分钟/次,第二获取频率为1天/次,由于第一获取频率高于第二获取频率,已经多次依据频率较高的第一获取频率从源数据库中获取增量数据,在缓存区域中已经积累了多次产生的增量数据,再根据频率较低的第二获取频率直接将积累了多次的增量数据从缓存区域一次性获取,尽可能保证了在缓存区域获取到的数据的完整性,避免了在目标数据库需要备份增量数据的情况下,还需要逐步从源数据库中多次拉取增量数据,降低了备份效率。
50.第一获取频率为一个较高的频率,针对第一获取频率小于或等于第二获取频率的情况,第二获取频率也为一个较高的频率,在这种情况下还会导致目标数据库频繁更新,导致用户关注的结果频繁跳变,对于一天中流水账单的最终收益或者每日金价的最终价格等场景,如果第一获取频率小于或等于第二获取频率,可能会导致一天中收益或者金价的频繁跳变,相较于跳变频繁的实时结果而言,用户更期望关注最终的收益或者价格。因此,将第一获取频率设置得高于第二获取频率,可以防止目标数据库中的数据频繁跳变。
51.例如,在第二获取频率为1天/次时,从缓存区域获取增量数据可以为离线操作,根据使用需求,可以在每日凌晨启动备份,从缓存区域中获取积累了一段时间(例如一天)的增量数据并备份至目标数据库。需要说明的是,第二获取频率不限于1天/次,还可以根据源数据库中更新增量速度的快慢、业务类型等,设置为12小时/次,或者2天/次。
52.步骤s130、依据所述增量数据更新所述目标数据库。
53.其中,更新后的目标数据库包括的数据和所述源数据库包括的数据一致,实现源数据库中数据的备份。
54.将增量数据(可以以merge命令的形式)存储到目标数据库中,再依据增量数据更新目标数据库,目标数据库的数量可以为1个,也可以为多个,具体地,依据增量数据对目标数据库中原本的数据进行删除、修改、替换、新增等操作,使得更新后的目标数据库包括的数据和源数据库中包括的数据一致,实现源数据库中的数据备份至目标数据库,其中,目标数据库可以为ods表。例如,在源数据库为“账户交易流水表”,且第二获取频率为1天/次时,则每日依据增量数据对目标数据库中的“账户交易流水表”进行一次性更新,依据增量数据可以查看该流水表的收支明细。
55.可选地,在使用缓存区域中的增量数据用于更新目标数据库之后,将缓存区域中存储的增量数据清除,以空出缓存区域的存储空间供后续的增量数据存储,既减少了缓存
区域的存储空间的占用,又防止之前已经用于更新过目标数据库的增量数据对后续更新的影响。
56.在本实施例提供的数据同步方法,在源数据库中包括增量数据的情况下,根据频率较高的第一获取频率从源数据库中获取增量数据并缓存于缓存区域,根据频率较低的第二获取频率从缓存区域获取增量数据,由于第一获取频率高于第二获取频率,因此,在缓存区域中已经积累了一些增量数据,再依据增量数据更新目标数据库,使得更新后的目标数据库包括的数据和源数据库包括的数据一致,实现数据同步,第一获取频率高于第二获取频率,避免一出现增量数据就立即更新目标数据库,防止目标数据库频繁的跳变,也节约了电子设备处理资源。并且增量数据是源数据库中发生变更的数据,为保证两个数据库一致,需要用增量数据更新目标数据库,将增量数据单独存储于缓存区域,可以直接从缓存区域中获取增量数据,无需再根据索引从数据量巨大的源数据库中查找增量数据,相较于依据索引更新的方法而言,本实施例可以无需单独设置索引,可以快速实现数据备份,保证数据备份的时效性,节约备份成本。
57.在上述实施例的基础上,请参阅图5,源数据库210包括增量日志211,增量日志211为二进制日志文件。增量日志211记录了源数据库中所有的写入操作(或dml操作),其中,写入操作不限于修改、创建、增加、插入、删除等操作,写入操作可以以增量数据的形式缓存于增量日志211中,可选地,增量日志可以为binlog日志(需要说明的是,在增量日志为binlog日志的情况下,该binlog日志与步骤s110的实施例中的binlog日志两者类型相同,但并非同一binlog日志)。基于此,本技术还提出了一种数据同步方法,图6示出了本技术另一实施例提供的数据同步方法的流程示意图,请参阅图6,所述数据同步方法具体可以包括如下步骤:
58.步骤s210、在所述源数据库中的所述增量日志中包括所述增量数据的情况下,根据所述第一获取频率从所述增量日志中获取所述增量数据并缓存于所述缓存区域。
59.打开源数据库的增量日志,具体为,设置参数log_bin为on,依据该设置打开增量日志。在打开增量日志后,源数据库中所有写入操作产生的数据变更都会记录到增量日志中,例如,用户通过设备对源数据库进行写入操作,其中,写入操作包括增加、删除、修改等操作;在源数据库中存在写入操作的情况下,源数据库中的数据有变化,获取写入操作写入的数据(可以理解为增量数据),将写入操作写入的数据根据预先设置的存储路径存储至增量日志中,得到增量数据。由于增量日志为二进制日志文件,因此,源数据库中的增量数据以二进制的格式记录于增量日志中。在增量日志中存在增量数据时,根据预先设置的第一获取频率从增量日志中获取增量数据,并且将获取的增量数据缓存于缓存区域。
60.在一些实施方式中,在图5的基础上,请参阅图7,所述源数据库210还包括日志读取模块212,可选地,日志读取模块212可以为mysql mater模块。请继续参阅图7,所述缓存区220包括格式转换模块221、过渡模块222以及缓存模块223,格式转换模块221、过渡模块222以及缓存模块223依次连接,缓存模块223与目标数据库230连接。基于此,请参阅图8,步骤s210还可以包括如下子步骤:
61.子步骤s211、在所述增量日志中包括所述增量数据的情况下,通过所述格式转换模块根据所述第一获取频率发送备份请求至所述日志读取模块。
62.在增量日志中存在增量数据的情况下,为了保证两个数据库中数据的一致性,格
式转换模块221向源数据库中的日志读取模块212发送备份请求,以获得源数据库中增量日志211发送的增量数据。
63.可选地,格式转换模块可以为canal模块,canal模块是用java开发的基于数据库增量日志解析,提供增量数据订阅和消费的中间件,可以理解为同步增量数据的工具。可以很方便地通过canal模块同步源数据库的增量数据至其他存储模块或存储应用。
64.canal模块的工作原理是将自身伪装成源数据库的mysql slave模块,模拟mysql slave的交互协议生成备份请求为dump请求,再通过canal模块将备份请求dump请求发送至源数据库的mysql mater模块。
65.子步骤s212、在所述日志读取模块接收到所述备份请求的情况下,通过所述格式转换模块将所述增量日志中第一预设格式的增量数据转化成第二预设格式的增量数据。
66.在所述源数据库的所述日志读取模块212接收到所述备份请求的情况下,通过所述源数据库的所述增量日志211发送第一预设格式的增量数据至所述格式转换模块221。具体为,源数据库的日志读取模块接收到备份请求时,响应于该请求,控制源数据库的增量日志发送二进制格式的增量数据至格式转换模块,也就是说,增量日志将增量数据推送至格式转换模块。可选地,增量日志为binlog日志,对应的第一预设格式为二进制格式。
67.格式转换模块将增量日志中的第一格式的增量数据转换为第二预设格式的增量数据,其中,第二预设格式为便于用户查看的格式,例如,第二格式为json格式。格式转换模块221可以将第二预设格式的增量数据发送至过渡模块222。
68.子步骤s213、通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块,所述缓存模块用于对所述增量数据进行缓存。
69.可选地,过渡模块222可以为kafka模块,其中,kafka模块是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作(例如,网页浏览,搜索和其他用户的行动)流数据。
70.由于第一预设格式的增量数据是便于电子设备理解的格式,而便于用户理解的格式为第二预设格式,为便于用户理解和查看,需要将第一预设格式的增量数据转化为第二预设格式的增量数据。格式转换模块221将第一预设格式的增量数据转化为第二预设格式的增量数据,并且,将第二预设格式的增量数据发送至过渡模块222中进行暂存。
71.过渡模块222接收格式转换模块221推送的第二预设格式的增量数据,控制过渡模块222将第二预设格式的增量数据发送至缓存模块223进行缓存。其中,缓存模块可以为hudi表、kudu、delta lake等,hudi表是hadoop updates and incrementals的简称,用于在hadoop上执行诸如更新,插入和删除之类的操作中间件。
72.在本实施方式中,通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块。通过所述缓存模块用数据标识对所述第二预设格式的增量数据进行标记,例如hoodie_type:delete/update/insert,其中,所述数据标识指示对应数据的处理类型,例如处理类型包括删除类型、增加类型等,可以理解的是,在处理类型为删除类型的情况下,表明用户对增量数据中的数据进行删除操作,在处理类型为增加类型的情况下,表明用户对增量数据中国数据进行增加操作。可选地,针对缓存模块进行的upset操作,使用数据标识“upset”或“u”对增量数据进行标识,针对删除操作,该增量数据可以用数据标识“delete”或“d”进行标识,针对增加操作,该增量数据可以用数据标识“add”或“a”进行标识,针对转
入操作,该增量数据可以用数据标识“in”或“i”进行标识,针对转出操作,该增量数据用数据标识“out”或“o”进行标识。缓存模块将标记后的所述第二预设格式的增量数据以及所述数据标识进行缓存,其中,标记后的增量数据指的是携带数据标识的增量数据,标记后的增量数据后期进入目标数据库后,目标数据库根据数据标识指示的处理类型对增量数据进行处理,例如,对于数据标识“d”的增量数据3,目标数据库从存储的数据(示例性的,数据包括1,2,3)中对应删除增量数据对应的数据3,获得的目标数据库中数据包括1和2。在本实施方式中,目标数据库依据数据标识对增量数据进行增减处理,保证了处理后目标数据库和源数据库两者保存的数据保持一致。
73.步骤s220、根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率。
74.根据第二获取频率从缓存模块中获取增量数据。
75.步骤s230、依据所述增量数据更新所述目标数据库。
76.本实施例中,步骤s220-步骤s230的具体描述可以参考上述实施例中的步骤120-步骤s130,在此不再赘述。
77.本实施例提供的数据同步方法,在源数据库中包括增量数据时,根据频率较高的第一获取频率从源数据库的增量日志中获取第一预设格式的增量数据并缓存于缓存格式转换模块,格式转换模块将第一预设格式的增量数据转化为第二预设格式的增量数据并发送至过渡模块,过渡模块将第二预设格式的增量数据发送至缓存模块进行缓存,根据频率较低的第二获取频率从缓存模块中获取增量数据,由于第一获取频率高于第二获取频率,因此,在缓存区域中已经积累了一些增量数据,再依据增量数据更新目标数据库,使得更新后的目标数据库包括的数据和源数据库包括的数据一致,实现数据同步,第一获取频率高于第二获取频率,避免一出现增量数据就立即更新目标数据库,防止目标数据库频繁的跳变,也节约了电子设备处理资源。
78.在上述实施例的基础上,本实施例提供一种数据同步方法,图9示出了本技术又一实施例提供的数据同步方法的流程示意图,请参阅图9,所述数据同步方法具体可以包括如下步骤:
79.步骤s310、获取所述源数据库中包括的全量数据。
80.在首次将源数据库备份至目标数据库时,为保证两个数据库中的内容一致,需要进行初始化操作,即将源数据库中的全量数据全部备份至目标数据库。获取源数据库中存储的全量数据。
81.步骤s320、将所述全量数据备份至所述目标数据库。
82.可选地,将全量数据发送至图7所示的缓存模块中进行暂存,在通过缓存模块将全量数据发送至目标数据进行备份,使得目标数据库中存储有源数据库中的全量数据。
83.可选地,在备份全量数据时,无需进行数据搜索,因此,可以将源数据库中的全量数据直接发送至目标数据库进行备份,使得目标数据库中存储有源数据库中的全量数据。
84.步骤s330、在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域,其中,缓存区域包括缓存模块。
85.请参阅图7,所述缓存区220包括格式转换模块221、过渡模块222以及缓存模块223,通过格式转换模块发送备份请求至源数据库的日志读取模块,源数据库的日志读取模
块接收到备份请求时,控制源数据库的增量日志发送第一预设格式的增量数据至格式转换模块,格式转换模块将第一预设格式的增量数据转化为第二预设格式的增量数据,并将第二预设格式的增量数据发送至过渡模块进行暂存,通过过渡模块将第二预设格式的增量数据发送至缓存模块进行缓存。
86.步骤s340、在所述缓存模块已完成缓存所述增量数据的情况下,根据所述第二获取频率从所述缓存模块中获取标记后的增量数据,其中,所述缓存模块已完成缓存所述增量数据通过获取到的缓存完成标识确定。
87.需要判断缓存模块中是否存在数据延迟,具体为,根据第二获取频率确定目标数据库的获取周期,当缓存模块中存在上一周期的数据时,说明缓存模块中因为网络等因素存在延时,例如,当第二获取频率为1天/次,也就是说,目标数据库每日从缓存模块中获取增量数据,当当日为10月8日时,缓存模块中仍存在10月8日之前的数据,例如,缓存模块中存在10月7日的数据,说明缓存模块中存在数据延迟,需要循环等待缓存模块中存储上述增量数据,即目标数据库中需要先从缓存模块中获取之前的数据,以便缓存模块空出存储位置用于缓存上述增量数据,当缓存模块中存储有增量数据时,生成缓存完成标识,结束循环等待。
88.在获取到缓存模块发送的缓存完成标识时,说明缓存模块中已经缓存了增量数据,根据第二获取频率从缓存模块中获取所述增量数据以及所述增量数据的数据标识。在缓存模块不存在延迟的情况下,直接从所述缓存模块中获取标记后的增量数据,标记后的增量数据中包括增量数据以及数据标识。
89.步骤s350、依据所述数据标识和所述增量数据,对所述全量数据进行更新。
90.依据数据标识和增量数据,对目标数据库中的全量数据进行更新。例如,当数据标识为“delete”时,将全量数据中对应删除增量数据,再例如,当数据标识为“add”时,将增量数据加入全量数据中。
91.本实施例提供的数据同步方法,获取源数据库中包括的全量数据,将全量数据全部备份至目标数据库中,在源数据库中包括增量数据时,根据第一获取频率从源数据库中获取增量数据并缓存于缓存区域的缓存模块中,缓存模块中不存在延迟时,且缓存模块中已经缓存有增量数据时,生成缓存完成标识,在收到缓存模块发送的缓存完成标识时,再根据第二获取频率从缓存模块中获取增量数据和数据标识,依据增量数据和数据标识对目标数据库中的全量数据进行更新,完成源数据库的备份。
92.可选地,在增量日志为binlog日志、格式转换模块为canal模块、过渡模块为kafka模块、缓存模块为hudi表的场景中,图10示出了本技术再一实施例提供的数据同步方法的流程示意图,请参阅图10,在所述数据同步方法中,源数据库包括binlog日志,开启源数据库中的binlog日志,使得源数据库中的所有dml操作均以增量数据的形式记录在binlog日志中。如果时首次初始化,将源数据库中的全量数据写入hudi表中,通过hudi表将全量数据发送至目标数据库,实现全量数据的备份。如果并非首次备份,则无需再次进行初始化,将binlog日志中的增量数据通过canal模块将dml操作日志中的增量数据转化为json格式,其中,日志为二进制数据,也就是说,此处将二进制格式的增量数据转化为json格式的增量数据;通过canal模块将json格式的增量数据写入kafka模块,响应于upset操作,hudi表获取kafka模块中的增量数据;判断hudi表中是否存在延迟;如果hudi表存在延迟,将hudi表中
之前的数据存储与目标数据库中,以空出hudi表的存储空间存储增量数据;如果hudi表不存在延迟,则直接获取t-1分区的数据(t-1分区的数据为昨天的数据)即增量数据,将增量数据合并到目标数据库中,实现增量数据的备份,结束抽数(抽数即抽取增量数据),表征此次备份成功。
93.其中,t-2分区指的是前天的数据,t-3分区指的是3天前的数据。
94.本实施例中,图10中的具体描述可以参考上述实施例中的步骤,在此不再赘述。
95.为实现上述方法类实施例,本实施例提供一种数据同步装置,应用于电子设备,所述电子设备包括源数据库、缓存区域以及目标数据库,图11示出了本技术一实施例提供的数据同步装置的框图,请参阅图11,数据同步装置300包括:缓存模块310、获取模块320以及同步模块330。
96.缓存模块310,用于在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域;
97.获取模块320,用于根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率;
98.同步模块330,用于依据所述增量数据更新所述目标数据库。
99.可选地,所述源数据库包括增量日志,缓存模块310包括:增量缓存模块。
100.增量缓存模块,用于在所述源数据库中的所述增量日志中包括所述增量数据的情况下,根据所述第一获取频率从所述增量日志中获取所述增量数据并缓存于所述缓存区域。
101.可选地,数据同步装置300还包括:写入模块和存储模块。
102.写入模块,用于在所述源数据库中存在写入操作的情况下,获取所述写入操作写入的数据;
103.存储模块,用于将所述写入的数据根据预先设置的存储路径存储至所述增量日志,作为增量数据。
104.可选地,所述源数据库还包括日志读取模块,所述缓存区域包括格式转换模块、过渡模块以及缓存模块,增量缓存模块包括:备份请求模块、格式转换模块以及目标缓存模块。
105.备份请求模块,用于在所述增量日志中包括所述增量数据的情况下,通过所述格式转换模块根据所述第一获取频率发送备份请求至所述日志读取模块;
106.格式转换模块,用于在所述日志读取模块接收到所述备份请求的情况下,通过所述格式转换模块将所述增量日志中第一预设格式的增量数据转化成第二预设格式的增量数据;
107.目标缓存模块,用于通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块,所述缓存模块用于对所述增量数据进行缓存。
108.可选地,目标缓存模块包括:发送模块以及处理模块。
109.发送模块,用于通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块;
110.处理模块,用于通过所述缓存模块根据数据标识对所述第二预设格式的增量数据进行标记,并将标记后的所述第二预设格式的增量数据进行缓存,其中,所述数据标识用于
指示对应数据的处理类型。
111.可选地,数据同步装置300还包括:全量数据获取模块以及全量数据备份模块。
112.全量数据获取模块,用于获取所述源数据库中包括的全量数据;
113.全量数据备份模块,用于将所述全量数据备份至所述目标数据库。
114.可选地,获取模块320包括:标识获取模块。
115.标识获取模块,用于在所述缓存模块已完成缓存所述增量数据的情况下,根据所述第二获取频率从所述缓存模块中获取标记后的增量数据,其中,所述缓存模块已完成缓存所述增量数据通过获取到的缓存完成标识确定。
116.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
117.在本技术所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
118.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
119.图12是本技术又一实施例的用于执行根据本技术实施例的数据同步方法的电子设备的框图,请参阅图12,其示出了本技术实施例提供的一种电子设备200的结构框图。该电子设备200可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本技术中的电子设备200可以包括一个或多个如下部件:处理器240、存储器250以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器250中并被配置为由一个或多个处理器240执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
120.其中,处理器240可以包括一个或者多个处理核。处理器240利用各种接口和线路连接整个电子设备200内的各个部分,通过运行或执行存储在存储器250内的指令、程序、代码集或指令集,以及调用存储在存储器250内的数据,执行电子设备200的各种功能和处理数据。可选地,处理器240可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器240可集成中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责待显示组件的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器240中,单独通过一块通信芯片进行实现。
121.存储器250可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。存储器250可用于存储指令、程序、代码、代码集或指令集。存储器250可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备200在使用中所创建的数据(比如历史配置文件)等。
122.图13示出了本技术实施例的用于保存或者携带实现根据本技术实施例的数据同步方法的程序代码的存储单元,请参阅图13,其示出了本技术实施例提供的一种计算机可
读存储介质的结构框图。该计算机可读存储介质400中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
123.计算机可读存储介质400可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质400包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质400具有执行上述方法中的任何方法步骤的程序代码410的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码410可以例如以适当形式进行压缩。
124.可选地,本技术实施例还提供一种计算机程序产品,计算机程序产品包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述方法。
125.综上所述,本技术提供的一种数据同步方法、装置、电子设备及存储介质,在源数据库中包括增量数据的情况下,根据频率较高的第一获取频率从源数据库中获取增量数据并缓存于缓存区域,根据频率较低的第二获取频率从缓存区域获取增量数据,由于第一获取频率高于第二获取频率,因此,在缓存区域中已经积累了一些增量数据,再依据增量数据更新目标数据库,使得更新后的目标数据库包括的数据和源数据库包括的数据一致,实现数据同步,第一获取频率高于第二获取频率,避免一出现增量数据就立即更新目标数据库,防止目标数据库频繁的跳变,也节约了电子设备处理资源。并且增量数据是源数据库中发生变更的数据,为保证两个数据库一致,需要用增量数据更新目标数据库,将增量数据单独存储于缓存区域,可以直接从缓存区域中获取增量数据,无需再根据索引从数据量巨大的源数据库中查找增量数据,相较于依据索引更新的方法而言,本实施例可以无需单独设置索引,可以快速实现数据备份,保证数据备份的时效性。
126.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种数据同步方法,其特征在于,应用于电子设备,所述电子设备包括源数据库、缓存区域以及目标数据库,所述方法包括:在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域;根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率;依据所述增量数据更新所述目标数据库。2.根据权利要求1所述的方法,其特征在于,所述源数据库包括增量日志,所述在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域,包括:在所述源数据库中的所述增量日志中包括所述增量数据的情况下,根据所述第一获取频率从所述增量日志中获取所述增量数据并缓存于所述缓存区域。3.根据权利要求2所述的方法,其特征在于,在所述源数据库中的所述增量日志中包括所述增量数据的情况下,根据所述第一获取频率从所述增量日志中获取所述增量数据并缓存于所述缓存区域之前,还包括:在所述源数据库中存在写入操作的情况下,获取所述写入操作写入的数据;将所述写入的数据根据预先设置的存储路径存储至所述增量日志中,得到所述增量数据。4.根据权利要求2所述的方法,其特征在于,所述源数据库还包括日志读取模块,所述缓存区域包括格式转换模块、过渡模块以及缓存模块,所述在所述源数据库中的所述增量日志中包括所述增量数据的情况下,根据所述第一获取频率从所述增量日志中获取所述增量数据并缓存于所述缓存区域,包括:在所述增量日志中包括所述增量数据的情况下,通过所述格式转换模块根据所述第一获取频率发送备份请求至所述日志读取模块;在所述日志读取模块接收到所述备份请求的情况下,通过所述格式转换模块将所述增量日志中第一预设格式的增量数据转化成第二预设格式的增量数据;通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块,所述缓存模块用于对所述增量数据进行缓存。5.根据权利要求4所述的方法,其特征在于,所述通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块,包括:通过所述过渡模块将所述第二预设格式的增量数据发送至所述缓存模块;通过所述缓存模块根据数据标识对所述第二预设格式的增量数据进行标记,并将标记后的所述第二预设格式的增量数据进行缓存,其中,所述数据标识用于指示对应数据的处理类型。6.根据权利要求5所述的方法,其特征在于,在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域之前,还包括:获取所述源数据库中包括的全量数据;将所述全量数据备份至所述目标数据库。
7.根据权利要求5所述的方法,其特征在于,所述根据第二获取频率从所述缓存区域获取所述增量数据,包括:在所述缓存模块已完成缓存所述增量数据的情况下,根据所述第二获取频率从所述缓存模块中获取标记后的增量数据,其中,所述缓存模块已完成缓存所述增量数据通过获取到的缓存完成标识确定。8.一种数据同步装置,其特征在于,应用于电子设备,所述电子设备包括源数据库、缓存区域以及目标数据库,所述装置包括:缓存模块,用于在所述源数据库包括增量数据的情况下,根据第一获取频率从所述源数据库中获取所述增量数据并缓存于所述缓存区域;获取模块,用于根据第二获取频率从所述缓存区域获取所述增量数据,其中,所述第一获取频率高于所述第二获取频率;同步模块,用于依据所述增量数据更新所述目标数据库,其中,更新后的目标数据库包括的数据和所述源数据库包括的数据一致。9.一种电子设备,其特征在于,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行如权利要求1-7任一项所述的方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。

技术总结
本申请公开了一种数据同步方法、装置、电子设备及存储介质,涉及数据存储技术领域,在源数据库中包括增量数据的情况下,根据频率较高的第一获取频率从源数据库中获取增量数据并缓存于缓存区域,根据频率较低的第二获取频率从缓存区域获取增量数据,由于第一获取频率高于第二获取频率,因此,在缓存区域中已经积累了一些增量数据,再依据增量数据更新目标数据库,使得更新后的目标数据库包括的数据和源数据库包括的数据一致,实现数据同步,第一获取频率高于第二获取频率,避免一出现增量数据就立即更新目标数据库,防止目标数据库频繁的跳变,也节约了电子设备处理资源。也节约了电子设备处理资源。也节约了电子设备处理资源。


技术研发人员:陈伦 王辉 刘德华 曾琳铖曦 吴海英 伍应标 冯仕炳
受保护的技术使用者:马上消费金融股份有限公司
技术研发日:2022.03.25
技术公布日:2022/7/4
转载请注明原文地址: https://www.8miu.com/read-17173.html

最新回复(0)