CN111680017A - 一种数据同步的方法及装置 - Google Patents
一种数据同步的方法及装置 Download PDFInfo
- Publication number
- CN111680017A CN111680017A CN202010615069.0A CN202010615069A CN111680017A CN 111680017 A CN111680017 A CN 111680017A CN 202010615069 A CN202010615069 A CN 202010615069A CN 111680017 A CN111680017 A CN 111680017A
- Authority
- CN
- China
- Prior art keywords
- event
- synchronization
- file system
- operation event
- 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/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/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/119—Details of migration of 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/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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (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
本发明涉及金融科技(Fintech)领域,并公开了一种数据同步的方法及装置,方法包括:监听针对源数据仓库的元数据的第一操作事件;从第一操作事件中根据预设规则确定出第二操作事件,生成第二操作事件对应的各同步任务;执行各同步任务从而实现源文件***与目的文件***的同步。本发明从源数据的变化原因入手,实现更加精确高效的数据同步。将源数据变化情况准确、及时、有效进行存储和聚合,然后同步至目的文件***,这样就可规避递归遍历数据路径带来的耗时操作,通过监控和侦听源端源数据变化情况,大大降低数据比对开销提高增量同步的性能和效率。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种数据同步的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:分布式架构、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术提出的更高的要求。
在集群数据迁移过程中,一般先将源集群的数据和元数据一次全量同步到目的集群端,让目的集群与源集群数据基本保持一致,然后再将源集群的新增数据按照增量同步的方式定期同步到目的集群让两端集群数据动态保持一致。
全量同步的主要作用是将源和目的集群的数据差异大幅缩小,为增量同步让两端集群保持基本完全一致创造条件。
现有的跨集群数据同步方案,在增量同步过程中通过源集群与目的集群数据路径的比对,间接的判断源集群与目的集群相关元数据的差异,依据差异进行元数据的同步。具体的,增量同步一般按照库级别(或者表级别和分区级别)进行任务配置和数据比对,数据比对使用路径数据进行比对,包括文件大小,目录数及文件数等。在比对的过程中一般有以下几种情况:
(1)源集群与目的集群数据不一致,目的集群数据多于源集群则将目的集群数据多余数据进行删除;
(2)源集群与目的集群数据不一致,目的集群数据少于源集群则将源集群数据相应数据进行复制;
(3)如果两端数据比对完全一致,则比对成功不进行处理。
上述方案,一方面需对库下表中所有数据路径进行遍历比对,效率较低;另一方面数据路径的比对,作为间接判断目的集群与源集群元数据差异的依据,存在较大误判概率,增加目的集群重复同步数据和元数据的开销。
发明内容
本申请提供了一种数据同步的方法及装置,用以解决如何准确高效的进行数据同步的问题。
第一方面,本申请实施例提供一种数据同步的方法,适用于具有数据仓库的分布式文件***;所述方法包括:
监听针对源数据仓库的元数据的第一操作事件;
从所述第一操作事件中根据预设规则确定出第二操作事件,所述第二操作事件是指与源文件***中存储的源数据的有变化关联的操作事件;
生成所述第二操作事件对应的各同步任务;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步。
上述方案,不同于现有技术将数据路径的比对作为间接判断目的文件***与源文件***元数据差异的依据,而是通过直接监听对源数据仓库的元数据的第一操作事件,即从源数据的变化原因入手,实现更加精确高效的数据同步。将源数据变化情况准确、及时、有效进行存储和聚合,然后同步至目的文件***,这样就可规避递归遍历数据路径带来的耗时操作,通过监控和侦听源端源数据变化情况,大大降低数据比对开销提高增量同步的性能和效率。
可选的,每个同步任务对应一个操作事件;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步,包括:
若所述同步任务是针对源数据仓库的元数据的,则通过执行所述同步任务将源数据仓库的元数据同步至目的数据仓库;
若所述同步任务是针对源数据的,则执行所述同步任务后,从所述源文件***中获取所述同步任务对应的源数据并发送至目的文件***。
上述方案,根据同步任务是针对源数据仓库的元数据还是针对源数据产生不同的方式,针对元数据直接执行同步任务同步目的数据仓库的元数据,针对源数据执行同步任务后,从源文件***中获取同步任务对应的源数据并发送至目的文件***,从而提高了数据同步的效率。
可选的,生成所述第二操作事件对应的各同步任务,包括:
从所述第二操作事件中确定针对同一操作对象的第三操作事件;
针对每个操作对象,根据所述操作对象的第三操作事件中的操作时间、操作类型进行处理,得到所述操作对象的第四操作事件;
生成各操作对象的第四操作事件对应的各同步任务。
上述方案,根据操作对象的操作时间、操作类型进行处理实现操作事件的归类以及合并,从而减少执行同步任务的数量及规避数据流转过程中出现的事件丢失风险和隐患。
可选的,根据所述操作对象的第三操作事件中的操作时间、操作类型进行处理,得到所述操作对象的第四操作事件,包括:
针对删除类型的操作事件,将操作时间位于删除类型的操作事件之前的第三操作事件删除;或
针对新建或修改类型的操作事件,通过参数聚合合并各第三操作事件;或
针对***类型的操作事件,若***属性为覆盖写入,则删除操作时间位于最晚的***事件之前的第三操作时间;若***属性为非覆盖写入,则合并各第三操作事件。
上述方案,通过去除无效操作事件(如删除类型)、按照参数合并操作事件(如新建或修改类型)及按照是否覆盖写入合并操作事件(如***类型)来减少同步任务数量,进而减少元数据和数据的操作频度。从而最大程度地减少执行同步任务的数量及规避数据流转过程中出现的事件丢失风险和隐患。
可选的,从所述第一操作事件中确定出第二操作事件,包括:
从所述第一操作事件中确定出包含设定的元数据操作原语的第二操作事件,所述设定的元数据操作原语至少包括以下一项:
新建分区、修改分区、删除分区、新建表、修改表、删除表以及***数据。
上述方案,通过元数据操作原语将操作事件规范化,使得后续同步任务更加高效。
可选的,监听针对源数据仓库的元数据的第一操作事件,包括:
从监听的针对源数据仓库的元数据的操作事件进行批量化,从而得到每个批次的第一操作事件。
上述方案,将操作事件进行划分为批次,调高了数据同步的效率。
可选的,执行所述各同步任务从而实现所述源文件***与目的文件***的同步之后,还包括:
通过路径比对的方式确定所述源文件***与所述目的文件***是否完成同步。
上述方案,在数据同步后再通过路径比对的方式检验,提高了同步的准确率。
第二方面,本申请实施例提供一种数据同步的装置,所述装置包括:
监听模块,用于监听针对源数据仓库的元数据的第一操作事件;
处理模块,用于从所述第一操作事件中根据预设规则确定出第二操作事件,所述第二操作事件是指与源文件***中存储的源数据有变化关联的操作事件;
生成所述第二操作事件对应的各同步任务;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步。
可选的,每个同步任务对应一个操作事件;
所述处理模块具体包括:
若所述同步任务是针对源数据仓库的元数据的,则通过执行所述同步任务将源数据仓库的元数据同步至目的数据仓库;
若所述同步任务是针对源数据的,则执行所述同步任务后,从所述源文件***中获取所述同步任务对应的源数据并发送至目的文件***。
可选的,所述处理模块具体包括:
从所述第二操作事件中确定针对同一操作对象的第三操作事件;
针对每个操作对象,根据所述操作对象的第三操作事件中的操作时间、操作类型进行处理,得到所述操作对象的第四操作事件;
生成各操作对象的第四操作事件对应的各同步任务。
可选的,所述处理模块具体包括:
针对删除类型的操作事件,将操作时间位于删除类型的操作事件之前的第三操作事件删除;或
针对新建或修改类型的操作事件,通过参数聚合合并各第三操作事件;或
针对***类型的操作事件,若***属性为覆盖写入,则删除操作时间位于最晚的***事件之前的第三操作时间;若***属性为非覆盖写入,则合并各第三操作事件。
可选的,所述处理模块具体包括:
从所述第一操作事件中确定出包含设定的元数据操作原语的第二操作事件,所述设定的元数据操作原语至少包括以下一项:
新建分区、修改分区、删除分区、新建表、修改表、删除表以及***数据。
可选的,所述监听模块具体包括:
从监听的针对源数据仓库的元数据的操作事件进行批量化,从而得到每个批次的第一操作事件。
可选的,在所述执行所述各同步任务从而实现所述源文件***与目的文件***的同步之后,所述处理模块还包括:
通过路径比对的方式确定所述源文件***与所述目的文件***是否完成同步。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述数据同步的方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述数据同步的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据同步的示意图;
图2为本发明实施例提供的一种数据同步的方法的***框架;
图3为本发明实施例提供的一种数据同步的方法的流程示意图;
图4为本发明实施例提供的一种数据同步的方法的流程示意图;
图5为本发明实施例提供的一种数据同步的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
首先,对本申请中的部分用语进行解释说明,以便使本领域技术人员理解。
Transport:一套基于MapReduce计算框架的准确、稳定、高效的数据同步工具,支持离线数据平台TB、PB级的数据同步。
HMS(Hive Metastore):HMS为客户端访问Hive的表和分区等所有元数据(Metadata)提供服务。
事件侦听(Event Listener):HMS提供了一种基于事件订阅的通知机制,用于订阅并处理事件通知消息,这种机制称为Event Listener。
全量同步:按照一定周期将历史数据进行复制,目的集群与源集群存量数据保持一致。
增量同步:参照某个更新时间或检查点(Checkpoint)对其之后新增数据进行复制,目的集群与源集群新增数据保持一致。
在介绍本发明实施例之前,阐述现有技术以及基本原理如下,以使更好的理解本发明。
需要说明的是,本发明主要基于Hadoop分布式文件***(HDFS)。
HDFS被设计成适合运行在通用硬件(commodity hardware)上的分布式文件***。它和现有的分布式文件***有很多共同点。但同时,它和其他的分布式文件***的区别也是很明显的。HDFS是一个高度容错性的***,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS实现了流式读取文件***数据的目的。
由于对存在HDFS上的文件进行查询时,需要手工写一堆代码,为了解决这个问题,Hive由此产生,Hive基于一个统一的查询分析层,通过SQL语句的方式对HDFS上的数据进行查询、统计和分析。
进一步的,如图1所示,可以很清楚地看出Hive和Hadoop(MapReduce,HDFS)的关系。
具体的,Hive是最上层,即客户端层或者作业提交层。MapReduce是中间层,也就是计算层。HDFS是底层,也就是存储层。Hive将元数据存储在数据库中。Hive中的元数据包括表的名字,表的分区及其属性,表的数据所在目录等。
Hive在用户发出sql消息时,将其处理转换成MapReduce,然后将任务提交到Hadoop,而后将元数据记录到数据库中。
基于此,现有技术基于HDFS数据比对的数据同步方案,在增量同步过程中通过源文件***与目的文件***Hive表对应HDFS数据路径的比对,间接的判断源文件***与目的文件***Hive表相关元数据的差异,依据差异进行元数据的同步。
进一步的,在数据迁移过程中,一般先将源文件***的源数据(HDFS数据)和元数据一次全量同步到目的文件***,让目的文件***与源文件***基本保持一致,然后再将源文件***的新增数据按照增量同步的方式定期同步到目的文件***让两端数据动态保持一致。
全量同步的主要作用是将源和目的文件***的数据差异大幅缩小,为增量同步让两端保持基本完全一致创造条件。增量同步一般按照库级别(或者表级别和分区级别)进行任务配置和数据比对,数据比对使用Hive表对应HDFS路径数据进行,包括文件大小,目录数及文件数等。
然而现有技术一方面增量同步任务配置的库级别任务每次启动运行,需对库下表中所有HDFS数据路径进行遍历比对,效率较低;另一方面,HDFS数据路径的比对,作为间接判断目的文件***与源文件***Hive表元数据差异的依据,存在较大误判概率,增加目的文件***重复同步数据和元数据的开销。
基于此,本发明实施例提供一种数据同步的方法,本发明实施例提供的数据同步的方法,可以适用于如图2所示的***架构中,该***架构包括源文件***100,目的文件***200,同步服务器300。
其中,同步服务器300用于监听针对源数据仓库的元数据的第一操作事件。
从第一操作事件中确定出第二操作事件并生成第二操作事件对应的各同步任务,执行各同步任务从而实现源文件***100与目的文件***200的同步。
需要说明的是,图2仅是本申请实施例***架构的一种示例,本申请对此不做具体限定。实际上,同步服务器300可以是源文件***100的一部分,通过源文件***100自身设置的各种功能来实现。
基于上述所示意的***架构,图3为本发明实施例提供的一种数据同步的方法所对应的流程示意图,如图3所示,该方法包括:
步骤301,监听针对源数据仓库的元数据的第一操作事件。
步骤302,从第一操作事件中根据预设规则确定出第二操作事件。
需要说明的是,第二操作事件是指与源文件***中存储的源数据有变化关联的操作事件。
步骤303,生成第二操作事件对应的各同步任务。
步骤304,执行各同步任务从而实现源文件***与目的文件***的同步。
上述方案,不同于现有技术将数据路径的比对作为间接判断目的文件***与源文件***元数据差异的依据,而是通过直接监听对源数据仓库的元数据的第一操作事件,即从源数据的变化原因入手,实现更加精确高效的数据同步。将源数据变化情况准确、及时、有效进行存储和聚合,然后同步至目的文件***,这样就可规避递归遍历数据路径带来的耗时操作,通过监控和侦听源端源数据变化情况,大大降低数据比对开销提高增量同步的性能和效率。
具体的,在步骤201中,从监听的针对源数据仓库的元数据的操作事件进行批量化,从而得到每个批次的第一操作事件。
需要说明的是,每个批次的第一操作事件对应一个批次号。
在一种可能的实施方式中,通过时间划分实现操作事件的批量化,比如将每5分钟的多个操作事件形成一个批次。
本申请实施例在步骤301中,举例来说,首先通过开启预设规则,以确定第二操作事件,预设规则可选为HMS配置hive.metastore.event.listeners参数,即,通过该HMS配置hive.metastore.event.listeners参数监听HMS元数据操作事件。
需要说明的是,操作事件包括常用的创建表create table,清空表drop table,创建数据库create database,清空数据库drop database等操作。
进一步的,基于HMS操作事件监听能够监控和侦听源端HMS元数据变化情况,大大降低数据比对开销提高增量同步的性能和效率。然而由于HMS是数据仓库元数据的载体,大数据平台日常运行产生大量的HMS操作,统计达百万至千万级;因此,会产生如下缺陷:
一方面,对规模巨大的操作事件进行回放会产生大量的同步任务;另一方面,大量的HMS操作事件往往存在冗余、无效的操作事件,同时大量HMS操作事件在数据流转过程中存在丢失风险,这种风险较为隐蔽也不易发现和监控,对日常生产造成较大隐患。
基于此,通过步骤302从第一操作事件中确定出第二操作事件,即对第一操作事件进行预处理克服上述缺陷。
具体的,从第一操作事件中确定出包含设定的元数据操作原语的第二操作事件,设定的元数据操作原语至少包括以下一项:
新建分区、修改分区、删除分区、新建表、修改表、删除表以及***数据。
举例来说,在事件回放模块(Event PlayBack)中定义7个元数据操作原语,这些元数据操作原语与真实的HMS操作事件一一对应。如表一所示为定义的7个基本元数据操作原语。
可以看出,7个元数据操作原语分别为ADD_PARTITION、ALTER_PARTITION、DROP_PARTITION、CREATE_TABLE、INSERT、DROP_TABLE、ALTER_TABLE。
需要说明的是,INSERT***数据时,在表中或分区中***均可。
表一
需要说明的是,上述7个元数据操作原语仅是一种示例,本实施例对此不做具体限定。
进一步的,在步骤303中,步骤流程如图4所示,具体如下:
步骤401,从第二操作事件中确定针对同一操作对象的第三操作事件。
步骤402,针对每个操作对象,根据操作对象的第三操作事件中的操作时间、操作类型进行处理,得到操作对象的第四操作事件。
步骤403,生成各操作对象的第四操作事件对应的各同步任务。
具体的,对操作事件按照<表名,分区名,操作事件列表>进行归并和排序预处理,其中表名和分区名作为键值索引,操作事件列表内部根据时间信息进行排序保持有序。
需要说明的是,在步骤401中,针对同一操作对象可以为同一个表或同一个分区,本申请对此不做具体限定。
具体的,在步骤402中,针对删除类型的操作事件,将操作时间位于删除类型的操作事件之前的第三操作事件删除。
举例来说,针对删除类型的操作事件一般分为如下两种情况:
1、分区表:对于删除类型即DROP类型的事件按照表名索引和分区名索引进行查找,如果查找到相同事件比如两个相同的DROP_PARTITION A,则进行事件合并,也就是将这两个DROP_PARTITION A中的一个删去,只保留一个DROP_PARTITION A。
进一步的,如果未找到相同事件,则将具有与该事件相同的表名和分区名的且位置顺序在该DROP事件之前的所有事件进行删除,然后写入该DROP事件。举例来说,操作事件流依次为ALTER_PARTITION A,CREATE_PARTITION B,DROP_PARTITION A,当监听到DROP_PARTITION A可以查询到在DROP_PARTITION A操作事件之前具有相同分区名的ALTER_PARTITION A,则将ALTER_PARTITION A删去。
2、非分区表:对于DROP类型的事件按照表名索引进行查找,如果查找到相同事件则进行事件合并,如果查找到相同事件比如三个相同的DROP_TABLE C,则进行事件合并,也就是将这三个DROP_TABLE C中的两个删去,只保留一个DROP_TABLE C。
如果未找到相同事件,则将具有与该事件相同的表名的且位置顺序在该DROP事件之前的所有事件进行删除,然后写入该DROP事件;举例来说,操作事件流依次为ALTER_TABLE C,CREATE_TABLE D,DROP_TABLE C,当监听到DROP_TABLE C可以查询到在DROP_TABLE C操作事件之前具有相同表名的ALTER_TABLE C,则将ALTER_TABLE C删去。
具体的,针对新建或修改类型的操作事件,通过参数聚合合并各第三操作事件。
举例来说,对于CREATE和ALTER类型的事件按照表名和分区名对相同类型的事件通过参数聚合来进行事件合并。
需要说明的是,表的类型包括分区表和非分区表类型。
具体的,在参数聚合的模块中实现HiveMetastoreEventFactory类将各种CREATE和ALTER操作的参数进行去重合并,最终形成几个大的操作事件。
比如,操作事件流依次为第一个ALTER_TABLE A实现参数a修改为b,第二个ALTER_TABLE A实现参数b修改为c,第三个ALTER_TABLE A实现参数c修改为d,第四个ALTER_TABLEA实现参数c修改为d,首先第三个ALTER_TABLE A与第四个ALTER_TABLE A重复,删去其中一个,而后合并参数,最终形成操作事件ALTER_TABLE A实现参数a修改为d。
进一步的,针对***类型的操作事件,若***属性为覆盖写入,则删除操作时间位于最晚的***事件之前的第三操作时间;若***属性为非覆盖写入,则合并各第三操作事件。
举例来说,对于INSERT类型事件按照表名和分区名进行事件合并。INSERT类型分为分区表和非分区表,以及分为覆盖写入和非覆盖写入。
具体的,对于覆盖写入将INSERT操作事件按照表名和分区名进行合并,比如,操作事件流依次为第一个INSERT_TABLE A实现***参数a,第二个INSERT_TABLE A实现***参数b,第三个INSERT_TABLE A实现***参数c,最终合并参数,形成操作事件INSERT_TABLE A实现***参数c。
进一步的,对于非覆盖写入,则去重和记录INSERT所有的表名或分区名;最终形成几个大的操作事件。
举例来说,操作事件流依次为第一个INSERT_TABLE E实现***参数e,第二个INSERT_TABLE E实现***参数f,第三个INSERT_TABLE F实现***参数g,最终合并参数,形成操作事件INSERT_TABLE E实现***参数e以及f,操作事件INSERT_TABLE F实现***参数g。
上述方案,通过去除无效操作事件(如删除类型)、按照参数合并操作事件(如新建或修改类型)及按照是否覆盖写入合并操作事件(如***类型)来减少同步任务数量,进而减少元数据和数据的操作频度。从而最大程度地减少执行同步任务的数量及规避数据流转过程中出现的事件丢失风险和隐患。
进一步的,在上述过程完成后形成优化后的元数据操作原语序列,而后对于元数据操作序列原语序列中每个操作事件生成对应待同步任务。
进一步的,本申请实施例在步骤204中,每个同步任务对应一个操作事件;
具体的,若同步任务是针对源数据仓库的元数据的,则通过执行同步任务将源数据仓库的元数据同步至目的数据仓库;
若同步任务是针对源数据的,则执行同步任务后,从源文件***中获取同步任务对应的源数据并发送至目的文件***。
依据上述内容举例来说,对于drop类型的操作事件,操作事件为DROP_TABLE C,由于其针对源数据仓库的元数据,故直接在目的文件***执行DROP_TABLE C即可。
再比如对于insert类型的操作事件,操作事件为INSERT_TABLE B,则在源文件***中获取表B,而后发送到目的文件***存储。
上述方案,根据同步任务是针对源数据仓库的元数据还是针对源数据产生不同的方式,针对元数据直接执行同步任务同步目的数据仓库的元数据,从而提高了数据同步的效率。
本申请实施例中,元数据操作原语序列作为启动作业配置和同步任务的输入参数。在一种可能的实施方式中,通过每个同步任务输入参数构造SyncConf结构体,然后生成一个同步批次号并将批次号和SyncConf结构体提交给GenerateTasks()函数自动生成同步任务,最后对生成的同步任务通过Transport调度模块的调度器TaskExecute CrontabJob进行周期执行。
本申请实施例中,在步骤204之后,通过路径比对的方式确定源文件***与目的文件***是否完成同步。
上述方案,为了更好了保证数据同步的准确性,在同步任务执行完成后再通过路径比对的方式检验,降低了数据同步过程中产生错误的风险。
基于同一发明构思,图5示例性的示出了本发明实施例提供的一种数据同步的装置,该装置可以为一种数据同步的方法的流程。
所述装置,包括:
监听模块501,用于监听针对源数据仓库的元数据的第一操作事件;
处理模块502,用于从所述第一操作事件中根据预设规则确定出第二操作事件,所述第二操作事件是指与源文件***中存储的源数据有变化关联的操作事件;
生成所述第二操作事件对应的各同步任务;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步。
可选的,每个同步任务对应一个操作事件;
所述处理模块502具体用于:
若所述同步任务是针对源数据仓库的元数据的,则通过执行所述同步任务将源数据仓库的元数据同步至目的数据仓库;
若所述同步任务是针对源数据的,则执行所述同步任务后,从所述源文件***中获取所述同步任务对应的源数据并发送至目的文件***。
可选的,所述处理模块502具体用于:
从所述第二操作事件中确定针对同一操作对象的第三操作事件;
针对每个操作对象,根据所述操作对象的第三操作事件中的操作时间、操作类型进行处理,得到所述操作对象的第四操作事件;
生成各操作对象的第四操作事件对应的各同步任务。
可选的,所述处理模块502具体用于:
针对删除类型的操作事件,将操作时间位于删除类型的操作事件之前的第三操作事件删除;或
针对新建或修改类型的操作事件,通过参数聚合合并各第三操作事件;或
针对***类型的操作事件,若***属性为覆盖写入,则删除操作时间位于最晚的***事件之前的第三操作时间;若***属性为非覆盖写入,则合并各第三操作事件。
可选的,所述处理模块502具体用于:
从所述第一操作事件中确定出包含设定的元数据操作原语的第二操作事件,所述设定的元数据操作原语至少包括以下一项:
新建分区、修改分区、删除分区、新建表、修改表、删除表以及***数据。
可选的,所述监听模块501具体用于:
从监听的针对源数据仓库的元数据的操作事件进行批量化,从而得到每个批次的第一操作事件。
可选的,在所述执行所述各同步任务从而实现所述源文件***与目的文件***的同步之后,所述处理模块502还用于:
通过路径比对的方式确定所述源文件***与所述目的文件***是否完成同步。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据同步的方法,其特征在于,适用于具有数据仓库的分布式文件***;所述方法包括:
监听针对源数据仓库的元数据的第一操作事件;
从所述第一操作事件中根据预设规则确定出第二操作事件,所述第二操作事件是指与源文件***中存储的源数据有变化关联的操作事件;
生成所述第二操作事件对应的各同步任务;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步。
2.如权利要求1所述的方法,其特征在于,每个同步任务对应一个操作事件;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步,包括:
若所述同步任务是针对源数据仓库的元数据的,则通过执行所述同步任务将源数据仓库的元数据同步至目的数据仓库;
若所述同步任务是针对源数据的,则执行所述同步任务后,从所述源文件***中获取所述同步任务对应的源数据并发送至目的文件***。
3.如权利要求1所述的方法,其特征在于,生成所述第二操作事件对应的各同步任务,包括:
从所述第二操作事件中确定针对同一操作对象的第三操作事件;
针对每个操作对象,根据所述操作对象的第三操作事件中的操作时间、操作类型进行处理,得到所述操作对象的第四操作事件;
生成各操作对象的第四操作事件对应的各同步任务。
4.如权利要求3所述的方法,其特征在于,根据所述操作对象的第三操作事件中的操作时间、操作类型进行处理,得到所述操作对象的第四操作事件,包括:
针对删除类型的操作事件,将操作时间位于删除类型的操作事件之前的第三操作事件删除;或
针对新建或修改类型的操作事件,通过参数聚合合并各第三操作事件;或
针对***类型的操作事件,若***属性为覆盖写入,则删除操作时间位于最晚的***事件之前的第三操作时间;若***属性为非覆盖写入,则合并各第三操作事件。
5.如权利要求1至4任一项所述的方法,其特征在于,从所述第一操作事件中确定出第二操作事件,包括:
从所述第一操作事件中确定出包含设定的元数据操作原语的第二操作事件,所述设定的元数据操作原语至少包括以下一项:
新建分区、修改分区、删除分区、新建表、修改表、删除表以及***数据。
6.如权利要求1所述的方法,其特征在于,
监听针对源数据仓库的元数据的第一操作事件,包括:
从监听的针对源数据仓库的元数据的操作事件进行批量化,从而得到每个批次的第一操作事件。
7.如权利要求1所述的方法,其特征在于,执行所述各同步任务从而实现所述源文件***与目的文件***的同步之后,还包括:
通过路径比对的方式确定所述源文件***与所述目的文件***是否完成同步。
8.一种数据同步的装置,其特征在于,包括:
监听模块,用于监听针对源数据仓库的元数据的第一操作事件;
处理模块,用于从所述第一操作事件中确定出第二操作事件,所述第二操作事件是指与源文件***中存储的源数据的变化关联的操作事件;
生成所述第二操作事件对应的各同步任务;
执行所述各同步任务从而实现所述源文件***与目的文件***的同步。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010615069.0A CN111680017A (zh) | 2020-06-30 | 2020-06-30 | 一种数据同步的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010615069.0A CN111680017A (zh) | 2020-06-30 | 2020-06-30 | 一种数据同步的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111680017A true CN111680017A (zh) | 2020-09-18 |
Family
ID=72437457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010615069.0A Pending CN111680017A (zh) | 2020-06-30 | 2020-06-30 | 一种数据同步的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680017A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506870A (zh) * | 2020-12-18 | 2021-03-16 | 上海哔哩哔哩科技有限公司 | 数据仓库增量更新方法、装置及计算机设备 |
CN112948486A (zh) * | 2021-02-04 | 2021-06-11 | 北京淇瑀信息科技有限公司 | 批量数据同步方法、***及电子设备 |
CN113407634A (zh) * | 2021-07-05 | 2021-09-17 | 挂号网(杭州)科技有限公司 | 一种数据同步方法、装置、***、服务器和存储介质 |
CN115328997A (zh) * | 2022-07-15 | 2022-11-11 | 深圳市数帝网络科技有限公司 | 数据同步方法、***、设备及存储介质 |
-
2020
- 2020-06-30 CN CN202010615069.0A patent/CN111680017A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506870A (zh) * | 2020-12-18 | 2021-03-16 | 上海哔哩哔哩科技有限公司 | 数据仓库增量更新方法、装置及计算机设备 |
CN112948486A (zh) * | 2021-02-04 | 2021-06-11 | 北京淇瑀信息科技有限公司 | 批量数据同步方法、***及电子设备 |
CN113407634A (zh) * | 2021-07-05 | 2021-09-17 | 挂号网(杭州)科技有限公司 | 一种数据同步方法、装置、***、服务器和存储介质 |
CN115328997A (zh) * | 2022-07-15 | 2022-11-11 | 深圳市数帝网络科技有限公司 | 数据同步方法、***、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669510B2 (en) | Parallel processing of disjoint change streams into a single stream | |
EP3602341B1 (en) | Data replication system | |
Sumbaly et al. | The big data ecosystem at linkedin | |
Carbone et al. | Apache flink: Stream and batch processing in a single engine | |
CN111680017A (zh) | 一种数据同步的方法及装置 | |
CN108694195B (zh) | 一种分布式数据仓库的管理方法及*** | |
US20130166502A1 (en) | Segmented storage for database clustering | |
TW201530328A (zh) | 爲半結構化資料構建NoSQL資料庫索引的方法及裝置 | |
US11934306B2 (en) | Object storage change-events | |
CN112286941B (zh) | 一种基于Binlog+HBase+Hive的大数据同步方法和装置 | |
CN111930768B (zh) | 增量数据获取方法、发送方法、装置及其计算机存储介质 | |
CN114329096A (zh) | 一种原生图数据库处理方法及*** | |
US9405828B2 (en) | System and method for phonetic searching of data | |
CN110019169B (zh) | 一种数据处理的方法及装置 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN113590651B (zh) | 一种基于hql的跨集群数据处理***及方法 | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set | |
CN109739883B (zh) | 提升数据查询性能的方法、装置和电子设备 | |
Cao | Big Data Database for Business | |
US20240070180A1 (en) | Mutation-Responsive Documentation Regeneration Based on Knowledge Base | |
US11914655B2 (en) | Mutation-responsive documentation generation based on knowledge base | |
US11803511B2 (en) | Methods and systems for ordering operations on a file system having a hierarchical namespace | |
CN116028465A (zh) | 一种数据迁移方法、装置和存储介质 | |
Cugnasco et al. | The OTree: Multidimensional indexing with efficient data sampling for HPC | |
CN114416886A (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 |