CN112307037A - 一种数据同步方法和装置 - Google Patents
一种数据同步方法和装置 Download PDFInfo
- Publication number
- CN112307037A CN112307037A CN201910683048.XA CN201910683048A CN112307037A CN 112307037 A CN112307037 A CN 112307037A CN 201910683048 A CN201910683048 A CN 201910683048A CN 112307037 A CN112307037 A CN 112307037A
- Authority
- CN
- China
- Prior art keywords
- queue
- data
- incremental data
- log
- database
- 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.)
- Granted
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。该实施方式整体拥有较为清晰的架构,通过在数据同步过程中可并行实施的阶段都采用表级别的并发处理方式,大大提高了整体的并发度,有效提高了数据同步的效率,减少了数据同步时间,同时保证了数据同步的一致性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据同步方法和装置。
背景技术
数据库增量订阅和消费中间件,在实际应用中,有比较广泛的应用场景,比如用于跨机房数据同步,减少数据库同步的延时;将mysql数据库的数据异构成ES(ElasticSearch,搜索引擎)数据,提高查询性能等。
以Canal为例,采用多线程分工合作、多阶段处理的模式。为保证同步后数据的一致性,Canal采用了比较保守的策略:利用binlog串行进行数据拉取、解析、存储和消费,以保证数据的一致性。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
对于数据的拉取、解析、存储和消费等步骤,执行具有顺序性,每一个步骤都需在前一个步骤完成之后才执行,且每个步骤都是基于单线程运行的,导致整体运行效率较低、数据同步时间较长。
发明内容
有鉴于此,本发明实施例提供一种数据同步方法和装置,至少能够解决现有技术中无法进一步提高数据同步性能、以及同步时间较长的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据同步方法,包括:
监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
可选的,所述从所述第一数据库中获取更新后的日志文件,包括:
获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
可选的,所述将所述增量数据写入与所述表名称相对应的消息队列中,包括:
确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
可选的,所述确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中,包括:
确定与所述表名称相对应的表队列集群;
根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
将所述增量数据写入所确定的表队列中。
可选的,所述从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中,包括:
确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
可选的,在所述将所述增量数据写入与所述表名称相对应的消息队列中之后,还包括:
根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
为实现上述目的,根据本发明实施例的另一方面,提供了一种数据同步装置,包括:
日志获取模块,用于监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
数据分发模块,用于解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
数据写入模块,用于通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
可选的,所述日志获取模块,用于:
获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
可选的,所述数据分发模块,用于:
确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
可选的,所述数据分发模块,用于:
确定与所述表名称相对应的表队列集群;
根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
将所述增量数据写入所确定的表队列中。
可选的,所述数据分发模块,用于:
确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
可选的,还包括位点存储模块,用于:
根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
为实现上述目的,根据本发明实施例的再一方面,提供了一种数据同步电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的数据同步方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的数据同步方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:整体拥有清晰的架构,通过在数据同步过程中可并行实施的阶段都采用表级别和序号级别的并发处理方式,大大提高了整体的并发度,有效提高了数据同步的效率,减少了数据同步时间,同时保证了数据同步的一致性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种数据同步方法的主要流程示意图;
图2是根据本发明实施例的一种可选的数据同步方法的流程示意图;
图3为多个Dump线程拉取Binglog子日志的方式示意图;
图4是根据本发明实施例的另一种可选的数据同步方法的流程示意图;
图5是根据本发明实施例的又一种可选的数据同步方法的流程示意图;
图6为不同CannalMQStarter线程处理不同表队列数据的示意图;
图7是根据本发明实施例的再一种可选的数据同步方法的流程示意图;
图8是根据本发明实施例的一具体地数据同步方法的流程示意图;
图9是根据本发明实施例的一种数据同步装置的主要模块示意图;
图10是本发明实施例可以应用于其中的示例性系统架构图;
图11是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,本发明实施例适用于增量数据订阅与消费组件,例如Debezium、Canal,本发明主要以Canal为例进行说明。
本发明主要针对于增量数据的主从同步。增量数据是和历史数据相对应的,以当前时刻为例,增量数据是指未来新增、修改或删除的数据,而历史数据是数据库中原来就有的,所以数据同步只能同步当前时刻增量的数据,但对于历史数据则无法同步。
对于本发明所涉及的词语,作解释如下:
DDL(data definitionlanguage,数据定义语言):是SQL语言的组成部分,有SHOW、ALTER、CREATE、DROP等,主要是用于对数据库实例、表、列等数据库对象的定义和操作。
DML(data manipulation language,数据操纵语言):SQL的分类之一,命令使用户能够查询数据库以及操作已有数据库中的数据的计算机语言。
参见图1,示出的是本发明实施例提供的一种数据同步方法的主要流程图,包括如下步骤:
S101:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
S102:解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
S103:通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
上述实施方式中,对于步骤S101,日志文件通常用于记录用户对数据库更新的语句信息,例如更改数据库表和更改内容的SQL(Structured Query Language,结构化查询语言)语句都会记录到binlog中。
Canal中的Binlog为二进制格式的日志文件,主要用于数据库的主从同步及数据的增量恢复,本发明实施例可视为是一种增量数据的主从同步。
以Canal为例,Canal中的Binlog导出线程,通过模拟数据库主从节点之间的交互协议获取Binlog日志。以MySQL数据库为例:
1)Canal将自身伪装为MySQL的从节点Slave,以向MySQL Master主节点发送Dump协议;
2)MySQL Master接收该协议,开始推送Binlog日志至Slave(即Canal)。
对于步骤S102,组件解析日志文件得到增量数据,之后进行数据存储与消费,以供下游消费端使用。
有些场景下,要求日志文件为固定格式才可以进行解析。例如,Canal解析Binlog日志时,要求日志的模式为Row模式。而通常MySQL中的Binlog日志默认为Statement模式,因此需要将其修改为Row模式,以便解析得到增量数据。
不同增量数据中都存有不同的表名称,表名称主要存储于其DML中。
同样以Canal中的Binlog为例,对于Row模式的Binlog日志没有记录DML中的字段信息,即DML是不可直接操作的,所以需要依赖TableMeta记录的表结构进行完整DML构造:
1)利用Binlog简单解析线程将Binlog转换为DDL,并维护至TableMeta中,以保证表结构的一致性。
其中,TableMeta主要负责做跨机房之间的数据记录同步,需要获取数据库的table meta信息,进而构造对应的SQL。在TableMeta信息分析时,需要获取table的字段、主键、需要支持的视图、同义词等表查询。
表结构主要应用于数据库管理与编程方面,通常以库、表、字段这几个层级来组织数据。因此在数据库中,一个表的字段、类型、主键、外键、索引等基本属性,组成了数据库的表结构。
2)利用Binlog深度解析线程解析binlog日志中的DML,结合TableMeta维护的表结构解析完成SQL操作。
后续数据分发时,可以依赖于增量数据DML中的表名称,将其分发至与该表名称相对应的消息队列(例如kafka)中,以实现多个数据之间的并行处理。例如,订单数据-订单消息队列、商品数据-商品消息队列。
当与同一表名称相对应的消息队列数量为多个时,需依赖一定规则确定数据写入的消息队列,其具体方式参见后续图4~图6所示描述。
进一步的,在写入消息队列之前,可以对增量数据进行过滤和加工,例如数据的开头和结束TRANSACTION_CONTEXT_EVENT、或者不需要同步的部分,以此缩短数据写入的长度,提高数据写入速度。
通过上述方式,保证了相同表名称的增量数据可以落入到同一类消息队列中,同时保证了数据分发的先后顺序。
对于步骤S103,队列消费线程,负责将消息队列中的增量数据写入第二数据库(目标数据库)中,从而完成源数据库至目标数据库之间的数据同步,例如Canal将MySQL中的数据同步至ES中。
可以对每个消息队列设置一个或多个队列消费线程,例如,kafkaConsumer线程1、kafkaConsumer2和kafkaConsumer3线程负责处理kafka1中的数据,这三个线程可以采用轮询方式进行数据同步,以均衡各线程的工作量。
上述实施例所提供的方法,在原数据同步流程中可并行执行的环节设置多线程并发处理方式,以对Binglog同步的数据做到表级别的并发处理,以此提高数据同步的性能。
参见图2,示出了根据本发明实施例的一种可选的数据同步方法流程示意图,包括如下步骤:
S201:监听第一数据库,以在所述第一数据库中的日志发生变化时,确定所述第一数据库中更新后的日志文件;
S202:获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
S203:利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件;
S204:解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
S205:通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
上述实施方式中,对于步骤S204~S205可参见图1所示描述,在此不再赘述。
上述实施方式中,对于步骤S201~S203,现有方式日志导出线程为单线程,因此获取日志文件的效率较低。为提高数据获取效率,本发明在数据抓取阶段采用多线程并行处理方式进行日志拉取。
由于采用了多个线程并行进行日志拉取,因此对于源日志文件,需要按照线程数量进行切分。实际操作中可以将源日志文件分裂为多个子日志文件,也可以仅分区,表示源日志文件中被不同线程拉取的部分即可。
日志导出线程分为主线程和子线程:
1)主线程与子线程的功能相互独立;主线程仅用以对源数据库中的日志文件进行切分,子线程仅用以拉取切分后的子日志文件;
2)主线程包含子线程的功能,既可日志切分又可拉取日志:
①子线程与主线程功能一致,在需要切分日志时,随机/按序选择一个线程作为主线程,该主线程可以仅用以日志切分,也可以在日志切分完毕后进行子日志拉取操作;
在主线程宕机时,可以随机/按序在剩余线程中选择一个作为主线程进行线程替换,以保证日志切分的继续进行。
②子线程与主线程功能不一致,仅用以拉取切分后的Binlog子日志。
由此可见,在对子日志切分数量相同的情况下,方式2)所需Binlog导出线程的总数量比相对于方式1)少一个。但为进行线程功能区分,本发明主要选用方式1)进行。
日志导出主线程对日志文件的切分,可以为平均切分,也可以按照一定比例切分,例如35%、35%、30%。但为保证子线程对子日志拉取的完全同步,主要选用平均切分方式。
例如参见图3所示,有三个子线程Dump线程1、Dump线程2和Dump线程3,以及相应Binglog的三段日志,所得日志拉取方式有:
1)子线程有严格排序。例如1-2-3,之后分别拉取Binglog的第一段、第二段和第三段日志;或者1-3-2,分别拉取Binglog的第一段、第三段和第二段日志;
2)仅考虑Binglog子日志之间的排序,对于子线程之间的排序不做考虑;例如对于Binglog第一段日志,可以Dump线程1拉取,也可以Dump线程2拉取,还是Dump线程3拉取,具有拉取随机性。
由上可知,对于拉取方式1),Binglog子日志的排序是与子线程排序相对应的,具有一定的顺序严格性,以避免子日志顺序混乱,出现日志组合错误的情况。
后续Binglog日志的生成,要求Binglog子日志需串行写入,因此Binglog子日志之间的排序是必不可少的。有鉴于此,本发明主要采用拉取方式2),仅考虑子日志之间的排序,有效降低了操作执行的复杂度,同时保证了整个拉取过程的并发以及子日志写入的顺序性。
另外,在java中可以用到CountDownLacth工具保证线程执行的同步性。CountDownLatch属于同步辅助类,被用以同步一个或多个任务,强制它们等待由其它任务执行的一组操作完成,本质是一个“共享锁”。
上述实施例所提供的方法,在第一步数据抓取阶段做到并行处理,以将源数据库中原来较大的日志文件切分为多个较小子日志文件进行同步抓取,以此提高日志文件的获取效率,进而为后续数据同步时间的减少提供了基础。
参见图4,示出了根据本发明实施例的另一种可选的数据同步方法流程示意图,包括如下步骤:
S401:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
S402:解析所述日志文件得到增量数据,确定与所述增量数据中表名称相对应的表队列,将所述增量数据写入所述表队列中;
S403:按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中;
S404:通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
上述实施方式中,对于步骤S401、S404可参见图1所示描述,在此不再赘述。
上述实施方式中,对于步骤S402,本发明中的表主要对应于表名称,而非事件类型。表队列可以是订单表、商品表、用户表、汽车表、交通管理表、生物表、器材表等,通过数据写入线程(例如SinkStore线程)进行数据写入,以在不同表队列中存储不同类型的增量数据。
实际操作中,表队列可以是Disruptor环形队列或BlockingQueue队列。由于Disruptor适用于对时间高度敏感的多线程应用,相比BlockingQueue效率要高很多,因此本发明主要选用Disruptor环形队列作为表队列。
对应于同一表名称的表队列数量可以是一个或多个,且不同场景中,所设置的表队列数量可能也不一致,例如场景1-2个订单表、场景2-3个订单表。
1)仅为一个,则将增量数据直接写入该唯一表队列中,例如订单数据-订单表;
2)为多个所组成的表队列集群,需根据增量数据的特征信息进行划分
①物品名称,订单表-订单名称,物品表-物品名称,用户表-用户名称
②物品编号,订单表-订单号,物品表-物品编号,用户表-用户身份证号或者编号
③物品属性,订单表-是否加急,物品表-是否易碎、是否生鲜类,用户表-用户年龄、性别、身高等。
通过对不同增量信息特征的分析,可以实现表队列和增量数据的精细划分。虽需要的表队列数量较多,但对于高并发场景中,可以实现数据的快速分发。
对于步骤S403,消息队列实际与表队列相对应,例如订单表-kafka1,用户表-kafka2。
在表队列与消息队列之间存有另一种队列消费线程,例如CanalMQStarter线程,负责循环消费表队列中的数据,并将数据存放至消息队列中。以kafka为例,由于kafka的高性能、持久化机制,可以保证数据的不丢失,因此将数据写入kafka队列之后,就认为数据已经安全消费了。
这里的数据消费逻辑,包含了表队列中数据的读取和调用消息队列客户端的API(Application Programming Interface,应用程序接口)将数据持久化至消息队列中。
另外,队列消费线程从表队列中提取增量数据的机制可以为:
1)队列中的数据量有限。当数据量超限时才将其存放至消息队列中,例如超出100个,但在100个之前,数据未消费,消息队列处于等待状态;
2)执行具有一定周期。例如,1s拉取一个,但若表队列中无数据,可以同样执行数据拉取操作,但所拉取的数据为空;
3)按照数据排序进行顺序拉取。例如,订单数据写入订单表后,在该订单数据之前已有20个订单数据待提取。
上述实施例所提供的方法,在将增量数据写入消息队列之前,存有对数据消费有一定缓冲作用的表队列。表队列按照表名称进行分类设置,以实现增量数据的有效分类,保证相同表名称的增量数据落入到同一消息队列中,保证数据写入的有效执行。
参见图5,示出了根据本发明实施例的又一种可选的数据同步方法流程示意图,包括如下步骤:
S501:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
S502:解析所述日志文件得到增量数据,确定与所述增量数据中表名称相对应的表队列,将所述增量数据写入所述表队列中;
S503:按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
S504:获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
S505:从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中;
S506:通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
上述实施方式中,对于步骤S501、S506可参见图1所示描述,对于步骤S502和S505可参见图4所示描述,在此不再赘述。
上述实施方式中,对于步骤S503,不同业务所设置的表名称不同。同样针对不同表队列,所设置的消息队列数量也可以不一样,例如,订单表1-5个消息队列、商品表2-3个消息队列。
为方便管理,可以将一个或多个消息队列与同一个表队列进行关联,形成与各表队列相关联的各消息队列集群。例如,订单表1-kafka集群1-kafka1、kafka2、kafka3、kafka4和kafka5,总共5个kafka。
对于步骤S504,增量数据在日志文件中存储时有相应的序号,例如第20行、第30列。
以行为例,对于原日志文件,一旦某一行中的数据发生变化,该行数据即为增量数据。例如,第20行数据有修改操作;在第20行插入数据,原第20行数据顺移至后一行,因此第20行以及行之后数据均为增量数据。
因此,解析日志文件所得到的增量数据,除了包含表名称之外,还可以包括其序号。
以序号第20行为例,确定消息队列集群中增量数据所写入的消息队列方式,可以为:
1)集群中消息队列数量为多个
以订单表1为例,5个消息队列对应的余数分别为0/1/2/3/4。用行号20对5取模(即,作余数)得到0,因此将该增量数据写入余数0对应的消息队列中。
2)集群中消息队列数量仅为一个
可以直接将增量数据写入该唯一消息队列中,也可以按照作余数方式,将其写入余数0对应的消息队列中。
通过该种方式,保证了表名称一致、行号相同的增量数据,可以写入同一消息队列中。
除了上述通过序号确定消息队列之外,还可以有其他方式:
1)订单表-订单号
①若某一消息队列中存在与该订单号相对应的数据,则将增量数据写入该消息队列中;
②若所有消息队列中均查询不存在该订单号,则将该增量数据写入当前数据量的消息队列中,实现数据量的均衡;或者随机选择。
2)商品表-商品编号,同上述方式1);
3)用户表-用户名称、用户性别、用户身份证号码或其结合
①用户身份证号码,同上述方式1)
②用户性别,例如男-kafka1、女-kafka2、未填-kafka3;
③用户名称(真实名称或昵称)可能存在重名的情况,需与用户性别和/或用户身份证号码进行结合;
4)汽车表-车牌号,同上述方式1)。
例如,参见图6,CannalMQStarter线程1、2、3分别处理订单表、商品表和用户表中的数据,每个表对应有3个分片,总共三个线程。
每个线程根据所处理数据的序号对消息队列的数量进行取模,以将数据存放至与表对应的kafka topic分片中,实现同一表中的不同行数据的并发处理、以及同一行数据的串行处理,保证了数据的一致性。
kafka对外使用topic的概念,对于kafka topic中分片数量的获取,可以通过其API接口进行,并存储在kafka集群中。
kafka中的数据最终也是存储到磁盘上,因此除了kafka之外,还可以是其它永久性存储,比如数据库。基于性能考虑,本发明主要选用kafka。
上述实施例所提供的方法,依据序号或标识信息进行增量数据分发,以将同一序号(相同表名称)或同一标识的增量数据落入同一消息队列中,保证了多个增量数据的并发处理以及分发的先后顺序,实现数据的一致性和更新迭代管理。
参见图7,示出了根据本发明实施例的再一种可选的数据同步方法流程示意图,包括如下步骤:
S701:监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
S702:解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
S703:根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;
S704:提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
上述实施方式中,对于步骤S701和S702可参见上述图1、图2、图4和图5所示描述,在此不再赘述。
上述实施方式中,对于步骤S703,消费位点记录了日志文件中真实已经消费过的位置,例如行号、列号。
在队列消费线程将增量数据写入消息队列之后,会将日志文件的消费位点写入位点队列中,例如一个新的disruptor环形队列。
例如,Binlog日志中每一条数据都设有一个序号,从1~13333。实际同步过程中会有延迟,只能同步到13330,所以需记录13330这个位置信息。若同步过程中Canal出现宕机情况,可以在Canal重启后从13330处继续进行数据同步操作,保证同步数据不会出现遗漏或重复的情况。
需要说明的是,位点队列与所有队列消费线程相连接,每个队列消费线程在数据消费完成之后会将最新的binlog消费位点写入位点队列中。位点队列仅用于记录日志文件中数据消费的位置,对于数据类型并不做考虑。
对于步骤S704,同时设有一个持久化的位点同步线程,负责顺序性将位点队列中的最新位点写入位点记录中,例如zookeeper、Eureka。zookeeper作为分布式存储容器,系统故障后其它节点可以从zookeeper中获取最后提交的位点继续进行数据同步处理。
zookeeper中仅记录最新的消费位点。通过环形队列向前遍历,例如当前消费位点为18,循环寻找相连的第19位点数,若找到则结束遍历,并将该19作为最新消费位点写入zookeeper中,但若第一轮没有找到相连位点则继续从头开始寻找。
上述实施例所提供的方法,将所有队列消费线程与位点队列相连接,保证所有数据消费完后都会将消费位点存储至位点队列中,实现对日志文件中已消费的位点掌控。从位点队列中提取最新消费位点,相较于现有技术,能够保证后续重启时数据继续同步的不重不漏,提高数据同步的完整性。
参见图8,示出了以Canal为例进行的数据同步方法流程示意图,包括如下步骤:
S801:监听MySQL数据库,以在MySQL中的日志发生变化时,确定MySQL中更新后的Binlog日志;
S802:根据Dump子线程的数量,利用Dump主线程对Binlog日志进行切分,得到多个Binlog子日志;
S803:利用各Dump子线程对各Binlog子日志进行拉取,按照各Binlog子日志之间的排序,对所拉取到的Binlog子日志进行排列组合,得到Binlog日志;
S804:利用解析线程对Binlog日志进行解析,得到增量数据;
S805:根据增量数据中的表名称,确定与表名称相对应的disruptor环形队列集群;
S806:根据增量数据中的特征信息,确定disruptor环形队列集群中与特征信息相对应的disruptor环形队列;其中,特征信息为物品编号、物品名称、物品属性中的至少一种;
S807:利用SinkStore线程,将增量数据写入所确定的disruptor环形队列中;
S808:确定与disruptor环形队列相关联的kafka集群,获取kafka集群中kafka的数量;
S809:获取增量数据中的序号,用序号对kafka的数量作余数,确定kafka集群中与余数相对应的kafka;其中,序号为增量数据在Binlog日志中所处位置的号码;
S810:按照预定周期、或当disruptor环形队列中的数据量超出预定数量阈值时,利用CanalMQStarter线程从disruptor环形队列中提取增量数据以写入所确定的kafka中;
S811:通过与kafka相对应的kafkaConsumer线程,将kafka中的增量数据写入ES中;
S812:利用CanalMQStarter线程,将增量数据中的序号作为Binlog日志中的消费位点,并存储至新disruptor环形队列中进行消费位点更新;
S813:利用持久化位点线程,提取新disruptor环形队列中的最新消费位点,以将最新消费位点写入Zookeeper中进行最新消费位点更新。
其中,步骤S804中的解析线程又包括SimpleParese线程和DeepParser线程池,用以分别解析增量数据中的DDL和DML。
本发明实施例所提供的方法,整体拥有较为清晰的架构,通过在数据同步过程中可并行实施的阶段都采用表级别和序号级别的并发处理方式,大大提高了整体的并发度,有效提高了数据同步的效率,减少了数据同步时间,同时保证了数据同步的一致性。
参见图9,示出了本发明实施例提供的一种数据同步装置900的主要模块示意图,包括:
日志获取模块901,用于监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
数据分发模块902,用于解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
数据写入模块903,用于通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
本发明实施装置中,所述日志获取模块901,用于:
获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
本发明实施装置中,所述数据分发模块902,用于:
确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
本发明实施装置中,所述数据分发模块902,用于:
确定与所述表名称相对应的表队列集群;
根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
将所述增量数据写入所确定的表队列中。
本发明实施装置中,所述数据分发模块902,用于:
确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
本发明实施装置还包括位点存储模块904(图中未标出),用于:
根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
图10示出了可以应用本发明实施例的示例性系统架构1000。
如图10所示,系统架构1000可以包括终端设备1001、1002、1003,网络1004和服务器1005(仅仅是示例)。网络1004用以在终端设备1001、1002、1003和服务器1005之间提供通信链路的介质。网络1004可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1001、1002、1003通过网络1004与服务器1005交互,以接收或发送消息等。终端设备1001、1002、1003上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备1001、1002、1003可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器1005可以是提供各种服务的服务器,例如对用户利用终端设备1001、1002、1003所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据同步方法一般由服务器1005执行,相应地,数据同步装置一般设置于服务器1005中。
应该理解,图10中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图11,其示出了适于用来实现本发明实施例的终端设备的计算机系统1100的结构示意图。图11示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理单元(CPU)1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有系统1100操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括日志获取模块、数据分发模块、数据写入模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据分发模块还可以被描述为“嫁女数据分发至不同消息队列的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
根据本发明实施例的技术方案,整体拥有较为清晰的架构,通过在数据同步过程中可并行实施的阶段都采用表级别和序号级别的并发处理方式,大大提高了整体的并发度,有效提高了数据同步的效率,减少了数据同步时间,同时保证了数据同步的一致性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (14)
1.一种数据同步方法,其特征在于,包括:
监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
2.根据权利要求1所述的方法,其特征在于,所述从所述第一数据库中获取更新后的日志文件,包括:
获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
3.根据权利要求1所述的方法,所述将所述增量数据写入与所述表名称相对应的消息队列中,包括:
确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
4.根据权利要求3所述的方法,其特征在于,所述确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中,包括:
确定与所述表名称相对应的表队列集群;
根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
将所述增量数据写入所确定的表队列中。
5.根据权利要求3或4所述的方法,其特征在于,所述从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中,包括:
确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
6.根据权利要求1所述的方法,其特征在于,在所述将所述增量数据写入与所述表名称相对应的消息队列中之后,还包括:
根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
7.一种数据同步装置,其特征在于,包括:
日志获取模块,用于监听第一数据库,以在所述第一数据库中的日志发生变化时,从所述第一数据库中获取更新后的日志文件;
数据分发模块,用于解析所述日志文件得到增量数据,根据所述增量数据中的表名称,将所述增量数据写入与所述表名称相对应的消息队列中;其中,所述增量数据为新增、修改或删除的数据;
数据写入模块,用于通过与所述消息队列相对应的队列消费线程,将所述消息队列中的所述增量数据写入第二数据库中。
8.根据权利要求7所述的装置,其特征在于,所述日志获取模块,用于:
获取日志导出子线程的数量,以在所述第一数据库中,利用日志导出主线程对所述日志文件进行切分,得到与所述数量相对应的多个子日志文件;
利用各日志导出子线程对各子日志文件进行拉取,按照各子日志文件之间的排序,对所拉取到的子日志文件进行排列组合,得到所述日志文件。
9.根据权利要求7所述的装置,所述数据分发模块,用于:
确定与所述表名称相对应的表队列,将所述增量数据写入所述表队列中;
按照预定周期、或当所述表队列中的数据量超出预定数量阈值时,从所述表队列中提取所述增量数据,以将所述增量数据写入与所述表队列相关联的消息队列中。
10.根据权利要求9所述的装置,其特征在于,所述数据分发模块,用于:
确定与所述表名称相对应的表队列集群;
根据所述增量数据中的特征信息,确定所述表队列集群中与所述特征信息相对应的表队列;其中,所述特征信息为物品编号、物品名称、物品属性中的至少一种;
将所述增量数据写入所确定的表队列中。
11.根据权利要求9或10所述的装置,其特征在于,所述数据分发模块,用于:
确定与所述表队列相关联的消息队列集群,获取所述消息队列集群中消息队列的数量;
获取所述增量数据中的序号,用所述序号对所述消息队列的数量作余数,确定所述消息队列集群中与所述余数相对应的消息队列;其中,所述序号为所述增量数据在所述日志文件中所处位置的号码;
从所述表队列中提取所述增量数据,以将所述增量数据写入所确定的消息队列中。
12.根据权利要求7所述的装置,其特征在于,还包括位点存储模块,用于:
根据所述增量数据中的序号,确定所述日志文件中的消费位点,存储所述消费位点至位点队列中进行消费位点更新;以及
提取所述位点队列中的最新消费位点,以将所述最新消费位点写入位点记录中进行最新消费位点更新。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910683048.XA CN112307037B (zh) | 2019-07-26 | 2019-07-26 | 一种数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910683048.XA CN112307037B (zh) | 2019-07-26 | 2019-07-26 | 一种数据同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112307037A true CN112307037A (zh) | 2021-02-02 |
CN112307037B CN112307037B (zh) | 2023-09-22 |
Family
ID=74329818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910683048.XA Active CN112307037B (zh) | 2019-07-26 | 2019-07-26 | 一种数据同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112307037B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113095874A (zh) * | 2021-03-31 | 2021-07-09 | 北京沃东天骏信息技术有限公司 | 一种物料增量处理方法、装置、设备和存储介质 |
CN113177091A (zh) * | 2021-05-19 | 2021-07-27 | 杭州华橙软件技术有限公司 | 增量数据的存储方法及装置、存储介质、电子装置 |
CN113342865A (zh) * | 2021-06-11 | 2021-09-03 | 杭州每刻科技有限公司 | 一种报销单审批查询方法和系统 |
CN113434600A (zh) * | 2021-06-30 | 2021-09-24 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
CN113468170A (zh) * | 2021-06-02 | 2021-10-01 | 上海赛可出行科技服务有限公司 | 一种自动化实现数据实时同步的系统 |
CN113535856A (zh) * | 2021-07-29 | 2021-10-22 | 上海哔哩哔哩科技有限公司 | 数据同步方法及系统 |
CN113742420A (zh) * | 2021-08-09 | 2021-12-03 | 广州市易工品科技有限公司 | 数据同步方法和装置 |
CN114328750A (zh) * | 2021-12-31 | 2022-04-12 | 北京发现角科技有限公司 | 一种将业务数据同步ods层的方法及装置 |
CN114547199A (zh) * | 2022-02-23 | 2022-05-27 | 阿维塔科技(重庆)有限公司 | 数据库增量同步响应方法、装置及计算机可读存储介质 |
WO2023029519A1 (zh) * | 2021-08-30 | 2023-03-09 | 康键信息技术(深圳)有限公司 | 一种数据同步方法及装置、计算机设备、存储介质 |
CN116910108A (zh) * | 2023-09-13 | 2023-10-20 | 彩讯科技股份有限公司 | 端侧数据的处理方法、装置、设备和计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354434A (zh) * | 2016-08-31 | 2017-01-25 | 中国人民大学 | 日志数据的存储方法及系统 |
CN106790320A (zh) * | 2015-11-20 | 2017-05-31 | 北京春秋永乐文化传播有限公司 | 一种多应用系统间数据推送的方法 |
CN106878415A (zh) * | 2017-02-15 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN107038162A (zh) * | 2016-02-03 | 2017-08-11 | 滴滴(中国)科技有限公司 | 基于数据库日志的实时数据查询方法和系统 |
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN107918620A (zh) * | 2016-10-10 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种数据库的写入方法及装置、电子设备 |
WO2018130066A1 (zh) * | 2017-01-11 | 2018-07-19 | 腾讯科技(深圳)有限公司 | 数据的迁移方法、计算机设备和存储介质 |
CN108804237A (zh) * | 2017-05-05 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 数据实时统计方法、装置、存储介质和电子设备 |
CN109492012A (zh) * | 2018-10-31 | 2019-03-19 | 厦门安胜网络科技有限公司 | 一种数据实时统计和检索的方法、装置及存储介质 |
-
2019
- 2019-07-26 CN CN201910683048.XA patent/CN112307037B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106790320A (zh) * | 2015-11-20 | 2017-05-31 | 北京春秋永乐文化传播有限公司 | 一种多应用系统间数据推送的方法 |
CN107038162A (zh) * | 2016-02-03 | 2017-08-11 | 滴滴(中国)科技有限公司 | 基于数据库日志的实时数据查询方法和系统 |
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN106354434A (zh) * | 2016-08-31 | 2017-01-25 | 中国人民大学 | 日志数据的存储方法及系统 |
CN107918620A (zh) * | 2016-10-10 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种数据库的写入方法及装置、电子设备 |
WO2018130066A1 (zh) * | 2017-01-11 | 2018-07-19 | 腾讯科技(深圳)有限公司 | 数据的迁移方法、计算机设备和存储介质 |
CN106878415A (zh) * | 2017-02-15 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 数据消费的负载均衡方法及装置 |
CN108804237A (zh) * | 2017-05-05 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 数据实时统计方法、装置、存储介质和电子设备 |
CN109492012A (zh) * | 2018-10-31 | 2019-03-19 | 厦门安胜网络科技有限公司 | 一种数据实时统计和检索的方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
袁震;: "基于消息中间件的数据同步更新方法", 兵工自动化, no. 07 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022206054A1 (zh) * | 2021-03-31 | 2022-10-06 | 北京沃东天骏信息技术有限公司 | 一种物料增量处理方法、装置、电子设备和计算机存储介质 |
CN113095874A (zh) * | 2021-03-31 | 2021-07-09 | 北京沃东天骏信息技术有限公司 | 一种物料增量处理方法、装置、设备和存储介质 |
CN113177091A (zh) * | 2021-05-19 | 2021-07-27 | 杭州华橙软件技术有限公司 | 增量数据的存储方法及装置、存储介质、电子装置 |
CN113177091B (zh) * | 2021-05-19 | 2023-10-10 | 杭州华橙软件技术有限公司 | 增量数据的存储方法及装置、存储介质、电子装置 |
CN113468170A (zh) * | 2021-06-02 | 2021-10-01 | 上海赛可出行科技服务有限公司 | 一种自动化实现数据实时同步的系统 |
CN113342865A (zh) * | 2021-06-11 | 2021-09-03 | 杭州每刻科技有限公司 | 一种报销单审批查询方法和系统 |
CN113434600B (zh) * | 2021-06-30 | 2023-06-09 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
CN113434600A (zh) * | 2021-06-30 | 2021-09-24 | 青岛海尔科技有限公司 | 一种数据同步方法及装置 |
CN113535856B (zh) * | 2021-07-29 | 2022-11-04 | 上海哔哩哔哩科技有限公司 | 数据同步方法及系统 |
CN113535856A (zh) * | 2021-07-29 | 2021-10-22 | 上海哔哩哔哩科技有限公司 | 数据同步方法及系统 |
CN113742420A (zh) * | 2021-08-09 | 2021-12-03 | 广州市易工品科技有限公司 | 数据同步方法和装置 |
CN113742420B (zh) * | 2021-08-09 | 2024-02-02 | 广州市易工品科技有限公司 | 数据同步方法和装置 |
WO2023029519A1 (zh) * | 2021-08-30 | 2023-03-09 | 康键信息技术(深圳)有限公司 | 一种数据同步方法及装置、计算机设备、存储介质 |
CN114328750A (zh) * | 2021-12-31 | 2022-04-12 | 北京发现角科技有限公司 | 一种将业务数据同步ods层的方法及装置 |
CN114547199A (zh) * | 2022-02-23 | 2022-05-27 | 阿维塔科技(重庆)有限公司 | 数据库增量同步响应方法、装置及计算机可读存储介质 |
CN116910108A (zh) * | 2023-09-13 | 2023-10-20 | 彩讯科技股份有限公司 | 端侧数据的处理方法、装置、设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112307037B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112307037B (zh) | 一种数据同步方法和装置 | |
CN109189835B (zh) | 实时生成数据宽表的方法和装置 | |
CN107169083B (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
CN109063196B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US8364751B2 (en) | Automated client/server operation partitioning | |
CN108629029B (zh) | 一种应用于数据仓库的数据处理方法和装置 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN111858760B (zh) | 一种异构数据库的数据处理方法及装置 | |
CN110837423A (zh) | 一种自动导引运输车数据采集的方法和装置 | |
CN113721862B (zh) | 数据处理方法及装置 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和系统 | |
CN112948486A (zh) | 批量数据同步方法、系统及电子设备 | |
CN113282611A (zh) | 一种流数据同步的方法、装置、计算机设备及存储介质 | |
US10838931B1 (en) | Use of stream-oriented log data structure for full-text search oriented inverted index metadata | |
CN113468196B (zh) | 用于处理数据的方法、装置、系统、服务器和介质 | |
CN117056303B (zh) | 适用于军事行动大数据的数据存储方法及装置 | |
CN113761052A (zh) | 数据库同步方法和装置 | |
CN112115206A (zh) | 一种处理对象存储元数据的方法和装置 | |
CN110879818B (zh) | 一种获取数据的方法、装置、介质和电子设备 | |
CN113760966A (zh) | 基于异构数据库系统的数据处理方法和装置 | |
CN113760861A (zh) | 一种数据迁移的方法和装置 | |
CN113448957A (zh) | 一种数据查询方法和装置 | |
CN111651475B (zh) | 信息生成方法、装置、电子设备和计算机可读介质 | |
CN112783925B (zh) | 分页检索方法和装置 | |
US11663216B2 (en) | Delta database data provisioning |
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 |