CN114443599A - 数据同步方法、装置、电子设备及存储介质 - Google Patents
数据同步方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114443599A CN114443599A CN202011228771.8A CN202011228771A CN114443599A CN 114443599 A CN114443599 A CN 114443599A CN 202011228771 A CN202011228771 A CN 202011228771A CN 114443599 A CN114443599 A CN 114443599A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- log
- change
- log data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据同步方法、装置、电子设备及计算机可读存储介质;方法包括:采集关系型数据库中目标业务数据所对应的日志数据;其中,所述日志数据为对所述目标业务数据执行数据操作时所产生;从所述日志数据中提取与更改操作对应的操作语句;解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据;将所述更改数据同步至目标数据仓库。通过本申请,能够提高数据同步的速度且不影响关系型数据库的业务使用性能。
Description
技术领域
本申请涉及数据处理技术,尤其涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
相关技术中,为实现数据库的数据同步所采用的方式是查询数据库内存储的数据,并基于查询到的数据对应生成数据文件,然后将数据文件导入对应的数据仓库中,从而完成数据同步。然而,若数据库内存储的数据量较大,查询数据和传输数据文件的耗时将很长,且容易产生慢查询影响数据库正常业务使用的性能。
发明内容
本申请实施例提供一种数据同步方法、装置、电子设备及计算机可读存储介质,能够提高数据同步的速度且不影响关系型数据库的业务使用性能。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据同步方法,包括:
采集关系型数据库中目标业务数据所对应的日志数据;其中,所述日志数据为对所述目标业务数据执行数据操作时所产生;
从所述日志数据中提取与更改操作对应的操作语句;
解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据;
将所述更改数据同步至目标数据仓库。
上述方案中,所述将所述更改数据同步至目标数据仓库之前,所述方法还包括:将所述更改数据缓存至增量存储空间;相应的,所述将所述更改数据同步至目标数据仓库,包括:当接收到数据同步指令时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库;或者获取数据同步周期,当确定所述数据同步周期到达时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库。
上述方案中,所述方法还包括:获取所述更改数据缓存至所述增量存储空间的缓存时刻;确定所述缓存时刻至当前时刻的缓存时间间隔;当所述缓存时间间隔大于或等于时间阈值时,将所述更改数据从所述增量存储空间中删除。
上述方案中,所述将所述更改数据同步至目标数据仓库,包括:基于所述更改数据对应的标识符,从目标数据仓库中查找与所述标识符对应的目标数据;将所述目标数据更新为所述更改数据。
上述方案中,所述方法还包括:确定至少一个待同步关系型数据库;从所述至少一个待同步关系型数据库中选择一个待同步关系型数据库,作为所述关系型数据库。
本申请实施例提供一种数据同步装置,包括:
采集模块,用于采集关系型数据库中目标业务数据所对应的日志数据;其中,所述日志数据为对所述目标业务数据执行数据操作时所产生;
提取模块,用于从所述日志数据中提取与更改操作对应的操作语句;
解析模块,用于解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据;
同步模块,用于将所述更改数据同步至目标数据仓库。
上述方案中,所述提取模块,还用于获取针对所述关系型数据库的更改操作的操作语句格式;基于所述操作语句格式,从所述日志数据中提取与更改操作对应的操作语句。
上述方案中,所述数据同步装置,还包括:缓存模块,用于将所述更改数据缓存至增量存储空间。相应的,所述同步模块,还用于当接收到数据同步指令时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库;或者获取数据同步周期,当确定所述数据同步周期到达时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库。
上述方案中,所述缓存模块,还用于获取所述更改数据缓存至所述增量存储空间的缓存时刻;确定所述缓存时刻至当前时刻的缓存时间间隔;当所述缓存时间间隔大于或等于时间阈值时,将所述更改数据从所述增量存储空间中删除。
上述方案中,所述采集模块,还用于获取日志数据的采集周期;当确定所述采集周期到达时,采集关系型数据库中目标业务数据所对应的日志数据。
上述方案中,所述缓存模块,还用于在增量存储空间内创建至少一个缓存分区;从所述至少一个缓存分区中选择一个缓存分区作为目标缓存分区;将所述更改数据缓存至所述目标缓存分区。
上述方案中,当所述目标业务数据对应至少两条日志数据时,所述采集模块,还用于从所述至少两条日志数据中,提取日志数据产生时刻与当前时刻的时间间隔最小的目标日志数据。相应的,所述提取模块,还用于从所述目标日志数据中提取与更改操作对应的操作语句。
上述方案中,所述数据同步装置,还包括:存储模块,用于将所述日志数据存储至发布订阅消息系统的消息队列,以使所述发布订阅消息系统基于所述消息队列,对所述日志数据进行推送。相应的,所述提取模块,还用于当接收到所述发布订阅消息系统推送的所述日志数据时,从所述日志数据中提取与更改操作对应的操作语句。
上述方案中,所述解析模块,还用于从所述操作语句中提取所述目标业务数据的标识符;基于所述标识符,从所述操作语句中提取与所述标识符对应的所述更改数据。
上述方案中,所述数据同步装置,还包括:数据拼接模块,用于获取所述目标数据仓库的数据存储格式;基于所述目标数据仓库的数据存储格式,对所述标识符和所述更改数据进行拼接,得到目标数据项。相应的,所述同步模块,还用于基于所述目标数据项,将所述更改数据同步至目标数据仓库。
上述方案中,所述同步模块,还用于基于所述更改数据对应的标识符,从目标数据仓库中查找与所述标识符对应的目标数据;将所述目标数据更新为所述更改数据。
上述方案中,所述数据同步装置,还包括:选择模块,用于确定至少一个待同步关系型数据库;从所述至少一个待同步关系型数据库中选择一个待同步关系型数据库,作为所述关系型数据库。
本申请实施例提供一种电子设备,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的数据同步方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现本申请实施例提供的方法。
本申请实施例具有以下有益效果:
本申请实施例通过从关系型数据库的日志数据中提取对目标业务数据进行更改后的更改数据,将更改数据同步至目标数据仓库,如此,省去了对关系型数据库的查询操作,且仅同步有更改的数据,减少了数据同步时的数据查询工作量以及传输的数据量,从而提高了数据同步的速度,并且由于绕开了对关系型数据库的直接访问,使得在数据同步过程中不会影响关系型数据库的业务使用性能。
附图说明
图1是本申请实施例提供的数据同步系统的一个可选的结构示意图;
图2是本申请实施例提供的电子设备的一个可选的结构示意图;
图3是本申请实施例提供的数据同步方法的一个可选的流程示意图;
图4是本申请实施例提供的配置信息表的一个可选的示意图;
图5是本申请实施例提供的数据同步方法的一个可选的流程示意图;
图6是本申请实施例提供的数据同步方法的一个可选的流程示意图;
图7是本申请实施例提供的数据同步过程的一个可选的示意图;
图8是本申请实施例提供的数据同步装置的一个可选的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)数据操作:包括数据库定义语言(DDL,Data definition language)操作和数据操纵语言(DML,Data Manipulation Language)操作。其中,DDL操作包括但不限于对数据库、数据库表、数据库表中的行或列、数据库的主键或外键等的创建、删除和查询,对数据库名、数据库表名和数据库列名的修改,对数据库表中的行或列的位置的修改,对数据库中数据类型的修改等操作。DML操作包括但不限于对数据库进行数据的新增、删除、查询和更新等操作。
2)数据仓库(DW,Data Warehouse):是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的基于分布式存储和计算的大型数据库。
示例性地,海杜普分布式文件系统(HDFS,Hadoop Distributed File System)作为数据仓库的一种,具有高容错性和高吞吐量的特点,能够为海量的数据提供存储。
3)发布订阅消息系统:发布订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者),而是将发布的消息分为不同的类别,无需了解哪些订阅者可能存在,同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者存在;发布订阅消息系统则是实现这种发布订阅消息范式的平台。
示例性地,kafaka消息系统作为发布订阅消息系统的一种,由于其具备较高的消息吞吐效率而被广泛使用,它是一种分布式系统,可以运行在一台或多台服务器组成的集群上。
4)数据字典:指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等数据元素进行定义和描述的信息集合。
示例性地,数据库的数据字典记录的信息包括但不限于有:数据库设计资料、数据库内部储存的结构化查询语言(SQL,Structured Query Language)程序、用户权限、用户统计、数据库使用过程中产生的信息、数据库增长统计及数据库性能统计等。
本申请实施例提供一种数据同步方法、装置、电子设备和计算机可读存储介质,能够提高数据同步的速度且不影响关系型数据库的业务使用性能。
首先对本申请实施例提供的数据同步系统进行说明,参见图1,图1是本申请实施例提供的数据同步系统100的一个可选的结构示意图,服务器200通过网络300与终端400、关系型数据库500和目标数据仓库600连接。网络300可以是广域网或者局域网,又或者是二者的组合,可以采用有限或者无线的方式进行直接或间接地连接,本申请实施例中不做限制。在一些实施例中,终端400可以是笔记本电脑,平板电脑,台式计算机,智能手机,专用消息设备,便携式游戏设备,智能音箱,智能手表等,但并不局限于此。服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。关系型数据库500可以但不限于是Oracle、SQLServer、DB2或Mysql等数据库,它可以采用独立的服务器实现,也可以采用服务器集群实现。目标数据仓库600可以是任意类型的数据库,例如可以是关系数据库、非关系型数据库和键值数据库等,还可以是基于分布式存储和计算的数据仓库,例如海杜普分布式文件系统。
终端400用于,响应于针对关系型数据库500的日志采集指令,发送日志采集指令至关系型数据库500,以使关系型数据库500响应于日志采集指令,发送日志数据至终端400,终端400发送日志数据至服务器200。
服务器200用于,接收日志数据,从接收到的日志数据中提取与更改操作对应的操作语句,解析操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据,并将更改数据同步至目标数据仓库600。
接下来对本申请实施例提供的用于实施上述数据同步方法的电子设备进行说明,参见图2,图2是本申请实施例提供的电子设备700的结构示意图,在实际应用中,电子设备700可以实施为图1中的终端400或服务器200,以电子设备为图1所示的服务器200为例,对实施本申请实施例的数据同步方法的电子设备进行说明。图2所示的电子设备700包括:至少一个处理器710、存储器750、至少一个网络接口720和用户接口730。电子设备700中的各个组件通过总线系统740耦合在一起。可理解,总线系统740用于实现这些组件之间的连接通信。总线系统740除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统740。
处理器710可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口730包括使得能够呈现媒体内容的一个或多个输出装置731,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口730还包括一个或多个输入装置732,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器750可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器750可选地包括在物理位置上远离处理器710的一个或多个存储设备。
存储器750包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器750旨在包括任意适合类型的存储器。
在一些实施例中,存储器750能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统751,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块752,用于经由一个或多个(有线或无线)网络接口720到达其他计算设备,示例性的网络接口720包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块753,用于经由一个或多个与用户接口730相关联的输出装置731(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块754,用于对一个或多个来自一个或多个输入装置732之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的数据同步装置可以采用软件方式实现,图2示出了存储在存储器750中的数据同步装置755,其可以是程序和插件等形式的软件,包括以下软件模块:采集模块7551、提取模块7552、解析模块7553和同步模块7554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的数据同步装置可以采用硬件方式实现,作为示例,本申请实施例提供的数据同步装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据同步方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
接下来,将结合本申请实施例提供的服务器的示例性应用和实施,说明本申请实施例提供的数据同步方法。
参见图3,图3是本申请实施例提供的数据同步方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
步骤101,服务器采集关系型数据库中目标业务数据所对应的日志数据。
这里,日志数据为对目标业务数据执行数据操作时所产生。需要说明的是,本申请实施例可以在关系型数据库的任意工作状态实施而不影响关系型数据库在正常使用时的性能。这里,关系型数据库内存储有多条业务数据,每条业务数据对应有一个标识符,以指示业务数据的唯一身份。目标业务数据为关系型数据库内存储多条业务数据中的其中一条。当关系型数据库中的目标业务数据被执行了数据操作时,关系型数据库将生成对应的日志数据。日志数据记录有对目标业务数据执行数据操作的操作语句。
在实际实施时,服务器从关系型数据库中采集与目标业务数据相关的日志数据。具体地,服务器可以采集关系型数据库中的产生的日志数据,从采集的日志数据中获取与目标业务数据对应的日志数据。本申请实施例中,仅需确定目标业务数据是否有更新,若目标业务数据有更新,则获取更新后的更改数据,将更改数据同步至目标数据仓库即可。因而,服务器可以仅采集与更改操作相关的日志数据。在一些实施例中,这里采集的日志数据可以是二进制日志(binary log),二进制日志中记录了对关系型数据库执行更改的所有操作,并且记录了操作语句的发生时间、执行时长和操作数据等信息,它不记录查询(select)和显示(show)等不修改数据的操作语句。
示例性地,若服务器采集得到的日志数据为“update table_mysql set value=“200where key_id=“1”,则该日志数据记录了将名称为table_mysql的数据库表中标识符为1的数据更新为200的更改操作。
在一些实施例中,还可以执行:服务器确定至少一个待同步关系型数据库;从所述至少一个待同步关系型数据库中选择一个待同步关系型数据库,作为所述关系型数据库。
在实际实施时,服务器还预先设置包含有多个待同步关系型数据库的基本信息的配置信息,以便基于配置信息进行相应关系型数据库的数据同步,从而方便实现多个数据库的同步任务的批量管理。服务器可以根据多个待同步关系型数据库的基本信息生成一个配置信息表,在需进行数据同步时,查询配置信息表,以根据配置信息表中记录的待同步关系型数据库的基本信息对待同步关系型数据库进行数据同步。示例性地,参照图4,图4是本申请实施例提供的配置信息表的一个可选的示意图,该配置信息表中包含有待同步关系型数据库的数据库表名、自增主键、表主键、登录账号、密码和互联网协议地址(IP,InternetProtocol Address)等信息。
在实际实施时,服务器可以读取配置信息,确定至少一个待同步关系型数据库,并从中选择一个待同步关系型数据库,作为本申请实施例的关系型数据库以执行步骤101。
在一些实施例中,当所述目标业务数据对应至少两条日志数据时,基于图3,在步骤101之后,还可以执行:服务器从所述至少两条日志数据中,提取日志数据产生时刻与当前时刻的时间间隔最小的目标日志数据。相应的,步骤102可以通过如下方式实现:服务器从所述目标日志数据中提取与更改操作对应的操作语句。
这里,当在服务器进行日志数据的采集之前,目标业务数据有可能被执行了多次数据操作,则对应有多条日志数据,那么服务器采集的日志数据则可能有多条。当目标业务数据对应至少两条日志数据时,服务器则基于日志数据的产生时刻,从至少两条日志数据中提取其产生时刻至当前时刻的时间间隔最小的一条日志数据作为目标日志数据,然后基于目标日志数据执行步骤102。如此,则可以避免对目标业务数据进行了多次数据操作时,服务器进行了不必要的日志数据的采集和分析。
在一些实施例中,基于图3,在步骤101之后,还可以执行:服务器将所述日志数据存储至发布订阅消息系统的消息队列,以使所述发布订阅消息系统基于所述消息队列,对所述日志数据进行推送。相应的,步骤102可以通过如下方式实现:当接收到所述发布订阅消息系统推送的所述日志数据时,服务器从所述日志数据中提取与更改操作对应的操作语句。
在实际实施时,服务器还将采集的日志数据进行数据格式的转换,以转换成符合发布订阅消息系统的存储格式的数据,例如json格式,然后将格式转换后的日志数据发送给发布订阅消息系统。日志数据被存储至发布订阅消息系统的消息队列,发布订阅消息系统则从消息队列中获取日志数据,并对日志数据进行分类,以使日志数据携带分类标签,发布订阅消息系统则将携带分类标签的日志数据进行推送,以使发布订阅消息系统的订阅者接收到推送的日志数据。这里,发布订阅消息系统可以采用广播的方式对日志数据进行推送。本申请实施例的服务器作为发布订阅消息系统的订阅者,可以仅订阅数据库日志类型的消息,从而可以日志数据的分类标签,对应接收到日志数据。这里,发布订阅消息系统可以是kafka消息系统。
在一些实施例中,服务器可以不执行从关系型数据库进行日志采集的操作,而是直接订阅上述的发布订阅消息系统,从中接收日志数据。这里发布订阅消息系统内的日志数据则可以是由其他电子设备采集,并存储至发布订阅消息系统中的。这里,采集日志数据的其他电子设备可以是Maxwell解析工具。Maxwell解析工具可以作为关系型数据库的从设备,接收关系型数据库的日志数据,实现实时地日志数据的采集,并将采集的日志数据发送给发布订阅消息系统。这里,Maxwell解析工具还将采集的日志数据转换为json格式,然后将json格式的日志数据发送给发布订阅消息系统。
上述实施例中,通过采用发布订阅消息系统管理日志数据,服务器基于发布订阅消息系统来获取对应的日志数据,能够高效有序地实现对日志数据的获取。
步骤102,从所述日志数据中提取与更改操作对应的操作语句。
在实际实施时,服务器在获得日志数据后,从日志数据中提取与更改操作对应的操作语句。这里,服务器获取的日志数据可能记录有对目标业务数据的多种数据操作,并且日志数据中还记录有与数据操作无关的其他信息,例如数据操作的执行时间、数据操作的执行环境以及发出数据操作请求的电子设备信息等。而本申请实施例中仅需获得与更改操作相关的信息,因而需从日志数据中进一步提取信息。在实际实施时,服务器从日志数据中提取与具体的更改操作对应操作语句,以便从操作语句中获得目标业务数据的相关更新信息。
在一些实施例中,基于图3,步骤102可以通过如下方式实现:服务器获取针对所述关系型数据库的更改操作的操作语句格式;基于所述操作语句格式,从所述日志数据中提取与更改操作对应的操作语句。
需要说明的是,不同类型的数据库进行数据操作所采用的查询语言可能不同,而对于关系型数据库,一般采用的是SQL语言。在实际实施时,服务器需首先确定关系型数据库所采用的语言,并基于该语言对应的更改操作的操作语句格式,来对应从日志数据中提取与更改操作相关的操作语句。在实际实施时,服务器查询关系型数据库的数据字典,从数据字典中获取更改操作对应的操作语句格式。例如可以是“update表名set…”的更新操作语句格式,“delete from表名where...”的删除操作语句格式,“insert into表名values(值1,值2,...)”的新增操作语句格式等。接着,服务器基于更改操作的操作语句格式,查询日志数据,从中提取与操作语句格式相匹配的操作语句。
步骤103,解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据。
应当理解的是,操作语句中包含有对目标业务数据的操作动作、目标业务数据的数值以及目标业务数据的标识符。这里,目标业务数据的标识符可以是数字,还可以是字符串。需要说明的是,若更改操作为更新操作,则更改操作为对目标业务数据进行更新之后得到的数据。若更改操作为删除操作,则对应的更改数据为空。若更改操作为新增操作,则对应的更改数据为新增的新增数据。例如对于“update table_mysql set value=“200wherekey_id=“1”这一更新操作的操作语句,200则为标识符为1的目标业务数据对应的更改数据。在实际实施时,服务器可以基于数据库操作语言的操作语句格式,从更新操作对应的操作语句中提取出对应的更改数据。
在一些实施例中,图3示出的步骤103还可以通过如下方式实现:服务器从所述操作语句中提取所述目标业务数据的标识符;基于所述标识符,从所述操作语句中提取与所述标识符对应的所述更改数据。
在实际实施时,服务器基于与标识符对应的关键词,查询操作语句,从操作语句中提取目标业务数据的标识符。这里,标识符对应的关键词例如可以是“key”或者“id”等。服务器在提取到标识符之后,则可以基于该标识符从日志数据中提取与标识符对应的数据值作为更改数据。
步骤104,将所述更改数据同步至目标数据仓库。
在一些实施例中,步骤104可以通过如下方式实现:服务器基于所述更改数据对应的标识符,从目标数据仓库中查找与所述标识符对应的目标数据;将所述目标数据更新为所述更改数据。
在实际实施时,服务器将更改数据的标识符作为索引,查找目标数据库仓库,若在目标数据仓库中查找到该标识符,则将该标识符对应的目标数据更新为更改数据;若未在目标数据仓库中查找到该标识符,则将该标识符和对应的更改数据相映射地存储至目标数据仓库;若更改数据为空,即对目标业务数据执行了删除操作,服务器则将目标数据仓库中与该标识符对应的目标数据进行删除,同时也将该标识符从目标数据仓库中删除。
在一些实施例中,还可以执行:服务器获取所述目标数据仓库的数据存储格式;基于所述目标数据仓库的数据存储格式,对所述标识符和所述更改数据进行拼接,得到目标数据项。相应的,步骤104可以通过如下方式实现:服务器基于所述目标数据项,将所述更改数据同步至目标数据仓库。
在实际实施时,服务器基于目标数据仓库的类型,确定目标数据仓库的数据存储格式。示例性地,对于HDFS,数据存储于hive表内。本申请实施例中,对于任一个关系型数据库,均在目标数据仓库中对应有hive表。例如对于数据库表名为table_mysql的关系型数据库,其在目标数据仓库内对应的hive表则可以为table_hive。hive表的数据存储格式为schema格式。服务器基于json格式的日志数据进行更改数据和标识符的提取之后,将提取的标识符和更改数据进行拼接,得到schema格式的目标数据项,并将schema格式的目标数据项同步至hive表内,完成更改数据从关系型数据至目标数据仓库的同步。需要说明的是,本申请实施例对服务器获取目标数据仓库的数据存储格式的步骤的执行顺序不作限定,它可以在步骤104之前的任意步骤之间执行。
上述实施例中,服务器通过从关系型数据库的日志数据中提取对目标业务数据进行更改后的更改数据,将更改数据同步至目标数据仓库,如此,省去了对关系型数据库的查询操作,且仅同步有更改的数据,减少了数据同步时的数据查询工作量以及传输的数据量,从而提高了数据同步的速度,并且由于绕开了对关系型数据库的直接访问,使得在数据同步过程中不会影响关系型数据库的业务使用性能。
在一些实施例中,参照图5,图5是本申请实施例提供的数据同步方法的一个可选的流程示意图,基于图3,在步骤104之前,还可以执行:步骤201,服务器将所述更改数据缓存至增量存储空间。相应的,步骤104可以通过如下方式实现:步骤1041,当接收到数据同步指令时,服务器将所述增量存储空间内缓存的更改数据同步至目标数据仓库;或者服务器获取数据同步周期,当确定所述数据同步周期到达时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库。
在实际实施时,增量存储空间用于缓存更改数据,以便在需进行数据同步时,服务器可以从增量存储空间中取出更改数据同步至目标数据仓库。需要说明的是,增量存储空间可以设置于服务器内,还可以设置于与服务器通信连接的外部设备内,还可以设置于目标数据仓库内。在一些实施例中,增量存储空间设置于目标数据仓库内,对于任一个关系型数据库,均在目标数据仓库中对应设置有增量存储空间和同步空间,在需进行数据同步时,服务器从增量存储空间中取出更改数据同步至同步空间内。示例性地,增量存储空间具体可以是一个缓存表,例如对于HDFS的目标数据仓库,增量存储空间则为hive缓存表。例如,对于关系型数据库table_mysql,其在目标数据仓库内对应的hive缓存表则可以为table_hive_buffer。
在实际实施时,服务器首先将更改数据缓存至增量存储空间。当服务器接收到用户发出的数据同步指令时,将增量存储空间内存储的所有更改数据均同步至目标数据仓库。或者,服务器获取数据同步周期,当数据同步周期到达时,将增量存储空间内存储的所有更改数据均同步至目标数据仓库。这里,数据同步周期可以预先设置,例如可以设置为一天,增量存储空间则存储有关系型数据库一天的更改数据。
上述实施例中,通过将更改数据缓存至增量存储空间,当需要进行数据同步时,例如接收到数据同步指令,或者数据同步周期到达时,可以方便地从增量存储空间内取出更改数据同步至目标数据仓库,通过缓存的方式能够有序地对待同步的更新数据进行管理。
在一些实施例中,基于图3,步骤101还可以通过如下方式实现:服务器获取日志数据的采集周期;当确定所述采集周期到达时,采集关系型数据库中目标业务数据所对应的日志数据。
应当理解的是,这里的采集周期也即更改数据缓存至增量存储空间的缓存周期,服务器在需对更改数据进行缓存时,需缓存的更改数据是一个采集周期内积累的多个数据。采集周期可以是预先设置,它可以设置为与同步周期相同,也可以设置为与同步周期不同。例如,采集周期可以设置为一小时,同步周期设置为一天,服务器则每小时采集一次日志数据,并将提取的更改数据缓存至增量存储空间,服务器则每间隔一天将增量存储空间内缓存的更改数据同步至目标数据仓库内。采集周期还可以与同步周期均设置为一天,服务器则同步进行更改数据的缓存和同步。通过设置采集周期,使得对于日志数据的采集工作得以有序稳定地进行。
在一些实施例中,服务器是从发布订阅消息系统接收日志数据,则采集周期为将日志数据存储至发布订阅消息系统的时间间隔。服务器还可以设置一个从发布订阅消息系统接收日志数据缓存至增量存储空间的缓存周期。这里,本申请实施例对于缓存周期、采集周期以及同步周期等三个时间周期的时间设置不作具体限制,三者可以设置为相同的时间周期,还可以设置为互不相同的时间周期,还可以设置为其中两者相同且与另一个不同的时间周期。
在一些实施例中,基于图5,还可以执行:服务器在增量存储空间内创建至少一个缓存分区。相应的,步骤201还可以通过如下方式实现:服务器从所述至少一个缓存分区中选择一个缓存分区作为目标缓存分区;将所述更改数据缓存至所述目标缓存分区。
在实际实施时,服务器以缓存周期为单位,在增量存储空间内创建缓存分区,也即是说,一个缓存周期对应一个缓存分区。在一些实施例中,服务器还可以根据数据的业务类型创建缓存分区,也即是说,一种业务类型对应一个缓存分区,以便在进行缓存时,能够方便地根据分区类型进行数据的查找,并进行针对性地数据同步,从而可以不对增量存储空间内的所有数据同时进行同步。需要说明的是,创建缓存分区的步骤可以在步骤201之前的任意时间点执行,本申请实施例不对其执行顺序作具体限定。
在实际实施时,服务器在对更改数据进行缓存时,可以根据更改数据的缓存周期或者数据类型,从至少一个缓存分区中选择一个对应的缓存分区作为目标缓存分区,将更改数据缓存至目标缓存分区内。
应当理解的是,服务器在需对更改数据进行缓存时,需缓存的更改数据是一个缓存周期内积累的多个数据,在一些实施例中,服务器可以在需进行数据缓存时,针对当前的缓存周期创建一个缓存分区,并将该缓存周期内获得的所有更改数据缓存至该缓存分区内,当该缓存分区内的更改数据被同步至目标数据仓库后,服务器则将该缓存分区删除。通过这种方式能够方便且有序地对待同步的更改数据进行缓存管理,避免了数据同步时需查询的数据量过多导致的数据同步缓慢的缺陷,同时能够方便地针对性地进行数据的同步。
在一些实施例中,还可以执行:服务器获取所述更改数据缓存至所述增量存储空间的缓存时刻;确定所述缓存时刻至当前时刻的缓存时间间隔;当所述缓存时间间隔大于或等于时间阈值时,将所述更改数据从所述增量存储空间中删除。
在实际实施时,服务器获取增量存储空间对应的时间戳,基于该时间戳确定更改数据缓存至增量存储空间的缓存时刻,当所述缓存时刻至当前时刻的缓存时间间隔大于或等于时间阈值时,服务器则将该更改数据从增量存储空间删除,以对增量存储空间内存储的时间较为久远的更改数据进行清理,从而节省存储空间。
接下来继续对本申请实施例提供的数据同步方法进行介绍,图6是本申请实施例提供的数据同步方法的一个可选的流程示意图,参见图6,本申请实施例提供的数据同步方法由客户端、服务器协同实施。
步骤301,客户端响应于针对关系型数据库的日志采集指令,采集关系型数据库中目标业务数据所对应的日志数据。
需要说明的是,关系型数据库是采用了关系模型来组织数据的数据库,这里,关系模型可以为二维表格模型,相应的,关系型数据库则可以是由二维表及其之间的关系组成的一个数据组织,其以行和列的形式存储业务数据。示例性地,本申请实施例所采用的关系型数据库可以但不限于是Oracle、SQLServer、DB2或Mysql等。而从数据的具体存储形式来说,本申请实施例的关系型数据库中的一行数据记录可以包括业务数据的主键(key)和业务数据的值(value)其中的主键为表征业务数据唯一身份的标识符,其中的值为业务数据的值。这里,主键可以是数据库管理员自行设置的,例如增加一列单独作为主键,可以以数字或者字符的形式对各行数据记录进行编号,从而表征各行数据记录的唯一身份;这件还可以是一行数据记录中的某一列,例如关系型数据库中包括用户名字和用户年龄等列项,则可以将用户名字作为该关系型数据库的主键。在使用数据库时,可以将主键作为索引对数据库进行查询,以查询得到与该主键对应的一行数据记录各列的值,从而获得业务数据,这里,业务数据包括该条数据记录各列的值。关系型数据库可以根据实际业务场景设置有不同的业务数据。这里,业务场景例如可以是金融场景、教学场景、交易场景以及仓库管理场景等等。例如,在金融场景下,业务数据则可以包括用户身份信息、用户交易行为数据、用户存款数据及用户贷款数据等等。
在实际实施时,日志采集指令可以是用户通过操作客户端的输入设备发出,或者由与客户端通信连接的其他电子设备向客户端发出,还可以是客户端通过获取日志数据的采集周期,当确定采集周期到达时由客户端自动生成。日志数据为对目标业务数据执行数据操作时所产生。产生的日志数据可以写入关系型数据库的日志文件中,还可以被与关系型数据库通信连接的从设备接收。
以日志数据写入关系型数据库的日志文件中为示例,客户端响应于日志采集指令,访问关系型数据库的日志文件的存储地址,获取对应的日志文件,并从日志文件中获取与目标业务数据对应的日志数据。这里,日志文件可以与关系型数据库对应存储于同一文件系统的相同目录下。
以日志数据被与关系型数据库通信连接的从设备接收为示例,客户端可以作为关系型数据库的从设备,直接接收关系型数据库的日志数据。而若作为接收关系型数据库的从设备为与其他电子设备,客户端则响应于日志采集指令,将访问关系型数据库的从设备,从中获取日志数据。
在一些实施例中,客户端采集得到日志数据后,还将其存储至发布订阅消息系统的消息队列,以使发布订阅消息系统基于消息队列,对日志数据进行推送。这里,任意电子设备均可以作为发布订阅消息系统的订阅者,从发布订阅消息系统中接收日志数据。在实际实施时,客户端在将日志数据发送至发布订阅消息系统进行存储之前,还对日志数据进行格式的转换,以转换为发布订阅消息系统的消息格式,例如json格式,以便发布订阅消息系统直接进行对应格式的消息发布。在一些实施例中,作为接收关系型数据库的从设备还可以为其他具备日志解析功能的电子设备,例如Maxwell解析工具,Maxwell解析工具从关系型数据库中接收日志数据并进行格式转换后,将格式转换后的日志数据发送给发布订阅消息系统进行存储。
在一些实施例中,客户端采集的目标业务数据的日志数据包括至少两条,则客户端还从至少两条日志数据中,提取日志数据产生时刻与当前时刻的时间间隔最小的目标日志数据,将目标日志数据封装到数据解析指令中。
在一些实施例中,客户端还确定至少一个待同步关系型数据库,从至少一个待同步关系型数据库中选择一个待同步关系型数据库,作为关系型数据库。在实际实施时,客户端中预先设置有配置信息,该配置信息包括至少一个待同步关系型数据库的基本信息,用以指示待同步关系型数据库的身份,以便客户端基于配置信息内存储的基本信息确定待同步关系型数据库,从而实现对多个关系型数据库的数据同步的批量管理。
步骤302,客户端响应于针对日志数据的数据解析指令,发送数据解析指令至服务器。
这里,数据解析指令携带有目标业务数据的日志数据。在实际实施时,数据解析指令可以是用户通过操作客户端的输入设备发出,还可以由与客户端通信连接的其他电子设备向客户端发出,或者是客户端通过获取缓存周期,当确定缓存周期到达时由客户端自动生成。需要说明的是,这里的缓存周期可以与日志数据的采集周期设置为相同的周期时间,例如将采集周期和缓存周期均设置为1天;缓存周期也可以与采集周期设置为不同的周期时间,例如将采集周期设置为1小时,而将缓存周期设置为1天。
在实际实施时,当客户端获得数据解析指令时,将携带有日志数据的数据解析指令至服务器。需要说明的是,若目标业务数据对应有至少两条日志数据,那么这里的数据解析指令中携带的日志数据则为从中提取的目标日志数据。
步骤303,服务器解析数据解析指令,获得日志数据。
在实际实施时,服务器通过解析数据解析指令,得到封装在数据解析指令中的日志数据。
步骤304,服务器从日志数据中提取与更改操作对应的操作语句。
这里,服务器获取针对关系型数据库的更改操作的操作语句格式,基于操作语句格式,从日志数据中提取与更改操作对应的操作语句。
步骤305,服务器解析操作语句,得到对目标业务数据执行更改操作后得到的更改数据。
步骤306,服务器将更改数据缓存至增量存储空间。
这里,增量存储空间设置于服务器中,在一些实施例中,增量存储空间还可以设置于目标数据仓库中。当增量存储空间设置于目标数据仓库时,目标数据仓库中还对应设置有同步空间,当需要对更改数据进行数据同步时,可以将更改数据从增量存储空间同步至同步空间。
在一些实施例中,服务器还获取增量存储空间的时间戳,基于该时间戳获取更改数据缓存至增量存储空间的缓存时刻,并读取系统时间获得当前时刻,确定缓存时刻至当前时刻的缓存时间间隔,当缓存时间间隔大于或等于时间阈值时,将更改数据从增量存储空间中删除。
在一些实施例中,服务器还以分区的形式对更改数据进行缓存。具体地,服务器在增量存储空间内创建至少一个缓存分区,在需对更改数据进行缓存时,从至少一个缓存分区中选择一个缓存分区作为目标缓存分区,将更改数据缓存至目标缓存分区。需要说明的是,服务器可以在需对更改数据进行缓存之前的任意时刻创建缓存分区,缓存分区可以基于时间创建,将时间作为缓存分区的分区标签,也即是说,不同缓存分区可以用于存储不同产生时刻的更改数据,这里,更改数据的产生时刻为对目标业务数据进行更改操作的操作时刻;缓存分区还可以基于数据类型创建,将数据类型作为缓存分区的分区标签,也即是说,不同缓存分区可以用于存储不同数据类型的更改数据,数据类型可以基于更改数据的功能类型分类,例如将用户身份信息作为一类对应创建一个缓存分区,还可以基于更改数据的数据存储类型分类,例如整数型或字符型等,还可以基于更改数据的数据大小分类,例如小于等于4字节作为一个分类,大于4字节作为一个分类等。
在一些实施例中,服务器还可以是在每次需要对更改数据进行缓存时,均对应创建一个缓存分区。例如,服务器可以基于当前的缓存周期,以当前的缓存周期所对应的起始时间作为缓存分区的分区标签对应创建一个缓存分区,将该起始时间之内获得的更改数据对应存储至该缓存分区内。通过这种缓存方式对更改数据进行缓存,能够方便对增量存储空间的数据管理。例如需要进行数据查询时,可以基于缓存分区的分区标签查询对应的缓存分区,从而可以避免每次查询时均需对整个增量存储空间进行条件查询,从而增快了查询速度,而在需对缓存时间间隔大于等于时间阈值的更改数据进行删除时,可以通过直接删除满足该时间条件的整个缓存分区的方式达到目的,从而可以方便且高效地对增量存储空间进行清理。
在一些实施例中,服务器还获取目标数据仓库的数据存储格式,基于目标数据仓库的数据存储格式,对标识符和更改数据进行拼接,得到目标数据项,并将目标数据项缓存至增量存储空间,在需进行数据同步至,直接基于获取目标数据项进行数据同步,从而将更改数据同步至目标数据仓库。
步骤307,客户端响应于针对更改数据的数据同步指令,发送数据同步指令至服务器。
步骤308,服务器响应于数据同步指令,将增量存储空间内缓存的更改数据同步至目标数据仓库。
这里,数据同步指令可以是用户通过操作客户端的输入设备发出,或者由与客户端通信连接的其他电子设备向客户端发出,还可以是客户端通过获取关系型数据库的数据同步周期,当确定数据同步周期到达时由客户端自动生成。需要说明的是,这里的同步周期可以与前述的采集周期和缓存周期设置为相同的周期时间,例如将三者均设置为1天;也可以设置为互不相同的周期时间,例如将采集周期设置为1小时,缓存周期设置为1天,而将同步周期设置为2天;还可以将其中的两者设置为相同的周期时间,而剩余的一个设置为与该二者不同的周期时间,例如将采集周期设置为1小时,而将缓存周期和同步周期均设置为1天等。
在实际实施时,服务器在接收到数据同步指令时,从增量存储空间中取出缓存的所有更改数据,将更改数据同步至目标数据仓库。若客户端具体地,服务器基于更改数据对应的标识符,从目标数据仓库中查找与标识符对应的目标数据,将目标数据更新为更改数据。
在一些实施例中,增量存储空间设置于目标数据仓库内,客户端可以将数据同步指令发送至服务器,通过服务器控制目标数据仓库,以将增量存储空间内缓存的更改数据同步至同步空间,客户端还可以直接将数据同步指令发送至目标数据仓库,由目标数据仓库将本地的增量存储空间内缓存的更改数据同步至本地的同步空间。
上述实施例中,通过客户端采集日志数据发送至服务器,通过服务器从日志数据中提取对目标业务数据进行更改后的更改数据,将更改数据同步至目标数据仓库,如此,省去了对关系型数据库的查询操作,且仅同步有更改的数据,减少了数据同步时的数据查询工作量以及传输的数据量,从而提高了数据同步的速度,并且由于绕开了对关系型数据库的直接访问,使得在数据同步过程中不会影响关系型数据库的业务使用性能。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。参照图7,图7是本申请实施例提供的数据同步过程的一个可选的示意图。在实际实施时,本申请实施例提供的数据同步方法可包括如下操作:
服务器利用Maxwell解析工具对关系型数据库MySQL进行实时地日志采集,采集得到关系型数据库的二进制日志。其中,Maxwell解析工具的工作方式为包装为关系型数据库的从设备,从关系型数据库中接收日志数据,并将采集的日志数据转换为json格式,然后将json格式的日志数据发送至kafka消息系统进行存储。这里,日志数据为二进制日志,Maxwell解析工具具体从关系型数据库中采集binlog events。Maxwell解析工具产生的json格式的日志数据在存储至kafka消息系统时,流入kafka消息系统的消息队列缓冲层供下游订阅消费。本申请实施例的服务器则可以通过订阅的方式从kafka消息系统获得日志数据。
示例性地,若采集得到的日志数据为“update table_mysql set value=“200where key_id=“1”,则Maxwell解析工具对该条日志数据进行格式转换后得到的json格式的日志数据如下所示:
可以理解,json格式的日志数据中包含有关系型数据库的表名“table_mysql”,数据操作的类型“update”,数据的标识符key_id为1,更新之前的数据“100”,以及更新后的数据“200”等信息。
在实际实施时,服务器可以读取预先设置的配置信息,只订阅需要同步的关系型数据库的日志数据。其中,配置信息可以通过数表的方式存储在服务器内,具体可以参照图4。接着,服务器基于读取的配置信息内存储的待同步关系型数据库的基本信息,确定需要同步的关系型数据库,从kafka消息系统中订阅与待同步关系型数据库相关的日志数据。此外,对于数据同步而言,仅需获取与新增、删除、查询和更新相关的日志数据即可,因而,服务器仅从kafka消息系统中订阅与待同步关系型数据库相关的新增、删除、查询和更新的日志数据。
服务器在获得待同步的关系型数据库的日志数据后,利用Flink对json格式的日志数据进行解析,将解析得到的标识符和更改数据拼接为符合HDFS中的hive表的存储格式的schema格式。其中,Flink是一个框架和分布式处理引擎,用于对数据流进行有状态计算。
本实施例中,服务器还设置有对关系型数据库的同步周期,例如可以是一天。由于在同步周期内,关系型数据库可能存在某条数据进行了多次更改,对应存在多条日志数据的情况,因此,服务器在获得日志数据后,还根据日志数据的产生时刻,获取距离当前时刻的时间间隔最小的一条日志数据,并将该条日志数据利用Flink处理后得到的schema格式的数据写入HDFS中,然后载入HDFS的hive缓存表table_hive_buffer中。本实施例中,hive缓存表中还设置有多个缓存分区,每个缓存分区对应一个同步周期,例如,每个缓存分区对应一个相应的日期。
服务器在将schema格式的数据载入hive缓存表后,则基于hive缓存表进行数据还原,将日志数据所记录的更改数据同步至对应的同步空间内。对于HDFS,针对hive缓存表table_hive_buffer的同步空间则为hive表table_hive。若某个主键存在于hive缓存表中,则表示该主键对应的数据存在更改。本申请实施例可以采用hive sql完成数据同步,示例性地,实现数据同步的SQL语句可以如下。
INSERT OVERWRITE TABLE table_hive
SELECT
if(t2.key_id is not NULL,t2.key_id,t1.key_id)key_id,
if(t2.key_id is not NULL,t2.value,t1.value)value
FROM table_hive t1
FULL OUYER JOIN table_hive_buffer PARTITION(p_YYYYMMDD)t2
ON t1.key_id=t2.key_id
可以理解,上述的SQL语句实现了hive缓存表table_hive_buffer和hive表table_hive的全外连接,只要两个表中存在相匹配的主键,则将table_hive中该主键对应的数据更改为table_hive_buffer中该主键对应的数据,从而实现数据的同步。示例性地,图7示出的table_hive_buffer中缓存有“key_id=1,value=200”的数据,而同步前的hive表存储有两条数据“key_id=1,value=100”和“key_id=2,value=200”,通过本申请实施例的上述同步过程,将同步前的hive表中key_id=1的数据的value值更改为200,得到同步后的hive表,则同步后的hive表存储的数据被更改为“key_id=1,value=200”和“key_id=2,value=200”。至此,完成了对关系型数据库的数据同步。
下面继续说明本申请实施例提供的数据同步装置755的实施为软件模块的示例性结构,在一些实施例中,参见图8,图8是本申请实施例提供的数据同步装置的一个可选的组成结构示意图,存储在存储器750的数据同步装置755中的软件模块可以包括:
采集模块7551,用于采集关系型数据库中目标业务数据所对应的日志数据;其中,所述日志数据为对所述目标业务数据执行数据操作时所产生;
提取模块7552,用于从所述日志数据中提取与更改操作对应的操作语句;
解析模块7553,用于解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据;
同步模块7554,用于将所述更改数据同步至目标数据仓库。
上述方案中,所述提取模块7552,还用于获取针对所述关系型数据库的更改操作的操作语句格式;基于所述操作语句格式,从所述日志数据中提取与更改操作对应的操作语句。
上述方案中,存储在存储器750的数据同步装置755中的软件模块还可以包括:缓存模块,用于将所述更改数据缓存至增量存储空间。相应的,所述同步模块7554,还用于当接收到数据同步指令时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库;或者获取数据同步周期,当确定所述数据同步周期到达时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库。
上述方案中,所述缓存模块,还用于获取所述更改数据缓存至所述增量存储空间的缓存时刻;确定所述缓存时刻至当前时刻的缓存时间间隔;当所述缓存时间间隔大于或等于时间阈值时,将所述更改数据从所述增量存储空间中删除。
上述方案中,所述采集模块7551,还用于获取日志数据的采集周期;当确定所述采集周期到达时,采集关系型数据库中目标业务数据所对应的日志数据。
上述方案中,所述缓存模块,还用于在增量存储空间内创建至少一个缓存分区;从所述至少一个缓存分区中选择一个缓存分区作为目标缓存分区;将所述更改数据缓存至所述目标缓存分区。
上述方案中,当所述目标业务数据对应至少两条日志数据时,所述采集模块7551,还用于从所述至少两条日志数据中,提取日志数据产生时刻与当前时刻的时间间隔最小的目标日志数据。相应的,所述提取模块7552,还用于从所述目标日志数据中提取与更改操作对应的操作语句。
上述方案中,存储在存储器750的数据同步装置755中的软件模块还可以包括:存储模块,用于将所述日志数据存储至发布订阅消息系统的消息队列,以使所述发布订阅消息系统基于所述消息队列,对所述日志数据进行推送。相应的,所述提取模块7552,还用于当接收到所述发布订阅消息系统推送的所述日志数据时,从所述日志数据中提取与更改操作对应的操作语句。
上述方案中,所述解析模块7553,还用于从所述操作语句中提取所述目标业务数据的标识符;基于所述标识符,从所述操作语句中提取与所述标识符对应的所述更改数据。
上述方案中,存储在存储器750的数据同步装置755中的软件模块还可以包括:数据拼接模块,用于获取所述目标数据仓库的数据存储格式;基于所述目标数据仓库的数据存储格式,对所述标识符和所述更改数据进行拼接,得到目标数据项。相应的,所述同步模块7554,还用于基于所述目标数据项,将所述更改数据同步至目标数据仓库。
上述方案中,所述同步模块7554,还用于基于所述更改数据对应的标识符,从目标数据仓库中查找与所述标识符对应的目标数据;将所述目标数据更新为所述更改数据。
上述方案中,存储在存储器750的数据同步装置755中的软件模块还可以包括:选择模块,用于确定至少一个待同步关系型数据库;从所述至少一个待同步关系型数据库中选择一个待同步关系型数据库,作为所述关系型数据库。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据同步方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3示出的数据同步方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例能够提高数据同步的速度且不影响关系型数据库的业务使用性能。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
采集关系型数据库中目标业务数据所对应的日志数据;其中,所述日志数据为对所述目标业务数据执行数据操作时所产生;
从所述日志数据中提取与更改操作对应的操作语句;
解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据;
将所述更改数据同步至目标数据仓库。
2.根据权利要求1所述的方法,其特征在于,所述从所述日志数据中提取与更改操作对应的操作语句,包括:
获取针对所述关系型数据库的更改操作的操作语句格式;
基于所述操作语句格式,从所述日志数据中提取与更改操作对应的操作语句。
3.根据权利要求1所述的方法,其特征在于,所述将所述更改数据同步至目标数据仓库之前,所述方法还包括:
将所述更改数据缓存至增量存储空间;
相应的,所述将所述更改数据同步至目标数据仓库,包括:
当接收到数据同步指令时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库;或者
获取数据同步周期,当确定所述数据同步周期到达时,将所述增量存储空间内缓存的更改数据同步至目标数据仓库。
4.根据权利要求3所述的方法,其特征在于,所述采集关系型数据库中目标业务数据所对应的日志数据,包括:
获取日志数据的采集周期;
当确定所述采集周期到达时,采集关系型数据库中目标业务数据所对应的日志数据。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述增量存储空间内创建至少一个缓存分区;
相应的,所述将所述更改数据缓存至增量存储空间,包括:
从所述至少一个缓存分区中选择一个缓存分区作为目标缓存分区;
将所述更改数据缓存至所述目标缓存分区。
6.根据权利要求1所述的方法,其特征在于,当所述目标业务数据对应至少两条日志数据时,所述采集关系型数据库中目标业务数据所对应的日志数据之后,所述方法还包括:
从所述至少两条日志数据中,提取日志数据产生时刻与当前时刻的时间间隔最小的目标日志数据;
相应的,所述从所述日志数据中提取与更改操作对应的操作语句,包括:
从所述目标日志数据中提取与更改操作对应的操作语句。
7.根据权利要求1所述的方法,其特征在于,所述采集关系型数据库中目标业务数据所对应的日志数据之后,所述方法还包括:
将所述日志数据存储至发布订阅消息系统的消息队列,以使所述发布订阅消息系统基于所述消息队列,对所述日志数据进行推送;
相应的,所述从所述日志数据中提取与更改操作对应的操作语句,包括:
当接收到所述发布订阅消息系统推送的所述日志数据时,从所述日志数据中提取与更改操作对应的操作语句。
8.根据权利要求1所述的方法,其特征在于,所述解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据,包括:
从所述操作语句中提取所述目标业务数据的标识符;
基于所述标识符,从所述操作语句中提取与所述标识符对应的所述更改数据。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取所述目标数据仓库的数据存储格式;
基于所述目标数据仓库的数据存储格式,对所述标识符和所述更改数据进行拼接,得到目标数据项;
相应的,所述将所述更改数据同步至目标数据仓库,包括:
基于所述目标数据项,将所述更改数据同步至目标数据仓库。
10.一种数据同步装置,其特征在于,包括:
采集模块,用于采集关系型数据库中目标业务数据所对应的日志数据;其中,所述日志数据为对所述目标业务数据执行数据操作时所产生;
提取模块,用于从所述日志数据中提取与更改操作对应的操作语句;
解析模块,用于解析所述操作语句,得到对所述目标业务数据执行更改操作后得到的更改数据;
同步模块,用于将所述更改数据同步至目标数据仓库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011228771.8A CN114443599A (zh) | 2020-11-06 | 2020-11-06 | 数据同步方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011228771.8A CN114443599A (zh) | 2020-11-06 | 2020-11-06 | 数据同步方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443599A true CN114443599A (zh) | 2022-05-06 |
Family
ID=81361999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011228771.8A Pending CN114443599A (zh) | 2020-11-06 | 2020-11-06 | 数据同步方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443599A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115391457A (zh) * | 2022-08-23 | 2022-11-25 | 昆仑数智科技有限责任公司 | 跨数据库的数据同步方法、装置及存储介质 |
CN116028579A (zh) * | 2023-02-27 | 2023-04-28 | 南昌国讯信息技术股份有限公司 | 数据库同步方法及电子设备和存储介质 |
-
2020
- 2020-11-06 CN CN202011228771.8A patent/CN114443599A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115391457A (zh) * | 2022-08-23 | 2022-11-25 | 昆仑数智科技有限责任公司 | 跨数据库的数据同步方法、装置及存储介质 |
CN115391457B (zh) * | 2022-08-23 | 2023-09-12 | 昆仑数智科技有限责任公司 | 跨数据库的数据同步方法、装置及存储介质 |
CN116028579A (zh) * | 2023-02-27 | 2023-04-28 | 南昌国讯信息技术股份有限公司 | 数据库同步方法及电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6617117B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
CN110196871B (zh) | 数据入库方法和系统 | |
CN105122243B (zh) | 用于半结构化数据的可扩展分析平台 | |
CN109063196B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US8762408B2 (en) | Optimizing software applications | |
CN110633186A (zh) | 用于电力计量微服务架构的日志监控系统及实现方法 | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CA2977042A1 (en) | System and method for generating an effective test data set for testing big data applications | |
CN104239572A (zh) | 基于分布式缓存实现元数据分析的系统及方法 | |
CN111859132A (zh) | 一种数据处理方法、装置及智能设备、存储介质 | |
CN112416991A (zh) | 一种数据处理方法、装置以及存储介质 | |
Caldarola et al. | Big data: A survey-the new paradigms, methodologies and tools | |
US10127617B2 (en) | System for analyzing social media data and method of analyzing social media data using the same | |
Wingerath et al. | Real-Time & Stream Data Management: Push-Based Data in Research & Practice | |
CN114443599A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
Das et al. | A study on big data integration with data warehouse | |
Mehmood et al. | Distributed real-time ETL architecture for unstructured big data | |
CN117349323B (zh) | 数据库的数据处理方法及装置、存储介质及电子设备 | |
CN114969441A (zh) | 基于图数据库的知识挖掘引擎系统 | |
US8200673B2 (en) | System and method for on-demand indexing | |
KR20100132752A (ko) | 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템 | |
WO2023164294A1 (en) | Query splitter for an inverted index datastore | |
JP6199513B1 (ja) | キャッシュテーブルの統合基盤の2段階クエリ処理システム | |
CN115510139A (zh) | 数据查询方法和装置 | |
US20130007040A1 (en) | Distributed requests on remote data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |