CN113535856B - 数据同步方法及系统 - Google Patents
数据同步方法及系统 Download PDFInfo
- Publication number
- CN113535856B CN113535856B CN202110863314.4A CN202110863314A CN113535856B CN 113535856 B CN113535856 B CN 113535856B CN 202110863314 A CN202110863314 A CN 202110863314A CN 113535856 B CN113535856 B CN 113535856B
- Authority
- CN
- China
- Prior art keywords
- data
- incremental
- full
- ordered
- synchronization method
- 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.)
- Active
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/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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据同步方法,该方法包括:从数据源中采集全量数据和增量数据;为采集的每一条数据分配有序且唯一的编号;对所述数据按照所述编号进行全局有序排列和去重处理;将处理后的数据按顺序写入数据湖表中。本申请还公开了一种数据同步系统、电子装置和计算机可读存储介质。由此,能够对全量数据和增量数据进行一体化打通,并实现分钟级数据同步和一键增量化入仓,还保证了所述全量数据和所述增量数据的有序性和唯一性,保障了数据传输质量。
Description
技术领域
本申请涉及数据传输与处理技术领域,尤其涉及一种数据同步方法、系统、电子装置及计算机可读存储介质。
背景技术
目前对于从数据源到数据湖表的数据同步过程,一般只能将全量数据的同步和增量数据的同步分开进行。例如按天拉取全量数据,每小时拉取增量数据,并对所述全量数据和所述增量数据进行在线合并。该方案只能实现小时级数据同步,处理时效性低,并且用户体验不透明。
需要说明的是,上述内容并不用于限制申请保护范围。
发明内容
本申请的主要目的在于提出一种数据同步方法、系统、电子装置及计算机可读存储介质,旨在解决如何打通全量数据和增量数据的同步,以及提高处理时效性和透明性的问题。
为实现上述目的,本申请实施例提供了一种数据同步方法,所述方法包括:
从数据源中采集全量数据和增量数据;
为采集的每一条数据分配有序且唯一的编号;
对所述数据按照所述编号进行全局有序排列和去重处理;及
将处理后的数据按顺序写入数据湖表中。
可选地,所述方法还包括:
根据从所述数据源中采集的至少部分数据与所述数据湖表中对应的至少部分数据,检验数据传输质量。
可选地,所述从数据源中采集全量数据和增量数据包括:
通过快照技术按天采集所述全量数据,通过读取增量日志分钟级采集所述增量数据。
可选地,所述从数据源中采集全量数据和增量数据包括:
针对第一预设类型数据源,基于Flink CDC,通过全量快照技术拉取得到所述全量数据,通过读取Binlog日志得到所述增量数据。
可选地,所述从数据源中采集全量数据和增量数据还包括:
针对第二预设类型数据源,通过代理采集从节点的Dump文件得到所述全量数据,通过读取Binlog日志得到所述增量数据。
可选地,所述为采集的每一条数据分配有序且唯一的编号包括:
记录当前的系统生成时间,作为一个时间戳;
生成一个单调递增编号;
将所述时间戳加上所述单调递增编号作为所述有序且唯一的编号分配给当前数据。
可选地,所述方法在所述为采集的每一条数据分配有序且唯一的编号和所述对所述数据按照所述编号进行全局有序排列和去重处理之间还包括:
将带有编号的所述数据推送到Kafka消息队列中;
从所述Kafka消息队列中消费当前数据。
此外,为实现上述目的,本申请实施例还提供一种数据同步系统,所述系统包括:
采集模块,用于从数据源中采集全量数据和增量数据;
分配模块,用于为采集的每一条数据分配有序且唯一的编号;
处理模块,用于对所述数据按照所述编号进行全局有序排列和去重处理;
写入模块,用于将处理后的数据按顺序写入数据湖表中。
为实现上述目的,本申请实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据同步程序,所述数据同步程序被所述处理器执行时实现如上述的数据同步方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据同步程序,所述数据同步程序被处理器执行时实现如上述的数据同步方法。
本申请实施例提出的数据同步方法、系统、电子装置及计算机可读存储介质,能够对全量数据和增量数据进行一体化打通,并实现分钟级数据同步和一键增量化入仓。通过向每条数据分配有序且唯一的编号,保证了所述全量数据和所述增量数据的有序性和唯一性,保障了数据传输质量。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种数据同步方法的流程图;
图3为图2中步骤S202的细化流程示意图;
图4为本申请第二实施例提出的一种数据同步方法的流程图;
图5为本申请中一种具体应用实例的示意图;
图6为本申请第三实施例提出的一种电子装置的硬件架构示意图;
图7为本申请第四实施例提出的一种数据同步系统的模块示意图;
图8为本申请第五实施例提出的一种数据同步系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
为了方便理解,以下提供了一些术语解释:
ETL,是一种数据仓库技术,是抽取(Extract)、转换(Transform)、加载(Load)的缩写。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是商业智能(Business Intelligence,BI)项目重要的一个环节。
Flink集群(Flink Cluster),是一个分布式系统,用于对无界和有界数据流进行有状态计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
CDC(Change Data Capture),是Oracle在数据库级别实现的增量抽取解决方案。它是一个比较广义的概念,只要能捕获变更的数据,都可以称为CDC。业界主要有基于查询的CDC和基于日志的CDC。
Kafka,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,也可以作为消息队列系统。Kafka可以用于Web/Nginx日志、访问日志,消息服务等。Kafka是按秒进行任务的计算和应用,用于实时推荐、实时计算等场景中。
Sink,在无线传感器网络指汇聚结点,主要负责传感器网与外网(例如GPRS、Internet等)的连接,可看作网关节点。
MySQL,是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
TiDB,是一种开源分布式关系型数据库,同时支持在线事务处理与在线分析处理(Hybrid Transactional and Analytical Processing,HTAP),具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容MySQL 5.7协议和MySQL生态等重要特性。目标是为用户提供一站式联机事务处处理(Online Transactional Processing,OLTP)、联机分析处理(Online Analytical Processing,OLAP)、HTAP解决方案。TiDB适合高可用、强一致要求较高、数据规模较大等各种应用场景。
HUDI(Hadoop Updates and Incrementals,Hadoop更新与增量),采用并管理通过DFS(HDFS或云存储)存储大型分析数据集,支持在当前数据表中进行更新操作。HUDI将表组织成HDFS上某个指定目录(basepath)下的目录结构,表被分成多个分区,分区是以目录的形式存在,每个目录下面会存在属于该分区的多个文件,类似Hive表,每个HUDI表分区通过一个分区路径(Partition Path)来唯一标识。
Snapshot,也就是快照技术或磁盘快照。Snapshot是针对整个磁盘卷册进行快速的档案系统备份,与其它备份方式最主要的不同点在于速度。进行磁盘快照时,并不牵涉到任何档案复制动作。就算数据量再大,一般来说,通常可以在一秒之内完成备份动作。
Binlog日志,是记录所有数据库表结构变更(如CREATE、ALTER TABLE)及表数据修改(INSERT、UPDATE、DELETE)的二进制日志。Binlog日志的格式为JSON。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于数据源平台2、数据同步服务平台4、下游服务平台6的应用环境中。
其中,所述数据源平台2用于提供数据源。所述数据源平台2可以包括内部数据源,也可以是连接外部数据源的数据接口。所述数据源平台2中可以有多种格式的数据,例如,APP和Web的上报数据是HTTP(HyperText Transfer Protocol,超文本传输协议)格式的数据,服务端的内部通信数据是RPC(Remote Procedure Call,远程过程调用)格式的数据。所述数据源平台2的数据可以是通过一个或多个边缘节点接收的移动终端上报的日志数据等,也可以是数据库(例如MySQL、TiDB)、日志代理(Log Agent)等各个系统或设备提供的数据。
所述数据同步服务平台4用于从所述数据源平台2中采集全量和/或增量数据,为每一条数据分配有序且唯一的编号,然后按照所述编号对所述数据进行全局有序排列和去重处理,最后按顺序写入数据湖表中。所述数据同步服务平台4可以是服务器。所述服务器可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
所述下游服务平台6用于从所述数据湖表中读取数据并进行下一步处理。
所述数据源平台2、数据同步服务平台4、下游服务平台6之间通过网络通信连接,以进行数据传输和交互。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
实施例一
如图2所示,为本申请第一实施例提出的一种数据同步方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。下面以所述数据同步服务平台作为执行主体对该方法进行说明。
该方法包括以下步骤:
S200,从数据源中采集全量数据和增量数据。
所述数据源来自所述数据源平台,在本实施例中,可以是例如MySQL、TiDB等数据库。
针对现有技术只能将全量数据和增量数据分开进行同步,且处理不够及时的缺陷,本实施例可以对全量数据和增量数据一体化打通处理,并且实现分钟级的同步。在本实施例中,主要通过快照技术按天采集所述全量数据,通过读取增量日志分钟级采集所述增量数据。
举例而言,针对MySQL数据源,基于Flink CDC,通过Snapshot的全量快照拉取得到所述全量数据(SnapshotReader),通过读取Binlog日志得到所述增量数据(BinlogReader)。
针对TiDB数据源,由于TiDB通过Select拉取数据效率和性能过差(线上也不允许),因此采用代理(Agent)采集从节点(Slave节点)的Dump(进程的内存镜像)文件得到所述全量数据(FileReader),并同样通过读取Binlog日志得到所述增量数据(BinlogReader)。
S202,为采集的每一条数据分配有序且唯一的编号(ID)。
在从数据源拉取数据到写入HUDI的数据同步过程中,由于数据量庞大,可能会出现乱序或者重复。尤其当全量数据和增量数据一体化打通之后,更需要保证数据的有序性和唯一性。在本实施例中,通过为采集的每一条数据分配有序且唯一的ID来保证每条数据的有序性和唯一性。为了使该ID有序且唯一,本实施例采用了时间戳(Timestamp)加单调递增ID(Seq_ID)相结合的方式。
具体而言,进一步参阅图3,为上述步骤S202的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S202具体包括:
S2020,记录当前的系统生成时间,作为一个时间戳。
所述数据的采集是从数据源中串行拉取,每条数据都有一个对应的时间戳。所述时间戳可以采用纳秒级单位。
S2022,生成一个单调递增ID。
在所述时间戳之外,还为每条数据生成一个Seq_ID。所述Seq_ID为实例级单调递增ID,没有状态,重启会重置。
S2024,将所述时间戳加上所述单调递增ID作为所述有序且唯一的编号分配给当前数据。
所述时间戳保证了每条数据的顺序,所述单调递增ID保证了相同时间内即使有多条数据也不会有重复编号,结合所述时间戳和所述单调递增ID,保证了每条数据的编号有序且唯一。
并且,在本实施例中还可以对所述全量数据和所述增量数据均进行格式标准化,便于后续处理。在最后将所述数据传输给下游之前,还可以根据所述标准化的格式解析数据,则下游服务平台不需要再另外进行解析,可以直接使用所述数据。
回到图2,S204,对所述数据按照所述编号进行全局有序排列和去重处理。
在本实施例中,分配所述编号之后的数据可以经由消息系统传输至Flink HUDI。所述消息系统可以由一个或多个Kafka集群构成,用于将所述数据发布到相应的主题下。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的Kafka集群中,以保障不同类型数据的价值,避免系统故障影响整体数据。
具体而言,Kafka Sink将带有编号的所述数据推送到Kafka消息队列中,FlinkHUDI从所述Kafka消息队列中消费当前数据,然后对所述数据按照所述编号进行全局有序排列和去重处理。
由于每条数据都带有所述编号,且所述编号是全局有序编号,因此可以对数据乱序进行过滤处理,将所有数据进行全局有序排列。又因为所述编号是全局唯一编号,因此当出现相同编号时则表示数据重复,可以根据所述编号进行去重处理,保障数据质量。
S206,将处理后的数据按顺序写入数据湖表中。
当对所述数据经过全局有序排列和去重处理后,可以将处理后的数据通过HUDISink写入相应的HUDI表中。
本实施例提出的数据同步方法,可以对全量数据和增量数据进行一体化打通,数据格式标准化,并实现分钟级数据同步和一键增量化入仓。通过向每条数据分配有序且唯一的编号,保证了所述全量数据和所述增量数据的有序性和唯一性,保障了数据传输质量。
实施例二
如图4所示,为本申请第二实施例提出的一种数据同步方法的流程图。在第二实施例中,所述数据同步方法在上述第一实施例的基础上,还包括步骤S308-S310。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S300,从数据源中采集全量数据和增量数据。
所述数据源来自所述数据源平台,在本实施例中,可以是例如MySQL、TiDB等数据库。
针对现有技术只能将全量数据和增量数据分开进行同步,且处理不够及时的缺陷,本实施例可以对全量数据和增量数据一体化打通处理,并且实现分钟级的同步。在本实施例中,主要通过快照技术按天采集所述全量数据,通过读取增量日志分钟级采集所述增量数据。
举例而言,针对MySQL数据源,基于Flink CDC,通过Snapshot的全量快照拉取得到所述全量数据(SnapshotReader),通过读取Binlog日志得到读取Binlog日志得到所述增量数据(BinlogReader)。
针对TiDB数据源,由于TiDB通过Select拉取数据效率和性能过差(线上也不允许),因此采用代理(Agent)采集从节点(Slave节点)的Dump(进程的内存镜像)文件得到所述全量数据(FileReader),并同样通过读取Binlog日志得到所述增量数据(BinlogReader)。
S302,为采集的每一条数据分配有序且唯一的编号(ID)。
在从数据源拉取数据到写入HUDI的数据同步过程中,由于数据量庞大,可能会出现乱序或者重复。尤其当全量数据和增量数据一体化打通之后,更需要保证数据的有序性和唯一性。在本实施例中,通过为采集的每一条数据分配有序且唯一的ID来保证每条数据的有序性和唯一性。为了使该ID有序且唯一,本实施例采用了时间戳(Timestamp)加单调递增ID(Seq_ID)相结合的方式。所述时间戳可以采用纳秒级单位。
所述时间戳保证了每条数据的顺序,所述单调递增ID保证了相同时间内即使有多条数据也不会有重复编号,结合所述时间戳和所述单调递增ID,保证了每条数据的编号有序且唯一。
并且,在本实施例中还可以对所述全量数据和所述增量数据均进行格式标准化,便于后续处理。在最后将所述数据传输给下游之前,还可以根据所述标准化的格式解析数据,则下游服务平台不需要再另外进行解析,可以直接使用所述数据。
S304,对所述数据按照所述编号进行全局有序排列和去重处理。
在本实施例中,分配所述编号之后的数据可以经由消息系统传输至Flink HUDI。所述消息系统可以由一个或多个Kafka集群构成,用于将所述数据发布到相应的主题下。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的Kafka集群中,以保障不同类型数据的价值,避免系统故障影响整体数据。
具体而言,Kafka Sink将带有编号的所述数据推送到Kafka消息队列中,FlinkHUDI从所述Kafka消息队列中消费当前数据,然后对所述数据按照所述编号进行全局有序排列和去重处理。
由于每条数据都带有所述编号,且所述编号是全局有序编号,因此可以对数据乱序进行过滤处理,将所有数据进行全局有序排列。又因为所述编号是全局唯一编号,因此当出现相同编号时则表示数据重复,可以根据所述编号进行去重处理,保障数据质量。
S306,将处理后的数据按顺序写入数据湖表中。
当对所述数据经过全局有序排列和去重处理后,可以将处理后的数据通过HUDISink写入相应的HUDI表中。
S308,根据从所述数据源中采集的至少部分数据与所述数据湖表中对应的至少部分数据,检验数据传输质量。
在本实施例中,对所述数据进行阻断式DQC(数据质量检测),可以保障下游的数据质量。即,在数据全部湖化前,湖仓的过程中存在联动,通过所述检测对数据质量兜底。
在本实施例中,比对从所述数据源中采集的至少部分数据与所述数据湖表中对应的至少部分数据是否一致;及根据比对结果确定所述数据传输质量。
若对比结果为一致,则说明数据写入质量高,可以交由下游使用。
若对比结果不一致,则说明数据写入质量低,不可以交由下游使用。
所述“至少部分数据”可以是按照预设比例进行采样得到的数据,例如所述比例可以是10%;也可以是预先按照固定频次安排的打桩数据,例如每分钟向MySQL数据库中插入一千条数据(包含更新),根据所述打桩数据和HUDI表中对应的数据进行比对。
值得注意的是,在其他实施例中,所述“至少部分数据”也可以是其他形式的数据,或者所述DQC还可以采用其他可行的检测方式,又或者还可以将多种检测方案相结合,综合判断所述数据传输质量。
S310,提交所述数据的分区信息。
其中,所述分区信息包括HUDI表的HUID分区信息和兼容Hive表的Hive分区信息。
通过提供Hive分区信息,可以将HUDI表作为Hive表使用。可以打通湖仓链路且使下游透明,例如:兼容Hive,每小时/天分区,使得ETL调度透明。
本实施例提出的数据同步方法,可以对全量数据和增量数据进行一体化打通,数据格式标准化,并实现分钟级数据同步和一键增量化入仓。通过向每条数据分配有序且唯一的编号,保证了所述全量数据和所述增量数据的有序性和唯一性,保障了数据传输质量。另外,该方法引入校验机制,可以对数据质量进行兜底。并且兼容Hive分区,可以打通湖仓链路且使下游透明。
如图5所示,为本申请中一种具体应用实例的示意图。
在图5中,基于Flink CDC,通过SnapshotReader采集MySQL数据源的全量数据。采用Agent,通过FileReader采集Slave节点的Dump文件得到TiDB数据源的全量数据。而MySQL数据源和TiDB数据源的增量数据均可通过BinlogReader读取Binlog日志得到。
在Transform中对所采集到的全量数据和增量数据中每一条数据分别分配有序且唯一的ID,并进行格式标准化。然后由Kafka Sink将带有该ID的数据推送到Kafka消息队列中。Flink HUDI从所述Kafka消息队列中消费当前数据,HUDI Format对所述数据按照所述ID进行全局有序排列和去重处理。处理后的数据通过HUDI Sink写入相应的HUDI表中。阻断式DQC对从数据湖中采集的数据和HUDI表中的对应数据进行比对,保障下游的数据质量。当检测通过后才能创建分区,提交所述数据的分区信息。所述分区信息包括HUDI表的HUID分区信息和兼容Hive表的Hive分区信息。
实施例三
如图6所示,为本申请第三实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图6仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述数据同步服务平台4。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如数据同步系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述数据同步系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
实施例四
如图7所示,为本申请第四实施例提出一种数据同步系统60的模块示意图。所述数据同步系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述数据同步系统60包括:
采集模块600,用于从数据源中采集全量数据和增量数据。
所述数据源来自所述数据源平台,在本实施例中,可以是例如MySQL、TiDB等数据库。
针对现有技术只能将全量数据和增量数据分开进行同步,且处理不够及时的缺陷,本实施例可以对全量数据和增量数据一体化打通处理,并且实现分钟级的同步。在本实施例中,主要通过快照技术按天采集所述全量数据,通过读取增量日志分钟级采集所述增量数据。
举例而言,针对MySQL数据源,基于Flink CDC,通过Snapshot的全量快照拉取得到所述全量数据(SnapshotReader),通过读取Binlog日志得到所述增量数据(BinlogReader)。
针对TiDB数据源,由于TiDB通过Select拉取数据效率和性能过差(线上也不允许),因此采用代理(Agent)采集从节点(Slave节点)的Dump(进程的内存镜像)文件得到所述全量数据(FileReader),并同样通过读取Binlog日志得到所述增量数据(BinlogReader)。
分配模块602,用于为采集的每一条数据分配有序且唯一的编号(ID)。
在从数据源拉取数据到写入HUDI的数据同步过程中,由于数据量庞大,可能会出现乱序或者重复。尤其当全量数据和增量数据一体化打通之后,更需要保证数据的有序性和唯一性。在本实施例中,通过为采集的每一条数据分配有序且唯一的ID来保证每条数据的有序性和唯一性。为了使该ID有序且唯一,本实施例采用了时间戳(Timestamp)加单调递增ID(Seq_ID)相结合的方式。所述时间戳可以采用纳秒级单位。
所述时间戳保证了每条数据的顺序,所述单调递增ID保证了相同时间内即使有多条数据也不会有重复编号,结合所述时间戳和所述单调递增ID,保证了每条数据的编号有序且唯一。
并且,在本实施例中还可以对所述全量数据和所述增量数据均进行格式标准化,便于后续处理。在最后将所述数据传输给下游之前,还可以根据所述标准化的格式解析数据,则下游服务平台不需要再另外进行解析,可以直接使用所述数据。
处理模块604,用于对所述数据按照所述编号进行全局有序排列和去重处理。
在本实施例中,分配所述编号之后的数据可以经由消息系统传输至Flink HUDI。所述消息系统可以由一个或多个Kafka集群构成,用于将所述数据发布到相应的主题下。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的Kafka集群中,以保障不同类型数据的价值,避免系统故障影响整体数据。
具体而言,Kafka Sink将带有编号的所述数据推送到Kafka消息队列中,FlinkHUDI从所述Kafka消息队列中消费当前数据,然后对所述数据按照所述编号进行全局有序排列和去重处理。
由于每条数据都带有所述编号,且所述编号是全局有序编号,因此可以对数据乱序进行过滤处理,将所有数据进行全局有序排列。又因为所述编号是全局唯一编号,因此当出现相同编号时则表示数据重复,可以根据所述编号进行去重处理,保障数据质量。
写入模块606,用于将处理后的数据按顺序写入数据湖表中。
当对所述数据经过全局有序排列和去重处理后,可以将处理后的数据通过HUDISink写入相应的HUDI表中。
本实施例提出的数据同步系统,可以对全量数据和增量数据进行一体化打通,数据格式标准化,并实现分钟级数据同步和一键增量化入仓。通过向每条数据分配有序且唯一的编号,保证了所述全量数据和所述增量数据的有序性和唯一性,保障了数据传输质量。
实施例五
如图8所示,为本申请第五实施例提出一种数据同步系统60的模块示意图。在本实施例中,所述数据同步系统60除了包括第四实施例中的所述采集模块600、分配模块602、处理模块604、写入模块606之外,还包括检测模块608、分区模块610。
所述检测模块608,用于根据从所述数据源中采集的至少部分数据与所述数据湖表中对应的至少部分数据,检验数据传输质量。
在本实施例中,对所述数据进行阻断式DQC(数据质量检测),可以保障下游的数据质量。即,在数据全部湖化前,湖仓的过程中存在联动,通过所述检测对数据质量兜底。
在本实施例中,比对从所述数据源中采集的至少部分数据与所述数据湖表中对应的至少部分数据是否一致;及根据比对结果确定所述数据传输质量。
若对比结果为一致,则说明数据写入质量高,可以交由下游使用。
若对比结果不一致,则说明数据写入质量低,不可以交由下游使用。
所述“至少部分数据”可以是按照预设比例进行采样得到的数据,例如所述比例可以是10%;也可以是预先按照固定频次安排的打桩数据,例如每分钟向MySQL数据库中插入一千条数据(包含更新),根据所述打桩数据和HUDI表中对应的数据进行比对。
值得注意的是,在其他实施例中,所述“至少部分数据”也可以是其他形式的数据,或者所述DQC还可以采用其他可行的检测方式,又或者还可以将多种检测方案相结合,综合判断所述数据传输质量。
所述分区模块610,用于提交所述数据的分区信息。
其中,所述分区信息包括HUDI表的HUID分区信息和兼容Hive表的Hive分区信息。
通过提供Hive分区信息,可以将HUDI表作为Hive表使用。可以打通湖仓链路且使下游透明,例如:兼容Hive,每小时/天分区,使得ETL调度透明。
本实施例提出的数据同步系统,通过引入校验机制,可以对数据质量进行兜底。并且兼容Hive分区,可以打通湖仓链路且使下游透明。
实施例六
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有数据同步程序,所述数据同步程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的数据同步方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。
Claims (10)
1.一种数据同步方法,其特征在于,所述方法包括:
从数据源中采集全量数据和增量数据,其中,所述全量数据按第一间隔时间采集,所述增量数据按第二间隔时间采集;
将当前采集的所有数据打通处理,为每一条数据分配有序且唯一的编号;
将带有所述编号的所述数据推送到消息队列中;
从所述消息队列中消费当前数据,并对所消费的所有数据按照所述编号进行全局有序排列和去重处理;及
将处理后的数据按顺序同步至数据湖表中。
2.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:
根据从所述数据源中采集的至少部分数据与所述数据湖表中对应的至少部分数据,检验数据传输质量。
3.根据权利要求1或2所述的数据同步方法,其特征在于,所述从数据源中采集全量数据和增量数据包括:
通过快照技术按天采集所述全量数据,通过读取增量日志分钟级采集所述增量数据。
4.根据权利要求3所述的数据同步方法,其特征在于,所述从数据源中采集全量数据和增量数据包括:
针对第一预设类型数据源,基于Flink CDC,通过全量快照技术拉取得到所述全量数据,通过读取Binlog日志得到所述增量数据。
5.根据权利要求4所述的数据同步方法,其特征在于,所述从数据源中采集全量数据和增量数据还包括:
针对第二预设类型数据源,通过代理采集从节点的Dump文件得到所述全量数据,通过读取Binlog日志得到所述增量数据。
6.根据权利要求1或2所述的数据同步方法,其特征在于,所述为每一条数据分配有序且唯一的编号包括:
记录当前的系统生成时间,作为一个时间戳;
生成一个单调递增编号;
将所述时间戳加上所述单调递增编号作为所述有序且唯一的编号分配给当前数据。
7.根据权利要求1或2所述的数据同步方法,其特征在于,所述消息队列为Kafka消息队列。
8.一种数据同步系统,其特征在于,所述系统包括:
采集模块,用于从数据源中采集全量数据和增量数据,其中,所述全量数据按第一间隔时间采集,所述增量数据按第二间隔时间采集;
分配模块,用于将当前采集的所有数据打通处理,为每一条数据分配有序且唯一的编号,将带有所述编号的所述数据推送到消息队列中;
处理模块,用于从所述消息队列中消费当前数据,并对所消费的所有数据按照所述编号进行全局有序排列和去重处理;
写入模块,用于将处理后的数据按顺序同步至数据湖表中。
9.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据同步程序,所述数据同步程序被所述处理器执行时实现如权利要求1至7中任一项所述的数据同步方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据同步程序,所述数据同步程序被处理器执行时实现如权利要求1至7中任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110863314.4A CN113535856B (zh) | 2021-07-29 | 2021-07-29 | 数据同步方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110863314.4A CN113535856B (zh) | 2021-07-29 | 2021-07-29 | 数据同步方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535856A CN113535856A (zh) | 2021-10-22 |
CN113535856B true CN113535856B (zh) | 2022-11-04 |
Family
ID=78121430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110863314.4A Active CN113535856B (zh) | 2021-07-29 | 2021-07-29 | 数据同步方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535856B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114036107B (zh) * | 2021-11-08 | 2023-03-14 | 上海柯林布瑞信息技术有限公司 | 基于hudi快照的医疗数据查询方法及装置 |
CN114722119A (zh) * | 2022-03-30 | 2022-07-08 | 上海幻电信息科技有限公司 | 数据同步方法及系统 |
CN115037729B (zh) * | 2022-04-21 | 2024-05-28 | 中国建设银行股份有限公司 | 数据汇聚方法、装置、电子设备及计算机可读介质 |
CN115840786B (zh) * | 2023-02-20 | 2023-05-02 | 北京数元灵科技有限公司 | 一种数据湖数据同步方法及装置 |
CN118585577A (zh) * | 2023-02-24 | 2024-09-03 | 华为云计算技术有限公司 | 数据同步方法和装置 |
CN116089537B (zh) * | 2023-04-07 | 2023-08-04 | 江西省智能产业技术创新研究院 | 增量数据同步方法、系统、计算机及存储介质 |
CN117708239A (zh) * | 2023-12-14 | 2024-03-15 | 阳光凯讯(北京)科技股份有限公司 | 一种分页同步数据的方法、系统及电子设备 |
CN117520460B (zh) * | 2024-01-05 | 2024-04-02 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750283A (zh) * | 2011-04-20 | 2012-10-24 | 阿里巴巴集团控股有限公司 | 海量数据同步系统及方法 |
CN107402981A (zh) * | 2017-07-07 | 2017-11-28 | 国网浙江省电力公司信息通信分公司 | 一种基于分布式离线数据库的数据增量处理方法及系统 |
CN107748790A (zh) * | 2017-11-01 | 2018-03-02 | 北京奇艺世纪科技有限公司 | 一种线上服务系统、数据加载方法、装置及设备 |
CN110825820A (zh) * | 2019-09-27 | 2020-02-21 | 中国平安财产保险股份有限公司 | 实时数据标签获取方法、装置、计算机设备和存储介质 |
CN112307037A (zh) * | 2019-07-26 | 2021-02-02 | 北京京东振世信息技术有限公司 | 一种数据同步方法和装置 |
CN112507029A (zh) * | 2020-12-18 | 2021-03-16 | 上海哔哩哔哩科技有限公司 | 数据处理系统及数据实时处理方法 |
CN112988702A (zh) * | 2019-12-12 | 2021-06-18 | 天翼电子商务有限公司 | 异构数据源实时数据传输方法及系统、存储介质及终端 |
CN113094442A (zh) * | 2021-04-30 | 2021-07-09 | 广州虎牙科技有限公司 | 全量数据同步方法、装置、设备和介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046168B (zh) * | 2019-03-28 | 2021-03-26 | 南京苏宁软件技术有限公司 | 一种增量数据一致性实现方法及装置 |
CN110334152B (zh) * | 2019-06-28 | 2022-05-17 | 浙江吉利控股集团有限公司 | 一种数据同步方法、装置及服务器 |
CN111090645B (zh) * | 2019-10-12 | 2024-03-01 | 平安科技(深圳)有限公司 | 基于云存储的数据传输方法、装置及计算机设备 |
CN112100147B (zh) * | 2020-07-27 | 2024-06-07 | 杭州玳数科技有限公司 | 基于Flink实现Binlog到HIVE的实时采集方法和系统 |
CN112559475B (zh) * | 2020-12-11 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 数据实时捕获和传输方法及系统 |
-
2021
- 2021-07-29 CN CN202110863314.4A patent/CN113535856B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750283A (zh) * | 2011-04-20 | 2012-10-24 | 阿里巴巴集团控股有限公司 | 海量数据同步系统及方法 |
CN107402981A (zh) * | 2017-07-07 | 2017-11-28 | 国网浙江省电力公司信息通信分公司 | 一种基于分布式离线数据库的数据增量处理方法及系统 |
CN107748790A (zh) * | 2017-11-01 | 2018-03-02 | 北京奇艺世纪科技有限公司 | 一种线上服务系统、数据加载方法、装置及设备 |
CN112307037A (zh) * | 2019-07-26 | 2021-02-02 | 北京京东振世信息技术有限公司 | 一种数据同步方法和装置 |
CN110825820A (zh) * | 2019-09-27 | 2020-02-21 | 中国平安财产保险股份有限公司 | 实时数据标签获取方法、装置、计算机设备和存储介质 |
CN112988702A (zh) * | 2019-12-12 | 2021-06-18 | 天翼电子商务有限公司 | 异构数据源实时数据传输方法及系统、存储介质及终端 |
CN112507029A (zh) * | 2020-12-18 | 2021-03-16 | 上海哔哩哔哩科技有限公司 | 数据处理系统及数据实时处理方法 |
CN113094442A (zh) * | 2021-04-30 | 2021-07-09 | 广州虎牙科技有限公司 | 全量数据同步方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113535856A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535856B (zh) | 数据同步方法及系统 | |
US11507594B2 (en) | Bulk data distribution system | |
CN109918349B (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN108694195B (zh) | 一种分布式数据仓库的管理方法及系统 | |
CN110651265A (zh) | 数据复制系统 | |
CN112559475B (zh) | 数据实时捕获和传输方法及系统 | |
CN111241122B (zh) | 任务监测方法、装置、电子设备和可读存储介质 | |
CN112948492A (zh) | 一种数据处理系统、方法、装置、电子设备及存储介质 | |
CN103793493A (zh) | 一种处理车载终端海量数据的方法和系统 | |
CN114048217A (zh) | 增量数据的同步方法和装置、电子设备和存储介质 | |
CN114722119A (zh) | 数据同步方法及系统 | |
CN112825069A (zh) | 数据库数据的分析方法、设备、系统及存储介质 | |
CN111476672B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN114625809A (zh) | 一种基于Binlog日志的数据同步方法、装置以及存储介质和电子设备 | |
CN108108478B (zh) | 数据格式转换方法、系统及电子设备 | |
CN110019169B (zh) | 一种数据处理的方法及装置 | |
US20180075054A1 (en) | Metering data in distributed storage environments | |
CN116701355A (zh) | 数据视图处理方法、装置、计算机设备及可读存储介质 | |
Thulasiram et al. | Real time data warehouse updates through extraction-transformation-loading process using change data capture method | |
CN115599871A (zh) | 基于湖仓一体的数据处理系统和方法 | |
CN115510139A (zh) | 数据查询方法和装置 | |
CN111274316B (zh) | 多级数据流转任务的执行方法及装置、电子设备、存储介质 | |
CN116628042A (zh) | 数据处理方法、装置、设备及介质 | |
CN113568966A (zh) | 用于ods层和dw层之间的数据处理方法与系统 | |
CN114490865A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |