CN112507027B - 基于Kafka的增量数据同步方法、装置、设备及介质 - Google Patents

基于Kafka的增量数据同步方法、装置、设备及介质 Download PDF

Info

Publication number
CN112507027B
CN112507027B CN202011483773.1A CN202011483773A CN112507027B CN 112507027 B CN112507027 B CN 112507027B CN 202011483773 A CN202011483773 A CN 202011483773A CN 112507027 B CN112507027 B CN 112507027B
Authority
CN
China
Prior art keywords
data
log data
kafka
database
binary log
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
Application number
CN202011483773.1A
Other languages
English (en)
Other versions
CN112507027A (zh
Inventor
陆魏
胡凭智
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN202011483773.1A priority Critical patent/CN112507027B/zh
Publication of CN112507027A publication Critical patent/CN112507027A/zh
Priority to PCT/CN2021/090562 priority patent/WO2022126974A1/zh
Application granted granted Critical
Publication of CN112507027B publication Critical patent/CN112507027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Abstract

本申请涉及数据处理技术领域,揭露一种基于Kafka的增量数据同步方法、装置、设备及介质,其中方法包括当监测到数据库事务发生改变时,获取数据库事务生成的二进制日志数据,并将二进制日志数据写入Kafka对应类别中,然后将存储在Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中,并对二进制日志数据执行数据去重还原处理,获取目标日志数据;当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据,并将增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。本申请还涉及区块链技术,二进制日志数据存储于区块链中。本申请通过实时拉取二进制日志数据,提高了增量数据同步的效率。

Description

基于Kafka的增量数据同步方法、装置、设备及介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于Kafka的增量数据同步方法、装置、设备及介质。
背景技术
数据同步是大数据处理领域的一项重要环节,它是指将传统数据库的业务数据导入到大数据领域的数据仓库,以便于后续利用大数据集群的计算能力对这些导入的海量数据进行处理和分析。因此数据同步构建了大数据分析处理的源头基础数据,因此对大数据分析处理至关重要。
现有的数据同步方法,采用的是开源大数据同步工具(例如sqoop)进行数据导入,通过配置相应的导入任务,由大数据调度程序负责定时运行该导入任务,集中将数据库里面前段时间的增量业务数据导入到hive数据仓库。但是,随着业务量的越来越大,每天由数据库同步到数据仓库的数据量也越来越大,这种同步方式导致增量数据同步耗时非常久,增量数据同步效率低下。现亟需一种能够提高增量数据同步效率的方法。
发明内容
本申请实施例的目的在于提出一种基于Kafka的增量数据同步方法、装置、设备及介质,以提高增量数据同步的效率。
为了解决上述技术问题,本申请实施例提供一种基于Kafka的增量数据同步方法,包括:
当监测到数据库事务发生改变时,获取所述数据库事务生成的二进制日志数据;
创建Kafka对应类别,将所述二进制日志数据写入所述Kafka对应类别中;
按照预设的时间间隔,将存储在所述Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;
在所述数据仓库工具中,对所述二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据;
当到达预设时间时,获取所述目标日志数据对应的用户操作后的数据库值,作为增量数据,并将所述增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。
为了解决上述技术问题,本申请实施例提供一种基于Kafka的增量数据同步装置,包括:
日志数据获取模块,用于当监测到数据库事务发生改变时,获取所述数据库事务生成的二进制日志数据;
日志数据写入模块,用于创建Kafka对应类别,将所述二进制日志数据写入所述Kafka对应类别中;
日志数据存储模块,用于按照预设的时间间隔,将存储在所述Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;
目标日志数据模块,用于在所述数据仓库工具中,对所述二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据;
同步增量数据模块,用于当到达预设时间时,获取所述目标日志数据对应的用户操作后的数据库值,作为增量数据,并将所述增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种计算机设备,包括,一个或多个处理器;存储器,用于存储一个或多个程序,使得一个或多个处理器实现上述任意一项所述的基于Kafka的增量数据同步方法。
为解决上述技术问题,本发明采用的一个技术方案是:一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的基于Kafka的增量数据同步方法。
本发明实施例提供了一种基于Kafka的增量数据同步方法、装置、设备及介质。其中,方法包括:当监测到数据库事务发生改变时,获取数据库事务生成的二进制日志数据;创建Kafka对应类别,将二进制日志数据写入Kafka对应类别中;按照预设的时间间隔,将存储在Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;在数据仓库工具中,对二进制日志数据执行数据去重还原处理,以获取最新时间戳的二进制日志数据,作为目标日志数据;当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据,并将增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。本发明实施例通过实时监听数据库事务,实时拉取二进制日志数据,不仅减轻了大数据同步对数据库的压力,而且也降低了服务器的负载,并且极大缩短了数据同步的时间,从而提高了增量数据同步的效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于Kafka的增量数据同步方法的应用环境示意图;
图2根据本申请实施例提供的基于Kafka的增量数据同步方法的一实现流程图;
图3是本申请实施例提供的基于Kafka的增量数据同步方法中子流程的一实现流程图;
图4是本申请实施例提供的基于Kafka的增量数据同步方法中子流程的又一实现流程图;
图5是本申请实施例提供的基于Kafka的增量数据同步方法中子流程的又一实现流程图;
图6是本申请实施例提供的基于Kafka的增量数据同步方法中子流程的又一实现流程图;
图7是本申请实施例提供的基于Kafka的增量数据同步方法中子流程的又一实现流程图;
图8是本申请实施例提供的基于Kafka的增量数据同步装置示意图;
图9是本申请实施例提供的计算机设备的示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
下面结合附图和实施方式对本发明进行详细说明。
请参阅图1,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、搜索类应用、即时通信工具等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于Kafka的增量数据同步方法一般由服务器执行,相应地,基于Kafka的增量数据同步装置一般配置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参阅图2,图2示出了基于Kafka的增量数据同步方法的一种具体实施方式。
需注意的是,若有实质上相同的结果,本发明的方法并不以图2所示的流程顺序为限,该方法包括如下步骤:
S1:当监测到数据库事务发生改变时,获取数据库事务生成的二进制日志数据。
具体的,通过对数据库进行实时监测,当数据库的数据库事务发生改变时,也即数据库里发生了增加操作、修改操作、删除操作等操作,此时数据库事务会生成二进制日志数据。该二进制日志数据记录了数据库中所有数据的变更,并且以二进制的形式存在,所以为了实现增量数据同步,服务器会获取该二进制日志数据。
其中,数据库事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。其数据库事务是数据库运行中的逻辑工作单位;通常,一个数据库事务可以对数据库进行一次操作,如:增加操作、修改操作、删除操作等。
可选地,一个数据库事务为一条或一组结构化查询语言(Structured QueryLanguage,SQL)语句。
其中,二进制日志数据是二进制形式的数据库事务生成的数据,具体为binlog数据。binlog数据记录对数据库中数据发生或潜在发生更改的SQL语句,也即记录了数据库中所有数据的变更,并以二进制的形式进行保存。
S2:创建Kafka对应类别,将二进制日志数据写入Kafka对应类别中。
具体的,通过创建Kafka对应类别,通过数据同步工具Canal将二进制日志数据写入到Kafka对应类别,以便后续对二进制日志数据进行增量和同步。
其中,Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。其是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。在本申请实施例中,将二进制日志数据写入到Kafka对应类别,以便后续对二进制日志数据进行增量和同步。
其中,在Kafka中,每条发布到Kafka的消息都有一个Kafka的类别,这个类别被称为Topic。其一个Topic为一类消息,每条消息必须指定一个Topic。在本申请实施例中,通过创建Kafka对应类别,将二进制日志数据对应写入Kafka的类别中。
S3:按照预设的时间间隔,将存储在Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中。
具体的,由于增量数据同步的目的是为了将数据库中的业务数据导入到大数据领域的数据仓库,以便于后续利用大数据集群的计算能力对这些导入的海量数据进行处理和分析。故而将存储在Kafka对应类别中的二进制日志数据,批量同步到数据仓库工具中。
其中,数据仓库工具指的是hive,其是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。在本申请实施例中,由于二进制日志数据与hive数据仓库工具的耦合度太强,导致不能够直接将二进制日志数据直接导入到hive数据仓库工具进行存储。所以为了去除二进制日志数据与hive数据仓库工具的耦合度,先将二进制日志数据发送到Kafka进行存储,再通过从Kafka中,将二进制日志数据写入到hive数据仓库工具中;而且这样就算在遇到数据峰值时,即便Kafka停止工作了,也不会影响接口数据的服务。
需要说明的是,预设的时间间隔根据实际情况而设定,此处不做限定。在一具体实施例中,预设的时间间隔为10分钟。
S4:在数据仓库工具中,对二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据。
具体的,由于二进制日志数据为记录变更信息,用户对数据库某一条记录做一次操作,产生的二进制日志数据变更信息包含这条记录用户操作前的内容,以及用户操作之后的内容,这反映的是数据变化的信息。对于同一条数据记录,每一段时间内可能有很多的变化信息,因此在获取到该条记录每一段时间内所有的二进制日志数据后,需要将所有的这些二进制日志数据进行去重还原,恢复数据库中的这条记录最新的记录值。也即获取最新时间戳的二进制日志数据,作为目标日志数据。
其中,去重还原处理是指针对数据库中同一条记录操作后,产生了不同的二进制日志数据的变更信息,保留最新时间戳的二进制日志数据,将除去最新时间戳的二进制日志数据外,其他所有二进制日志数据进行删除还原。
S5:当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据,并将增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。
具体的,设定一个预设时间,当每次到的这个预设时间时,统计数据仓库中同步增加的数据,也即是实现数据的同步增量。并且由于目标日志数据为记录变更信息,即反映的是数据变化的信息,所以需要获取目标日志数据对应的用户操作后的数据库值,作为增量数据。并且为了删除重复的增量数据,减轻服务器负载,所以会识别增量数据与数据仓库工具中历史数据相同的数据,并删除相同的增量数据,最终得到同步增量数据。
需要说明的是,预设时间根据实际情况而设定,此处不做限定。在一具体实施例中,预设时间为24小时。
本实施例中,当监测到数据库事务发生改变时,获取数据库事务生成的二进制日志数据;创建Kafka对应类别,将二进制日志数据写入Kafka对应类别中;按照预设的时间间隔,将存储在Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;在数据仓库工具中,对二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据;当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据,并将增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。实现通过实时监听数据库事务,实时拉取二进制日志数据,不仅减轻了大数据同步对数据库的压力,而且降低了服务器的负载,并且极大缩短了数据同步的时间,从而提高了增量数据同步的效率。
请参阅图3,图3示出了步骤S1的一种具体实施方式,步骤S1中当监测到数据库事务发生改变时,获取数据库事务生成的二进制日志数据的具体实现过程,详叙如下:
S11:基于数据同步工具,对数据库进行监测。
具体的,通过数据同步工具Canal对数据库进行实时监测,当数据库中数据发生变更时,数据同步工具Canal能够实时拉取数据。
其中,数据同步工具Canal是由阿里巴巴旗下开发一款开源项目,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。在本申请中,数据同步工具Canal主要负责对数据库进行实时监测,并实时拉取数据库中的二进制日志数据。
S12:当监测到数据库的数据库事务发生改变时,获取数据库事务生成的二进制日志数据。
具体的,数据同步工具Canal包括Canal server和Canal client两部分。Canalserver模拟自己是某个MySQL的参数,发送dump命令去获取binlog数据;Canal client负责拉取Canal server获取得到的binlog数据。在本申请实施例中,通过Canal server去获取数据库事务生成的二进制日志数据。
S13:在数据库中建立临时存储区,并将二进制日志数据写入临时存储区中。
具体的,临时存储区是一种通过写内存的方式进行写入的文件系统,该临时存储区为临时文件系统(temporary file storage,tmpfs)。
在本实施中,通过基于数据同步工具,对数据库进行监测,当监测到数据库的数据库事务发生改变时,获取数据库事务生成的二进制日志数据,在数据库中建立临时存储区,并将二进制日志数据写入临时存储区中,实现获取二进制日志数据,为后续实现增量数据同步提供基础,从而实现提高增量数据同步的效率。
请参阅图4,图4示出了步骤S13的一种具体实施方式,步骤S13中在数据库中建立临时存储区,并将二进制日志数据写入临时存储区中的具体实现过程,详叙如下:
S131:读取数据库配置参数,其中,数据库配置参数包括:文件命名方式、文件切割方式、文件循环写入方式以及二进制日志数据的格式中的至少一种。
具体的,由于要将二进制日志数据写入临时存储区中,故首先需要读取数据库配置参数。
其中,文件命名方式即该二进制日志数据写入临时存储区的文件时,该文件的命名方式;文件切割方式用于指示每个临时存储区中的文件中存储的二进制日志数据的大小;文件循环写入方式用于指示二进制日志数据写入临时存储区中的文件的方式,可以将一个二进制日志数据对应写入一个文件的方式进行循环写入,也可以是固定数量的二进制日志数据对应写入一个文件的方式进行循环写入;二进制日志数据的格式,binlog通常包括三种格式:语句模式(英文:Statement)、记录模式(英文:Row)以及混合模式(英文:Mixed)。
S132:在数据库中建立临时存储区,并根据数据库配置参数,将二进制日志数据写入临时存储区。
可选地,将二进制日志数据写入临时存储区时,首先在临时存储区中创建文件,并将该二进制日志数据写入创建的文件中,其中,根据上述数据库配置参数创建文件。
本实施例中,通过读取数据库配置参数,并在数据库中建立临时存储区,并根据数据库配置参数,将二进制日志数据写入临时存储区,实现将实时获取到的二进制日志数据进行临时存储,便于后续将二进制日志数据进行转移,从而有利于提高增量数据同步的效率。
请参阅图5,图5示出了步骤S2的一种具体实施方式,步骤S2中创建Kafka对应类别,将二进制日志数据写入Kafka对应类别中的具体实现过程,详叙如下:
S21:基于Kafka创建指令,创建Kafka对应类别。
具体的,由于临时存储区只是负责临时存储部分数据,当数据过大时,临时存储区就无法承载,故需要将二进制日志数据转移到Kafka中。由于每条发布到Kafka的消息都有一个Kafka的类别,这个类别被称为Topic,其一个Topic为一类消息,每条消息必须指定一个Topic。所以需要基于Kafka创建指令,创建Kafka对应类别,便于后续对二进制日志数据进行存储。
S22:通过数据同步工具,将二进制日志数据从临时存储区,发送到Kafka对应类别中进行存储。
具体的,数据同步工具Canal包括Canal server和Canal client两部分。所以通过Canal server负责拉取数据库中的binlog数据存放在临时存储区中,然后通过Canalclient负责拉取临时存储区中存放的binlog数据,然后将binlog数据发送到相应的Kafka对应类别中进行存储。
本实施例中,基于Kafka创建指令,创建Kafka对应类别,并通过数据同步工具,将二进制日志数据从临时存储区,发送到Kafka对应类别中进行存储,实现将二进制日志数据从临时存储区转移到Kafka中,便于后续将二进制日志数据写入到数据仓库工具中,从而实现增量数据的同步。
请参阅图6,图6示出了步骤S4的一种具体实施方式,步骤S4中在数据仓库工具中,对二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据的具体实现过程,详叙如下:
S41:在数据仓库中,获取二进制日志数据的主关键字。
具体的,由于主关键字(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。所以,在本申请实施例中,将主关键字作为数据库中同一条记录的不同二进制日志数据的唯一标识;也即若是属于同一个主关键字的不同二进制日志数据,它们同属于数据库中同一条记录。
S42:针对同一主关键字的二进制日志数据,以获取最新时间戳的二进制日志数据,作为目标日志数据。
具体的,属于同一主关键字的二进制日志数据,在后续实现增量数据同步时,只要获取最新时间戳的二进制日志数据对应的数据库值即可,所以将最新时间戳的二进制日志数据,作为目标日志数据。
其中,目标日志数据是指同一主关键字的二进制日志数据中,最新时间戳的二进制日志数据;其为后续步骤中,获取数据库值,实现增量数据的获取。
其中,时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。在本申请实施例中,获取最新时间戳的二进制日志数据,作为目标日志数据,便于后续获取增量数据。
S43:删除同一主关键字中除去目标日志数据外的所有二进制日志数据。
具体的,为了减少数据冗余,将不需要的二进制日志数据从数据仓库工具中进行删除,以减少服务器的负载。
本实施例中,在数据仓库中,获取二进制日志数据的主关键字,针对同一主关键字的二进制日志数据,以获取最新时间戳的二进制日志数据,作为目标日志数据,并删除同一主关键字中除去目标日志数据外的所有二进制日志数据,实现获取目标日志数据,删除冗余数据,减少服务器负载,有利于提高增量数据同步的效率。
请参阅图7,图7示出了步骤S5的一种具体实施方式,步骤S5中在数据仓库工具中,对二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据的具体实现过程,详叙如下:
S51:当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据。
具体的,在到达预设时间时,将数据仓库工具中的所有目标日志数据,对应获取用户操作后的数据库值,并将其作为增量数据。
其中,增量数据是指目标日志数据对应的用户操作后的数据库值,也即其为每个预设时间内的,用户操作后所增加的数据库值。
S52:识别增量数据与数据仓库工具中历史数据的相同数据,作为重复数据。
具体的,由于增量数据中,可能与数据仓库工具中历史数据存在重复数据的可能,故为了减少数据对冗余,识别增量数据与数据仓库工具中历史数据的相同数据,作为重复数据。
S53:删除增量数据中的重复数据,得到目标增量数据,并将目标增量数据和历史数据作为同步增量数据。
具体的,删除增量数据中的重复数据,剩下的数据就是区别于数据仓库工具中历史数据的增量数据,将其作为目标增量数据。将目标增量数据和历史数据进行合并,就是在当前时间数据仓库工具中所有的数据,并将其作为同步增量数据,从而实现增量数据同步的目的。
本实施例中,当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据,识别增量数据与数据仓库工具中历史数据的相同数据,作为重复数据,并删除增量数据中的重复数据,得到目标增量数据,并将目标增量数据和历史数据作为同步增量数据,实现增量数据同步的目的,并减少了数据的冗余,有利于提高增量数据同步的效率。
需要强调的是,为进一步保证上述二进制日志数据的私密和安全性,上述二进制日志数据还可以存储于一区块链的节点中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
请参考图8,作为对上述图2所示方法的实现,本申请提供了一种基于Kafka的增量数据同步装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,本实施例的基于Kafka的增量数据同步装置包括:日志数据获取模块61、日志数据写入模块62、日志数据存储模块63、目标日志数据模块64及同步增量数据模块65,其中:
日志数据获取模块61,用于当监测到数据库事务发生改变时,获取数据库事务生成的二进制日志数据;
日志数据写入模块62,用于创建Kafka对应类别,将二进制日志数据写入Kafka对应类别中;
日志数据存储模块63,用于按照预设的时间间隔,将存储在Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;
目标日志数据模块64,用于在数据仓库工具中,对二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据;
同步增量数据模块65,用于当到达预设时间时,获取目标日志数据对应的用户操作后的数据库值,作为增量数据,并将增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。
进一步的,日志数据获取模块61包括:
数据库监听单元,用于基于数据同步工具,对数据库进行监听;
日志数据生成单元,用于当监测到数据库的数据库事务发生改变时,获取数据库事务生成的二进制日志数据;
存储区建立单元,用于在数据库中建立临时存储区,并将二进制日志数据写入临时存储区中。
进一步的,存储区建立单元包括:
配置参数读取子单元,用于读取数据库配置参数,其中,数据库配置参数包括:文件命名方式、文件切割方式、文件循环写入方式以及二进制日志数据的格式中的至少一种;
存储区存储子单元,用于在数据库中建立临时存储区,并根据数据库配置参数,将二进制日志数据写入临时存储区。
进一步的,日志数据写入模块62包括:
对应类别创建单元,用于基于Kafka创建指令,创建Kafka对应类别;
日志数据转移单元,用于通过数据同步工具,将二进制日志数据从临时存储区,发送到Kafka对应类别中进行存储。
进一步的,目标日志数据模块64包括:
主关键字获取单元,用于在数据仓库中,获取二进制日志数据的主关键字;
目标日志数据获取单元,用于针对同一主关键字的二进制日志数据,获取最新时间戳的二进制日志数据,作为目标日志数据;
日志数据删除单元,用于删除同一主关键字中除去目标日志数据外的所有二进制日志数据。
进一步的,同步增量数据模块65包括:
增量数据获取单元,用于当到达预设时间时,以获取目标日志数据对应的用户操作后的数据库值,作为增量数据;
重复数据识别单元,用于识别增量数据与数据仓库工具中历史数据的相同数据,作为重复数据;
增量数据合并单元,用于删除增量数据中的重复数据,得到目标增量数据,并将目标增量数据和历史数据作为同步增量数据。
需要强调的是,为进一步保证二进制日志数据的私密和安全性,上述二进制日志数据还可以存储于一区块链的节点中。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
计算机设备7包括通过系统总线相互通信连接存储器71、处理器72、网络接口73。需要指出的是,图中仅示出了具有三种组件存储器71、处理器72、网络接口73的计算机设备7,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
存储器71至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器71可以是计算机设备7的内部存储单元,例如该计算机设备7的硬盘或内存。在另一些实施例中,存储器71也可以是计算机设备7的外部存储设备,例如该计算机设备7上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器71还可以既包括计算机设备7的内部存储单元也包括其外部存储设备。本实施例中,存储器71通常用于存储安装于计算机设备7的操作系统和各类应用软件,例如基于Kafka的增量数据同步方法的程序代码等。此外,存储器71还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器72在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器72通常用于控制计算机设备7的总体操作。本实施例中,处理器72用于运行存储器71中存储的程序代码或者处理数据,例如运行一种基于Kafka的增量数据同步方法的程序代码。
网络接口73可包括无线网络接口或有线网络接口,该网络接口73通常用于在计算机设备7与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,计算机可读存储介质存储有服务器维护程序,服务器维护程序可被至少一个处理器执行,以使至少一个处理器执行如上述的一种基于Kafka的增量数据同步方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (7)

1.一种基于Kafka的增量数据同步方法,其特征在于,包括:
基于数据同步工具,对数据库进行监测;
当监测到所述数据库的数据库事务发生改变时,获取所述数据库事务生成的二进制日志数据;
读取数据库配置参数,其中,所述数据库配置参数包括:文件命名方式、文件切割方式、文件循环写入方式以及二进制日志数据的格式中的至少一种;
在所述数据库中建立临时存储区,并根据所述数据库配置参数创建文件,并将所述二进制日志数据写入所创建的文件中,以将所述二进制日志数据写入所述临时存储区;
创建Kafka对应类别,将所述二进制日志数据写入所述Kafka对应类别中;
按照预设的时间间隔,将存储在所述Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;
在所述数据仓库工具中,对所述二进制日志数据执行数据去重还原处理,以获取最新时间戳的二进制日志数据,作为目标日志数据;
当到达预设时间时,获取所述目标日志数据对应的用户操作后的数据库值,作为增量数据,并将所述增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。
2.根据权利要求1所述的基于Kafka的增量数据同步方法,其特征在于,所述创建Kafka对应类别,将所述二进制日志数据写入所述Kafka对应类别中,包括:
基于Kafka创建指令,创建所述Kafka对应类别;
通过所述数据同步工具,将所述二进制日志数据从所述临时存储区,发送到所述Kafka对应类别中进行存储。
3.根据权利要求1所述的基于Kafka的增量数据同步方法,其特征在于,所述在所述数据仓库工具中,对所述二进制日志数据执行数据去重还原处理,以获取最新时间戳的二进制日志数据,作为目标日志数据,包括:
在所述数据仓库中,获取所述二进制日志数据的主关键字;
针对同一主关键字的二进制日志数据,获取最新时间戳的二进制日志数据,作为目标日志数据;
删除同一主关键字中除去所述目标日志数据外的所有二进制日志数据。
4.根据权利要求1至3任一项所述的基于Kafka的增量数据同步方法,其特征在于,所述当到达预设时间时,获取所述目标日志数据对应的用户操作后的数据库值,作为增量数据,
并将所述增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据,包括:
当到达预设时间时,获取所述目标日志数据对应的用户操作后的数据库值,作为所述增量数据;
识别所述增量数据与所述数据仓库工具中历史数据的相同数据,作为重复数据;删除所述增量数据中的所述重复数据,得到目标增量数据,并将所述目标增量数据和所述历史数据作为所述同步增量数据。
5.一种基于Kafka的增量数据同步装置,其特征在于,包括:
数据库监听单元,用于基于数据同步工具,对数据库进行监测;
日志数据生成单元,用于当监测到所述数据库的数据库事务发生改变时,获取所述数据库事务生成的二进制日志数据;
配置参数读取子单元,用于读取数据库配置参数,其中,所述数据库配置参数包括:文件命名方式、文件切割方式、文件循环写入方式以及二进制日志数据的格式中的至少一种;
存储区存储子单元,用于在所述数据库中建立临时存储区,并根据所述数据库配置参数创建文件,并将所述二进制日志数据写入所创建的文件中,以将所述二进制日志数据写入所述临时存储区;
日志数据写入模块,用于创建Kafka对应类别,将所述二进制日志数据写入所述Kafka对应类别中;
日志数据存储模块,用于按照预设的时间间隔,将存储在所述Kafka对应类别中的二进制日志数据批量写入到数据仓库工具中;
目标日志数据模块,用于在所述数据仓库工具中,对所述二进制日志数据执行数据去重还原处理,获取最新时间戳的二进制日志数据,作为目标日志数据;
同步增量数据模块,用于当到达预设时间时,获取所述目标日志数据对应的用户操作后的数据库值,作为增量数据,并将所述增量数据与数据仓库工具中历史数据进行合并,得到同步增量数据。
6.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的基于Kafka的增量数据同步方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的基于Kafka的增量数据同步方法。
CN202011483773.1A 2020-12-16 2020-12-16 基于Kafka的增量数据同步方法、装置、设备及介质 Active CN112507027B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011483773.1A CN112507027B (zh) 2020-12-16 2020-12-16 基于Kafka的增量数据同步方法、装置、设备及介质
PCT/CN2021/090562 WO2022126974A1 (zh) 2020-12-16 2021-04-28 基于Kafka的增量数据同步方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011483773.1A CN112507027B (zh) 2020-12-16 2020-12-16 基于Kafka的增量数据同步方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN112507027A CN112507027A (zh) 2021-03-16
CN112507027B true CN112507027B (zh) 2024-04-16

Family

ID=74972429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011483773.1A Active CN112507027B (zh) 2020-12-16 2020-12-16 基于Kafka的增量数据同步方法、装置、设备及介质

Country Status (2)

Country Link
CN (1) CN112507027B (zh)
WO (1) WO2022126974A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112507027B (zh) * 2020-12-16 2024-04-16 平安科技(深圳)有限公司 基于Kafka的增量数据同步方法、装置、设备及介质
CN113468170A (zh) * 2021-06-02 2021-10-01 上海赛可出行科技服务有限公司 一种自动化实现数据实时同步的系统
CN113282555A (zh) * 2021-06-18 2021-08-20 北京奇艺世纪科技有限公司 一种数据处理方法、装置、设备及存储介质
CN113671909A (zh) * 2021-06-30 2021-11-19 云南昆钢电子信息科技有限公司 一种钢铁工控设备安全监测系统和方法
CN113742420B (zh) * 2021-08-09 2024-02-02 广州市易工品科技有限公司 数据同步方法和装置
CN113806372B (zh) * 2021-09-29 2024-02-06 中国平安人寿保险股份有限公司 新数据信息构建方法、装置、计算机设备及存储介质
CN114328750A (zh) * 2021-12-31 2022-04-12 北京发现角科技有限公司 一种将业务数据同步ods层的方法及装置
CN115017223B (zh) * 2022-08-04 2022-10-25 成都运荔枝科技有限公司 一种支持大数据量导入导出的系统
CN115794539B (zh) * 2022-09-20 2023-09-01 北京世纪国源科技股份有限公司 时空数据api服务的日志增量式监控方法、装置及设备
CN115470302B (zh) * 2022-10-25 2023-05-09 以萨技术股份有限公司 一种基于canal的数据库双向同步方法、介质及设备
CN115470217B (zh) * 2022-11-14 2023-04-07 云筑信息科技(成都)有限公司 一种实时解决数仓模型变化响应问题的方法
CN115934846A (zh) * 2023-02-06 2023-04-07 北京仁科互动网络技术有限公司 列式储存数据库clickhouse的数据同步方法
CN117453730B (zh) * 2023-12-21 2024-03-08 深圳海智创科技有限公司 一种数据查询方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170768A (zh) * 2017-12-25 2018-06-15 腾讯科技(深圳)有限公司 数据库同步方法、装置及可读介质
CN110297866A (zh) * 2019-05-20 2019-10-01 平安普惠企业管理有限公司 基于日志分析的数据同步方法及数据同步装置
CN110990365A (zh) * 2019-12-03 2020-04-10 北京奇艺世纪科技有限公司 一种数据同步方法、装置、服务器及存储介质
CN112000737A (zh) * 2020-08-14 2020-11-27 苏州浪潮智能科技有限公司 基于多云管理的数据同步方法、系统、终端及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510270B2 (en) * 2010-07-27 2013-08-13 Oracle International Corporation MYSQL database heterogeneous log based replication
US8543581B2 (en) * 2011-04-04 2013-09-24 Microsoft Corporation Synchronizing records between databases
CN104967658B (zh) * 2015-05-08 2018-11-30 成都品果科技有限公司 一种多终端设备上的数据同步方法
CN112507027B (zh) * 2020-12-16 2024-04-16 平安科技(深圳)有限公司 基于Kafka的增量数据同步方法、装置、设备及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108170768A (zh) * 2017-12-25 2018-06-15 腾讯科技(深圳)有限公司 数据库同步方法、装置及可读介质
CN110297866A (zh) * 2019-05-20 2019-10-01 平安普惠企业管理有限公司 基于日志分析的数据同步方法及数据同步装置
CN110990365A (zh) * 2019-12-03 2020-04-10 北京奇艺世纪科技有限公司 一种数据同步方法、装置、服务器及存储介质
CN112000737A (zh) * 2020-08-14 2020-11-27 苏州浪潮智能科技有限公司 基于多云管理的数据同步方法、系统、终端及存储介质

Also Published As

Publication number Publication date
WO2022126974A1 (zh) 2022-06-23
CN112507027A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
CN112507027B (zh) 基于Kafka的增量数据同步方法、装置、设备及介质
CN111666490A (zh) 基于kafka的信息推送方法、装置、设备及存储介质
CN111405032A (zh) 一种工业物联网通用云平台
CN113254445B (zh) 实时数据存储方法、装置、计算机设备及存储介质
CN112199442B (zh) 分布式批量下载文件方法、装置、计算机设备及存储介质
CN113282611B (zh) 一种流数据同步的方法、装置、计算机设备及存储介质
CN112632071A (zh) 数据库主键id生成方法、装置、设备及存储介质
CN112948486A (zh) 批量数据同步方法、系统及电子设备
CN111737227A (zh) 数据修改方法及系统
CN112860662A (zh) 数据血缘关系建立方法、装置、计算机设备及存储介质
CN113010542A (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN117251228A (zh) 功能管理方法、装置、计算机设备及存储介质
CN116956326A (zh) 权限数据的处理方法、装置、计算机设备及存储介质
CN114626352B (zh) 报表自动化生成方法、装置、计算机设备及存储介质
CN115455020A (zh) 一种增量数据同步方法、装置、计算机设备及存储介质
CN113836235B (zh) 基于数据中台的数据处理方法及其相关设备
CN115687826A (zh) 页面刷新方法、装置、计算机设备及存储介质
CN114968725A (zh) 任务依赖关系校正方法、装置、计算机设备及存储介质
CN110765610B (zh) Pdm集成方法、装置、计算机设备及存储介质
CN117390119A (zh) 任务处理方法、装置、计算机设备及存储介质
CN115168472A (zh) 基于Flink的实时报表生成方法与系统
CN116611936A (zh) 数据分析方法、装置、计算机设备及存储介质
CN117874137A (zh) 数据处理方法、装置、计算机设备及存储介质
CN116308846A (zh) 财务月结可视化工作方法与系统
CN117785832A (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