CN114490554A - 数据同步方法及其装置、电子设备及存储介质 - Google Patents
数据同步方法及其装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114490554A CN114490554A CN202210134131.3A CN202210134131A CN114490554A CN 114490554 A CN114490554 A CN 114490554A CN 202210134131 A CN202210134131 A CN 202210134131A CN 114490554 A CN114490554 A CN 114490554A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- statement
- file
- synchronization
- 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in 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/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/182—Distributed 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/23—Updating
-
- 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/24—Querying
- G06F16/242—Query formulation
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法及其装置、电子设备及存储介质,涉及大数据技术领域,其中,该同步方法包括:采集预设分布式集群***的审计日志,提取发生数据变化的数据处理语句所操作的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。本发明解决了相关技术中当数据发生变化时,无法自动触发数据同步的技术问题。
Description
技术领域
本发明涉及大数据技术领域,具体而言,涉及一种数据同步方法及其装置、电子设备及存储介质。
背景技术
随着大数据技术的蓬勃发展,数据规模和数据形式呈现出爆发式和多样化发展,大多企业开始基于开源Hadoop体系构建大数据体系架构。相关技术中,数据统一存储在Hadoop文件***中,可支撑由Hive、Spark等多种计算引擎进行批量加工处理。然而,在联机访问场景中,Hive时效较低,大多企业采取了将数据同步到关系型数据库中,因此,当Hadoop上数据变化时,需要快速发现数据变化情况并自动触发数据同步,以提高联机访问场景数据生效的时效性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据同步方法及其装置、电子设备及存储介质,以至少解决相关技术中当数据发生变化时,无法自动触发数据同步的技术问题。
根据本发明实施例的一个方面,提供了一种数据同步方法,包括:采集预设分布式集群***的审计日志,其中,所述审计日志中每个数据处理语句对应有语句类型,所述语句类型包括:发生数据变化和未发生数据变化;提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区;比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间;在所述文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
可选地,在采集预设分布式集群***的审计日志之后,还包括:按照预设格式对所述审计日志进行分割,得到每条所述数据处理语句的语句标识;基于所述语句标识,采集预设数据仓库中所有数据处理语句的执行日志;截取所述执行日志中每条所述数据处理语句的执行内容,其中,所述执行内容中至少包括:日志完成时间;按照所述日志完成时间的顺序依次将所述数据处理语句写入预设排序队列中,其中,所述预设排序队列用于顺序分析每个所述数据处理语句的语句类型。
可选地,在提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区之后,还包括:基于所述目标表的表标识和所述存储数据分区的区标识,查询待处理的数据修改清单;提取所述数据修改清单中存在修改标识的数据处理语句的语句执行结束时间。
可选地,比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间的步骤,包括:获取所述目标表和所述存储数据分区下的各个数据文件的文件同步时间;在所述语句执行结束时间小于等于所述文件同步时间的情况下,确认所述存在修改标识的数据处理语句已同步完成;在所述语句执行结束时间大于所述文件同步时间的情况下,将所述语句执行结束时间设置为所述文件更新时间。
可选地,在比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间之后,还包括:比较所述文件更新时间与数据同步任务日志表中的最大截至期限,得到期限比较结果;在所述文件更新时间与数据同步任务日志表中的最大截至期限不相同时,确认所述文件更新时间触发数据同步指令。
可选地,在所述文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库的步骤,包括:在所述文件更新时间触发数据同步指令的情况下,读取数据同步指令中的源集群、源表、源表用户、目标表、目标表用户;采用所述源表中关于所述源表用户的第一用户标识访问所述源集群的目标表下存在更新数据的存储数据分区,以读取分区数据;将所述目标表下分区字段为所述存在更新数据的存储数据分区的数据清空;将所述分区数据写入目标数据库。
可选地,在将所述分区数据写入目标数据库之后,还包括:获取分区数据写入目标数据库的结束时间,得到同步结束时间;将数据同步任务日志表中的最大截至期限更新为所述同步结束时间。
根据本发明实施例的另一方面,还提供了一种数据同步装置,包括:采集单元,用于采集预设分布式集群***的审计日志,其中,所述审计日志中每个数据处理语句对应有语句类型,所述语句类型包括:发生数据变化和未发生数据变化;提取单元,用于提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区;比较单元,用于比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间;写入单元,用于在所述文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
可选地,所述同步装置还包括:第一分割模块,用于在采集预设分布式集群***的审计日志之后,按照预设格式对所述审计日志进行分割,得到每条所述数据处理语句的语句标识;第一采集模块,用于基于所述语句标识,采集预设数据仓库中所有数据处理语句的执行日志;第一截取模块,用于截取所述执行日志中每条所述数据处理语句的执行内容,其中,所述执行内容中至少包括:日志完成时间;第一写入模块,用于按照所述日志完成时间的顺序依次将所述数据处理语句写入预设排序队列中,其中,所述预设排序队列用于顺序分析每个所述数据处理语句的语句类型。
可选地,所述同步装置还包括:第一查询模块,用于在提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区之后,基于所述目标表的表标识和所述存储数据分区的区标识,查询待处理的数据修改清单;第一提取模块,用于提取所述数据修改清单中存在修改标识的数据处理语句的语句执行结束时间。
可选地,所述比较单元包括:第一获取模块,用于获取所述目标表和所述存储数据分区下的各个数据文件的文件同步时间;第一确定模块,用于在所述语句执行结束时间小于等于所述文件同步时间的情况下,确认所述存在修改标识的数据处理语句已同步完成;第一设置模块,用于在所述语句执行结束时间大于所述文件同步时间的情况下,将所述语句执行结束时间设置为所述文件更新时间。
可选地,所述同步装置还包括:第一比较模块,用于在比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间之后,比较所述文件更新时间与数据同步任务日志表中的最大截至期限,得到期限比较结果;第一触发模块,用于在所述文件更新时间与数据同步任务日志表中的最大截至期限不相同时,确认所述文件更新时间触发数据同步指令。
可选地,所述写入单元包括:第一读取模块,用于在所述文件更新时间触发数据同步指令的情况下,读取数据同步指令中的源集群、源表、源表用户、目标表、目标表用户;第一访问模块,用于采用所述源表中关于所述源表用户的第一用户标识访问所述源集群的目标表下存在更新数据的存储数据分区,以读取分区数据;第一清空模块,用于将所述目标表下分区字段为所述存在更新数据的存储数据分区的数据清空;第二写入模块,用于将所述分区数据写入目标数据库。
可选地,所述同步装置还包括:第二获取模块,用于在将所述分区数据写入目标数据库之后,获取分区数据写入目标数据库的结束时间,得到同步结束时间;第一更新模块,用于将数据同步任务日志表中的最大截至期限更新为所述同步结束时间。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述所述的数据同步方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述所述的数据同步方法。
在本公开中,采集预设分布式集群***的审计日志,提取发生数据变化的数据处理语句所操作的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。在本申请中,可通过提取出发生数据变化的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,从而能够及时地将存在更新数据的存储数据分区下的数据写入目标数据库,提高了触发数据同步的时效性,并且过程全自动,进而解决了相关技术中当数据发生变化时,无法自动触发数据同步的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的数据同步方法的流程图;
图2是根据本发明实施例的一种可选的解析SQL语句的流程图;
图3是根据本发明实施例的一种可选的同步任务调度的流程图;
图4是根据本发明实施例的一种可选的基于Hive执行SQL监控数据变化触发数据同步***的示意图;
图5是根据本发明实施例的一种可选的数据同步装置的示意图;
图6是根据本发明实施例的一种用于数据同步方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或名词做出解释:
Hadoop:是一个能够对大量数据进行分布式处理的软件框架,可以以一种可靠、高效、可伸缩的方式进行数据处理。
Hive:是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
Spark:是专为大规模数据处理而设计的快速通用的计算引擎。
需要说明的是,本公开中的数据同步方法及其装置可用于大数据技术领域在数据同步的情况下,也可用于除大数据技术领域之外的任意领域在数据同步的情况下,本公开中对数据同步方法及其装置的应用领域不做限定。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本发明下述各实施例可应用于各种数据同步的***/应用/设备中。本发明通过采集大数据SQL执行的审计日志,并解析审计日志中SQL语句,提取出可能发生数据变化的目标表及存储数据分区,比较目标表和存储数据分区下的文件变化时间和最新已同步数据的变化情况,触发数据同步,读取变化分区下的数据并写入到目标数据库(例如,关系型数据库)。
下面结合各个实施例来详细说明本发明。
实施例一
根据本发明实施例,提供了一种数据同步方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种可选的数据同步方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,采集预设分布式集群***的审计日志,其中,审计日志中每个数据处理语句对应有语句类型,语句类型包括:发生数据变化和未发生数据变化。
步骤S102,提取发生数据变化的数据处理语句所操作的目标表和存储数据分区。
步骤S103,比较目标表和存储数据分区下的各个数据文件的文件更新时间。
步骤S104,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
通过上述步骤,可以采集预设分布式集群***的审计日志,提取发生数据变化的数据处理语句所操作的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。在本发明实施例中,可通过提取出发生数据变化的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,从而能够及时地将存在更新数据的存储数据分区下的数据写入目标数据库,提高了触发数据同步的时效性,并且过程全自动,进而解决了相关技术中当数据发生变化时,无法自动触发数据同步的技术问题。
下面结合上述各步骤对本发明实施例进行详细说明。
步骤S101,采集预设分布式集群***的审计日志,其中,审计日志中每个数据处理语句对应有语句类型,语句类型包括:发生数据变化和未发生数据变化。
在本发明实施例中,可以采集预设分布式集群***(例如,Hadoop集群***)的审计日志,逐行获取数据,其中,该审计日志存在有数据处理语句,每个数据处理语句对应有语句类型,语句类型包括:发生数据变化和未发生数据变化。
可选的,在采集预设分布式集群***的审计日志之后,还包括:按照预设格式对审计日志进行分割,得到每条数据处理语句的语句标识;基于语句标识,采集预设数据仓库中所有数据处理语句的执行日志;截取执行日志中每条数据处理语句的执行内容,其中,执行内容中至少包括:日志完成时间;按照日志完成时间的顺序依次将数据处理语句写入预设排序队列中,其中,预设排序队列用于顺序分析每个数据处理语句的语句类型。
在本发明实施例中,在采集预设分布式集群***的审计日志之后,可以按照预设格式(可根据实际情况设置)对审计日志进行分割,得到每条数据处理语句的语句标识,并基于语句标识,采集预设数据仓库(例如,Hive数据仓库)中所有数据处理语句(例如,SQL语句)的执行日志(例如,Hive日志),之后,截取执行日志中每条数据处理语句的执行内容(该执行内容中至少包括:日志完成时间),然后,按照日志完成时间的顺序依次将数据处理语句写入预设排序队列(例如,Kafka的topic队列,即Kafka队列)中,其中,该预设排序队列用于顺序分析每个数据处理语句的语句类型。
在本发明实施例中,在将数据处理语句写入预设排序队列之后,可以从预设排序队列中获取SQL语句(即数据处理语句),对SQL语句进行筛选,通过对SQL语句的执行状态进行判断,筛选出执行成功的语句,之后,对筛选出的SQL语句进行类型解析,按照与数据变化的相关性,将SQL语句划分为2类:(1)与数据变化无关,即SQL执行后不会导致表数据变化的语句,例如:设置队列、设置使用库use database、赋权、查询语句、单建表等SQL语句;(2)与数据变化有关,即SQL执行后可能会导致表数据发生变化的语句,例如:insert、delete、create select等SQL语句。本实施例中主要针对与数据变化关联的语句进行处理。
步骤S102,提取发生数据变化的数据处理语句所操作的目标表和存储数据分区。
在本发明实施例中,在对数据处理语句分好类之后,对于和数据变化无关的语句,可以无需处理,对于与数据变化有关的SQL语句进一步解析,根据语法结构,提取出***作的目标表的表名以及数据分区(即提取发生数据变化的数据处理语句所操作的目标表和存储数据分区),例如,对于SQL语句:insert into t1 partition(pt_dt='2021-01-01')select xxx from t2,则提取出目标表名t1,存储数据分区2021-01-01。
可选的,在提取发生数据变化的数据处理语句所操作的目标表和存储数据分区之后,还包括:基于目标表的表标识和存储数据分区的区标识,查询待处理的数据修改清单;提取数据修改清单中存在修改标识的数据处理语句的语句执行结束时间。
在本发明实施例中,基于目标表的表标识和存储数据分区的区标识,查询待处理的数据修改清单(即数据同步任务日志表),提取该数据修改清单中存在修改标识的数据处理语句的语句执行结束时间,例如,根据表名t1到“数据同步任务日志表”中进行检查,若t1表不涉及数据同步任务,则无需处理,若找到有相关任务(即存在修改标识的数据处理语句),则将表名、数据分区、SQL语句的执行结束时间,记入到“数据修改记录清单表”。
在本实施例中,图2是根据本发明实施例的一种可选的解析SQL语句的流程图,如图2所示,包括如下步骤:先读取Kafka队列的SQL语句,对SQL语句进行筛选,判断执行状态,对于执行非成功的语句,跳过,不处理,对于执行成功的语句,解析语句类型,按照与数据变化相关性,将SQL语句划分为2类:(1)与数据变化无关,即SQL执行后不会导致表数据变化的语句,如:设置队列、设置使用库use database、赋权、查询语句、单建表的SQL语句;(2)与数据变化有关,即SQL执行后可能会导致表数据发生变化的语句,如:insert、delete、createselect的SQL语句。
对于与数据变化无关的语句,直接跳过,不处理,对于与数据变化有关的SQL语句进一步解析,根据语法结构,提取出***作的目标表的表名以及数据分区(即提取表名和分区)。例如,SQL语句:insert into t1 partition(pt_dt='2021-01-01')select xxx fromt2,则提取出表名t1,数据分区2021-01-01。
根据表名t1到“数据同步任务日志表”中进行检查,判断是否存在数据同步任务,若t1表不存在数据同步任务,则跳过,不处理,若存在,则将表名、数据分区、SQL语句的执行结束时间,记入到“数据修改记录清单表”。
步骤S103,比较目标表和存储数据分区下的各个数据文件的文件更新时间。
可选的,比较目标表和存储数据分区下的各个数据文件的文件更新时间的步骤,包括:获取目标表和存储数据分区下的各个数据文件的文件同步时间;在语句执行结束时间小于等于文件同步时间的情况下,确认存在修改标识的数据处理语句已同步完成;在语句执行结束时间大于文件同步时间的情况下,将语句执行结束时间设置为文件更新时间。
在本发明实施例中,从“数据同步任务日志表”中获取表和分区(例如,t1表pt1分区)的最后一次同步的数据文件时间(即获取目标表和存储数据分区下的各个数据文件的文件同步时间),在语句执行结束时间小于等于文件同步时间的情况下,确认存在修改标识的数据处理语句已同步完成(即将“数据修改记录清单表”的对应记录置为完成),在语句执行结束时间大于文件同步时间的情况下,将语句执行结束时间设置为文件更新时间。
可选的,在比较目标表和存储数据分区下的各个数据文件的文件更新时间之后,还包括:比较文件更新时间与数据同步任务日志表中的最大截至期限,得到期限比较结果;在文件更新时间与数据同步任务日志表中的最大截至期限不相同时,确认文件更新时间触发数据同步指令。
在本发明实施例中,比较文件更新时间与数据同步任务日志表中的最大截至期限,得到期限比较结果,当l文件更新时间等于最大截至期限时,说明数据已经更新为最新数据,无需重复同步,因此将“数据修改记录清单表”的对应记录清单置为完成;当文件更新时间与数据同步任务日志表中的最大截至期限不相同时,确认文件更新时间触发数据同步指令,即数据有更新,需要同步,发送数据同步指令。
在本实施例中,图3是根据本发明实施例的一种可选的同步任务调度的流程图,如图3所示,包括如下步骤:从“数据修改记录清单表”中取相同表及分区的待处理的数据修改记录(例如,t1表pt1分区),对多条记录进行合并,取最大的SQL语句执行结束时间(记为lastSQLExecuteTime),之后,从“数据同步任务日志表”中获取表和分区(如,t1表pt1分区)的最后一次同步的数据文件时间(记为lastRepliaDataTime),然后,将lastSQLExecuteTime和lastRepliaDataTime做比较:
(1)当lastSQLExecuteTime小于等于lastRepliaDataTime,则将“数据修改记录清单表”中的多条记录置为完成;
(2)当lastSQLExecuteTime大于lastRepliaDataTime时,访问集群读取表t1分区下数据文件的最新更新时间(记为lastFileDataTime),将lastFileDataTime和lastRepliaDataTime做比较:当lastFileDataTime=lastRepliaDataTime时,说明数据已经更新为最新数据,无需重复同步,因此,将“数据修改记录清单表”中的多条记录置为完成;当lastFileDataTime<>lastRepliaDataTime时(其中,“<>”表示两者不相同),表名数据有更新,需要同步,因此,发送数据同步请求。
步骤S104,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
可选的,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库的步骤,包括:在文件更新时间触发数据同步指令的情况下,读取数据同步指令中的源集群、源表、源表用户、目标表、目标表用户;采用源表中关于源表用户的第一用户标识访问源集群的目标表下存在更新数据的存储数据分区,以读取分区数据;将目标表下分区字段为存在更新数据的存储数据分区的数据清空;将分区数据写入目标数据库。
在本发明实施例中,在文件更新时间触发数据同步指令的情况下,读取数据同步指令中的源集群、源表、源表用户、目标集群、目标表、目标表用户,采用源表中关于源表用户的第一用户标识访问源集群的目标表下存在更新数据的存储数据分区,以读取分区数据(例如,使用源表用户访问源集群的t1表的pt1分区读取数据),之后,将目标表下分区字段为存在更新数据的存储数据分区的数据清空,将分区数据写入目标数据库(例如,将目标集群的目标表下分区字段=pt1的数据清空,并写入读取到的源集群的数据)。
在本实施例中,可以将数据清空操作和写入操作在一个事务内完成,以保证数据的一致性。
可选的,在将分区数据写入目标数据库之后,还包括:获取分区数据写入目标数据库的结束时间,得到同步结束时间;将数据同步任务日志表中的最大截至期限更新为同步结束时间。
在本发明实施例中,在完成数据同步后,获取分区数据写入目标数据库的结束时间,得到同步结束时间,之后,将集群上同步的数据文件的最新时间更新到“数据同步任务日志表”中的lastRepliaDataTime字段(即将数据同步任务日志表中的最大截至期限更新为同步结束时间)。
本发明实施例中,通过采集大数据SQL执行的审计日志,并解析审计日志中SQL语句,提取出可能发生数据变化的目标表及存储数据分区,比较目标表和存储数据分区下的文件变化时间和最新已同步数据的变化情况,触发数据同步,读取变化分区下的数据并写入到预设数据库,可以达到如下有益效果:
(1)通过基于大数据Hadoop审计日志中的执行SQL来分析数据变化情况,和发起SQL请求的流程进行解耦,对大数据批量加工应用无额外操作。
(2)提供了大数据中自动且快速触发数据同步的监控方式,在SQL执行完成后即可准实时发现数据的变化,时效性高。
(3)在数据同步调度过程中通过多项时间的比较,以及执行SQL的操作合并,可以减少短时间内的数据重复同步。
实施例二
图4是根据本发明实施例的一种可选的基于Hive执行SQL监控数据变化触发数据同步***的示意图,如图4所示,包括:审计日志采集模块、修改表解析模块、同步任务调度模块、数据同步模块、Hive、关系型数据库,其中,
审计日志采集模块可以用于采集Hive中所有SQL语句的执行日志,截取日志中SQL语句,并提供给修改表解析模块。
修改表解析模块可以用于对接收到的SQL进行解析,筛选出和表数据变化相关的语句,再对这些SQL语句中进行SQL解析,提取出目标的表名和分区。
同步任务调度模块可以用于对发生数据变化的表进行检查,确认是否需要进行数据同步,若需要则发送给数据同步模块。
数据同步模块可以用于将变化分区下的数据从Hive读取后写入到关系型数据库。
本发明实施例中,通过一种基于Hive执行SQL监控数据变化触发数据同步***,可以采集大数据SQL执行的审计日志,并解析审计日志中SQL语句,提取出可能发生数据变化的目标表及存储数据分区,比较目标表和存储数据分区下的文件变化时间和最新已同步数据的变化情况,触发数据同步,读取变化分区下的数据并写入到预设数据库。
实施例三
本实施例中提供的一种数据同步装置包含了多个实施单元,每个实施单元对应于上述实施例一中的各个实施步骤。
图5是根据本发明实施例的一种可选的数据同步装置的示意图,如图5所示,该同步装置可以包括:采集单元50,提取单元51,比较单元52,写入单元53,其中,
采集单元50,用于采集预设分布式集群***的审计日志,其中,审计日志中每个数据处理语句对应有语句类型,语句类型包括:发生数据变化和未发生数据变化;
提取单元51,用于提取发生数据变化的数据处理语句所操作的目标表和存储数据分区;
比较单元52,用于比较目标表和存储数据分区下的各个数据文件的文件更新时间;
写入单元53,用于在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
上述同步装置,可以通过采集单元50采集预设分布式集群***的审计日志,通过提取单元51提取发生数据变化的数据处理语句所操作的目标表和存储数据分区,通过比较单元52比较目标表和存储数据分区下的各个数据文件的文件更新时间,通过写入单元53在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。在本发明实施例中,可通过提取出发生数据变化的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,从而能够及时地将存在更新数据的存储数据分区下的数据写入目标数据库,提高了触发数据同步的时效性,并且过程全自动,进而解决了相关技术中当数据发生变化时,无法自动触发数据同步的技术问题。
可选的,同步装置还包括:第一分割模块,用于在采集预设分布式集群***的审计日志之后,按照预设格式对审计日志进行分割,得到每条数据处理语句的语句标识;第一采集模块,用于基于语句标识,采集预设数据仓库中所有数据处理语句的执行日志;第一截取模块,用于截取执行日志中每条数据处理语句的执行内容,其中,执行内容中至少包括:日志完成时间;第一写入模块,用于按照日志完成时间的顺序依次将数据处理语句写入预设排序队列中,其中,预设排序队列用于顺序分析每个数据处理语句的语句类型。
可选的,同步装置还包括:第一查询模块,用于在提取发生数据变化的数据处理语句所操作的目标表和存储数据分区之后,基于目标表的表标识和存储数据分区的区标识,查询待处理的数据修改清单;第一提取模块,用于提取数据修改清单中存在修改标识的数据处理语句的语句执行结束时间。
可选的,比较单元包括:第一获取模块,用于获取目标表和存储数据分区下的各个数据文件的文件同步时间;第一确定模块,用于在语句执行结束时间小于等于文件同步时间的情况下,确认存在修改标识的数据处理语句已同步完成;第一设置模块,用于在语句执行结束时间大于文件同步时间的情况下,将语句执行结束时间设置为文件更新时间。
可选的,同步装置还包括:第一比较模块,用于在比较目标表和存储数据分区下的各个数据文件的文件更新时间之后,比较文件更新时间与数据同步任务日志表中的最大截至期限,得到期限比较结果;第一触发模块,用于在文件更新时间与数据同步任务日志表中的最大截至期限不相同时,确认文件更新时间触发数据同步指令。
可选的,写入单元包括:第一读取模块,用于在文件更新时间触发数据同步指令的情况下,读取数据同步指令中的源集群、源表、源表用户、目标表、目标表用户;第一访问模块,用于采用源表中关于源表用户的第一用户标识访问源集群的目标表下存在更新数据的存储数据分区,以读取分区数据;第一清空模块,用于将目标表下分区字段为存在更新数据的存储数据分区的数据清空;第二写入模块,用于将分区数据写入目标数据库。
可选的,同步装置还包括:第二获取模块,用于在将分区数据写入目标数据库之后,获取分区数据写入目标数据库的结束时间,得到同步结束时间;第一更新模块,用于将数据同步任务日志表中的最大截至期限更新为同步结束时间。
上述的同步装置还可以包括处理器和存储器,上述采集单元50,提取单元51,比较单元52,写入单元53等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:采集预设分布式集群***的审计日志,提取发生数据变化的数据处理语句所操作的目标表和存储数据分区,比较目标表和存储数据分区下的各个数据文件的文件更新时间,在文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述的数据同步方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的数据同步方法。
图6是根据本发明实施例的一种用于数据同步方法的电子设备(或移动设备)的硬件结构框图。如图6所示,电子设备可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
采集预设分布式集群***的审计日志,其中,所述审计日志中每个数据处理语句对应有语句类型,所述语句类型包括:发生数据变化和未发生数据变化;
提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区;
比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间;
在所述文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
2.根据权利要求1所述的方法,其特征在于,在采集预设分布式集群***的审计日志之后,还包括:
按照预设格式对所述审计日志进行分割,得到每条所述数据处理语句的语句标识;
基于所述语句标识,采集预设数据仓库中所有数据处理语句的执行日志;
截取所述执行日志中每条所述数据处理语句的执行内容,其中,所述执行内容中至少包括:日志完成时间;
按照所述日志完成时间的顺序依次将所述数据处理语句写入预设排序队列中,其中,所述预设排序队列用于顺序分析每个所述数据处理语句的语句类型。
3.根据权利要求1所述的方法,其特征在于,在提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区之后,还包括:
基于所述目标表的表标识和所述存储数据分区的区标识,查询待处理的数据修改清单;
提取所述数据修改清单中存在修改标识的数据处理语句的语句执行结束时间。
4.根据权利要求3所述的方法,其特征在于,比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间的步骤,包括:
获取所述目标表和所述存储数据分区下的各个数据文件的文件同步时间;
在所述语句执行结束时间小于等于所述文件同步时间的情况下,确认所述存在修改标识的数据处理语句已同步完成;
在所述语句执行结束时间大于所述文件同步时间的情况下,将所述语句执行结束时间设置为所述文件更新时间。
5.根据权利要求4所述的方法,其特征在于,在比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间之后,还包括:
比较所述文件更新时间与数据同步任务日志表中的最大截至期限,得到期限比较结果;
在所述文件更新时间与数据同步任务日志表中的最大截至期限不相同时,确认所述文件更新时间触发数据同步指令。
6.根据权利要求1所述的方法,其特征在于,在所述文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库的步骤,包括:
在所述文件更新时间触发数据同步指令的情况下,读取数据同步指令中的源集群、源表、源表用户、目标表、目标表用户;
采用所述源表中关于所述源表用户的第一用户标识访问所述源集群的目标表下存在更新数据的存储数据分区,以读取分区数据;
将所述目标表下分区字段为所述存在更新数据的存储数据分区的数据清空;
将所述分区数据写入目标数据库。
7.根据权利要求6所述的方法,其特征在于,在将所述分区数据写入目标数据库之后,还包括:
获取分区数据写入目标数据库的结束时间,得到同步结束时间;
将数据同步任务日志表中的最大截至期限更新为所述同步结束时间。
8.一种数据同步装置,其特征在于,包括:
采集单元,用于采集预设分布式集群***的审计日志,其中,所述审计日志中每个数据处理语句对应有语句类型,所述语句类型包括:发生数据变化和未发生数据变化;
提取单元,用于提取发生数据变化的所述数据处理语句所操作的目标表和存储数据分区;
比较单元,用于比较所述目标表和所述存储数据分区下的各个数据文件的文件更新时间;
写入单元,用于在所述文件更新时间触发数据同步指令的情况下,将存在更新数据的存储数据分区下的数据写入目标数据库。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的数据同步方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210134131.3A CN114490554A (zh) | 2022-02-14 | 2022-02-14 | 数据同步方法及其装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210134131.3A CN114490554A (zh) | 2022-02-14 | 2022-02-14 | 数据同步方法及其装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490554A true CN114490554A (zh) | 2022-05-13 |
Family
ID=81480844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210134131.3A Pending CN114490554A (zh) | 2022-02-14 | 2022-02-14 | 数据同步方法及其装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114490554A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114936212A (zh) * | 2022-07-26 | 2022-08-23 | 北京安华金和科技有限公司 | 一种审计数据同步处理方法和装置 |
CN116991331A (zh) * | 2023-09-25 | 2023-11-03 | 苏州元脑智能科技有限公司 | 日志文件的存储方法及装置、存储介质及电子装置 |
-
2022
- 2022-02-14 CN CN202210134131.3A patent/CN114490554A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114936212A (zh) * | 2022-07-26 | 2022-08-23 | 北京安华金和科技有限公司 | 一种审计数据同步处理方法和装置 |
CN114936212B (zh) * | 2022-07-26 | 2022-09-23 | 北京安华金和科技有限公司 | 一种审计数据同步处理方法和装置 |
CN116991331A (zh) * | 2023-09-25 | 2023-11-03 | 苏州元脑智能科技有限公司 | 日志文件的存储方法及装置、存储介质及电子装置 |
CN116991331B (zh) * | 2023-09-25 | 2024-01-26 | 苏州元脑智能科技有限公司 | 日志文件的存储方法及装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN109460349B (zh) | 一种基于日志的测试用例生成方法和装置 | |
CN109656934B (zh) | 基于日志解析的源端Oracle数据库DDL同步方法及设备 | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
US8234248B2 (en) | Tracking changes to a business object | |
CN109634970B (zh) | 表数据同步方法、设备、存储介质及装置 | |
CN114490554A (zh) | 数据同步方法及其装置、电子设备及存储介质 | |
CN111259004B (zh) | 一种存储引擎中数据索引的方法以及相关装置 | |
CN112434043B (zh) | 一种数据同步方法、装置、电子设备及介质 | |
CN113282555A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111159497A (zh) | 正则表达式的生成方法及基于正则表达式的数据提取方法 | |
CN114936269A (zh) | 文档搜索平台、搜索方法、装置、电子设备及存储介质 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN114116762A (zh) | 一种离线数据模糊搜索方法、装置、设备和介质 | |
CN110188106B (zh) | 一种数据管理方法和装置 | |
CN111176901B (zh) | 一种hdfs删除文件恢复方法、终端设备及存储介质 | |
CN116932649A (zh) | 数据库同步方法、数据库同步设备以及可读存储介质 | |
CN115757174A (zh) | 一种数据库的差异检测方法及装置 | |
CN113868283A (zh) | 数据测试方法、装置、设备及计算机存储介质 | |
CN113778996A (zh) | 一种大数据流数据处理方法、装置、电子设备及存储介质 | |
CN114090673A (zh) | 一种多数据源的数据处理方法、设备及存储介质 | |
CN109840213B (zh) | 一种gui测试的测试数据创建方法、装置、终端及存储介质 | |
CN102346757A (zh) | Ims数据库联机交易中数据影印方法及*** | |
CN112612866A (zh) | 知识库文本同步方法、装置、电子设备及存储介质 | |
CN113553320B (zh) | 数据质量监控方法及装置 |
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 |