CN104572689A - 数据同步方法、装置及系统 - Google Patents
数据同步方法、装置及系统 Download PDFInfo
- Publication number
- CN104572689A CN104572689A CN201310489129.9A CN201310489129A CN104572689A CN 104572689 A CN104572689 A CN 104572689A CN 201310489129 A CN201310489129 A CN 201310489129A CN 104572689 A CN104572689 A CN 104572689A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- daily record
- upgrade
- record 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据同步方法、装置及系统,其方法包括:异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;将日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;并行解析日志队列中的日志数据,得到数据库对应的更新数据;根据得到的对应的更新数据对缓存中的数据进行并行同步更新。由于采用异步基于日志的数据库与缓存并行化数据同步方式,当数据库发生数据更新时,更新数据基于日志并行同步到缓存内,满足了数据库与缓存之间数据同步的一致性和实时性要求,解决了数据库数据更新时数据库与缓存之间同步的延迟问题,并减轻了数据库与缓存之间数据同步时对数据库的压力。
Description
技术领域
本发明涉及计算机及互联网技术领域,尤其涉及一种关系数据库与缓存数据同步方法、装置及系统。
背景技术
关系数据库(以下简称数据库)是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。一个数据库通常包含预先定义的一组表,每个表代表一类数据。数据库的优点是功能强大,接口丰富,缺点是随着数据量的增加和用户数的增多,会导致数据库的性能变得很低,从而使得数据库成为整个应用系统的瓶颈。
为解决上述问题,一般使用高速缓存(以下简称缓存)保存数据库中的结果。缓存是指基于key-value的分布式存储方案,其优点是查询速度快、存放数据量大、支持高并发。应用系统通过访问缓存,减轻直接访问数据库而对数据库造成的读写压力和计算压力,改善数据访问性能,提高应用系统的处理能力。
在具体应用中,缓存中的数据需要与数据库中的数据保持一致,也即数据库中的数据更新时,更新的数据需要同步到缓存中。在具体实现中,数据库与缓存之间的数据同步主要有以下几点关键要素:
实时性要求:数据库数据更新后,需要尽量保证用户最短时间内在缓存中看到最新数据;
一致性要求:保证数据库与缓存之间的数据一致,数据同步处理应当尽量避免同步数据的丢失;
同步处理计算量:数据库与缓存同步时,对数据库带来的计算压力应当尽量小。
通常,在数据库中使用数据库日志记录数据的更新操作。数据库中的数据更新后,会新增包含更新数据信息的日志数据。外部系统可以按照一定的数据库外部接口规范,进行数据库日志数据的拉取操作。
目前,数据库与缓存之间的数据同步通常采用以下几种方案:
1、基于外部同步程序的数据同步。通过外部同步程序周期性检查数据库内的数据更新,如果检测到数据更新,外部同步程序把相应的更新数据同步更新到缓存中。
但是,现有的这种数据同步方案存在以下缺点:
如果检查周期太短,会存在大量的数据库读取操作,对数据库带来大量附加压力;如果检查周期太长,数据库数据更新后,会经过比较长的时间才能同步到缓存,更新数据无法被用户实时看到,影响同步的实时性;如果数据库包含大量数据,完成一次数据库数据检查对外部同步程序带来的计算开销也是不可接受的。
2、在进行数据查询时完成数据同步。在查询数据时,首先查询缓存,如果缓存中不存在目标数据,则查询数据库,并将数据库中得到的查询数据同步到缓存,同时设置缓存中数据的过期时间;如果缓存中存在目标数据,则检查数据的过期时间,如果发现缓存中该数据已经过期,则查询数据库,并将数据库中得到的查询数据重新同步到缓存,同时重新设置缓存中数据的过期时间。
现有的这种实现方式存在以下缺陷:
缓存服务重新启动后,缓存中不存在任何数据,因此会发生大量数据需要从数据库重新同步的情况,这样会产生在短时间内对数据库带来大量压力和影响性能问题;此外,采用数据查询时完成数据同步,增加了数据查询操作的复杂度和出错概率;而且在缓存数据的过期时间内,如果数据库数据发生更新,则无法实时同步到缓存,用户无法看到最新数据。
3、基于触发器的同步,当数据库的数据更新时,更新数据通过触发器主动同步到缓存中。这种方案的缺陷在于:数据库触发器会对数据库带来额外的性能开销,经测试,包含触发器时MYSQL数据库数据更新性能仅为不包含触发器时数据更新性能的50%左右;此外,数据更新通过数据库触发器主动推送到外部同步系统,外部同步系统只能被动接受同步数据,并无法感知触发器推送失效,导致数据不一致的错误概率增加;而且触发器到外部同步系统的更新数据的发送不能保证时序,因此更新数据写入缓存的时序可能会与数据库中更新的时序不同,从而导致数据更新乱序。
发明内容
本发明实施例提供一种数据同步方法、装置及系统,旨在保证数据库与缓存之间数据同步的一致性和实时性,减轻数据库与缓存之间数据同步时对数据库的压力。
本发明实施例提出一种数据同步方法,包括:
异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;
将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;
并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;
根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
本发明实施例还提出一种数据同步装置,包括:
拉取模块,用于异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;
分类添加模块,用于将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;
解析模块,用于并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;
同步更新模块,用于根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
本发明实施例还提出一种数据同步应用系统,包括:数据库服务器和与所述数据库服务器通信连接的缓存服务器;其中:
所述数据库服务器,用于当数据库的数据发生更新时,生成包含更新数据信息的日志数据;
所述缓存服务器,用于异步拉取数据库更新数据时数据库服务器生成的包含更新数据信息的日志数据;将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
本发明实施例提出的一种数据同步方法、装置及系统,采用异步基于日志的数据库与缓存并行化数据同步方式,当数据库发生数据更新时,更新的数据基于日志并行同步到缓存内,满足了数据库与缓存之间数据同步的一致性和实时性要求,很好的解决数据库数据更新时数据库与缓存之间同步的延迟问题,并减轻了数据库与缓存之间数据同步时对数据库的压力。
附图说明
图1是本发明数据同步方法第一实施例的流程示意图;
图2是本发明数据同步方法第二实施例的流程示意图;
图3是本发明实施例中数据库与缓存数据同步的系统架构示意图;
图4是本发明数据同步装置第一实施例的功能模块示意图;
图5是本发明数据同步装置第二实施例的功能模块示意图;
图6是本发明数据同步系统较佳实施例的系统结构示意图。
为了使本发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施方式
如图1所示,本发明第一实施例提出一种数据同步方法,包括:
步骤S101,异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;
其中数据库是建立在关系数据库模型基础上的数据库,即关系数据库。目前主流的数据库有甲骨文公司的oracle和mysql、国际商业机器公司的db2、微软公司的sqlserver、赛贝斯公司的sybase等。一个数据库通常包含预先定义的一组表,每个表代表一类数据,每个表具有对应的表名。
如前所述,在数据库应用系统中,随着数据量的增加和用户数的增多,会导致数据库的性能变得很低,由此会使用缓存保存数据库中的结果,应用系统通过访问缓存,减轻直接访问数据库而对数据库造成的读写压力和计算压力,改善数据访问性能,提高应用系统的处理能力。
在实现数据库与缓存数据同步时,本实施例采用异步基于日志的数据库与缓存并行化数据同步方案,以满足数据库与缓存之间数据同步的一致性和实时性要求。
具体地,首先,在数据库中的数据更新时,异步拉取数据库更新数据时生成的包含更新数据信息的日志数据。
通常,在数据库中的数据更新(比如插入、修改和删除)后,数据库会生成包含更新数据信息的日志数据,同时,按照数据库系统规范,数据库对外提供数据库日志数据的拉取服务。在数据库中的数据更新后,外部系统可以按照一定的数据库外部访问接口规范,进行数据库日志数据的拉取操作。
在本实施例中,当数据库的数据发生更新时,通过数据库的外部访问接口规范,从数据库中异步拉取包含更新数据信息的日志数据。
步骤S102,将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;
如前所述,本实施例采用异步基于日志的数据库与缓存并行化数据同步方案,为了实现并行化数据同步处理,以数据库中的表为单位,预先为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据,由此,创建有多组日志队列。
在拉取到数据库中的日志数据后,将所述日志数据按照数据库中的表名进行分类,然后,将各类日志数据添加到预先创建的对应的日志队列中,以便后续对各日志队列进行并行化的数据同步处理。
步骤S103,并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;
在并行解析所述日志队列中的日志数据时,作为一种实施方式,可以以表为单位,并行解析日志队列中的日志数据,得到数据库对应类别的更新数据。
步骤S104,根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
根据解析后的更新数据对缓存中的数据进行更新,完成数据并行同步过程。
相比现有技术,本实施例通过上述方案,采用异步基于日志的数据库与缓存并行化数据同步方式,当数据库发生数据更新时,更新的数据基于日志以表为单位并行同步到缓存内,满足了数据库与缓存之间数据同步的一致性和实时性要求,避免同步数据的丢失,保证用户最短时间内在缓存中看到最新数据;同时很好的解决数据库数据更新时数据库与缓存之间同步的延迟问题,并减轻了数据库与缓存之间数据同步时对数据库的压力。
如图2所示,本发明第二实施例提出一种数据同步方法,在上述第一实施例的基础之上,在上述步骤S101:异步拉取数据库更新数据时生成的包含更新数据信息的日志数据之前还包括:
步骤S90,为应用系统创建数据库服务和缓存服务,所述数据库服务包括日志服务程序,所述日志服务程序按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
步骤S100,为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据。
本实施例与上述第一实施例的区别在于,本实施例还包括:创建数据库服务和缓存服务以及日志队列的方案。
具体地,本实施例涉及的系统架构如图3所示,整个系统包括:关系数据库(包括日志服务程序)、异步日志拉取程序、日志队列、日志解析程序、同步程序和高速缓存。其中:
数据库中的日志服务程序,按照数据库系统规范,对外提供数据库日志的拉取服务;
异步日志拉取程序,工作在异步方式,在数据库数据发生更新(插入、修改和删除等)时,通过数据库内部日志服务程序,以数据库外部接口规范,得到包含数据更新信息的数据库日志,并依据日志数据中的表名将日志添加到不同的日志队列;
若干组日志队列、日志解析程序和同步程序,以表为单位并行处理,负责将包含数据更新信息的数据库日志解析为具体的更新数据,并将更新数据同步到缓存。
本实施例基于上述系统架构,具体实现流程如下:
首先,创建数据库服务(包括日志服务程序)和缓存服务。其中,日志服务程序需要按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
然后,为数据库中需要同步的各个表分别创建一组日志队列、日志解析程序和同步程序。其中,为了减少数据库与缓存之间数据同步的延迟,并保证数据同步的一致性,以表为单位创建多组日志队列、日志解析程序和同步程序,进行并行化的数据同步。
之后,当数据库的数据发生更新时,异步日志拉取程序通过日志服务程序,拉取到对应数据更新的数据库日志(即日志数据)。其中,异步日志拉取程序通过数据库外部接口规范,从日志服务程序异步拉取包含更新数据信息的数据库日志。
异步日志拉取程序依据数据库日志中的表名,将数据库日志添加到相应的日志队列。
然后,日志解析程序通过对应日志队列获取数据库日志,解析日志数据得到对应的更新数据。其中,日志解析程序等待包含更新数据信息的数据库日志进入日志队列,当数据库日志进入日志队列时,将数据库日志中包含的更新数据信息进行解析,得到对应的更新数据。
最后,由同步程序根据解析后的更新数据对缓存中的数据进行更新,完成同步过程。
相比现有技术,本实施例异步基于日志的数据库与缓存并行化数据同步方案具有以下有益效果:
1、基于实时拉取数据库日志的数据同步,满足了数据库与缓存之间数据同步的实时性要求。
2、以表为单位的数据同步的并行化,很好的解决了数据更新时数据库与缓存之间同步的延迟问题。
3、异步拉取数据库日志,减少了数据库与缓存之间数据同步对数据库的访问压力。
4、数据库日志更新时序与数据更新时序完全一致,基于日志的数据同步,避免了数据同步到缓存可能出现的乱序问题。
5、基于主动拉取数据库更新数据对应日志的处理方式,可以避免数据库与缓存之间数据同步过程中丢失同步数据的错误,保证了数据库与缓存之间的数据一致性。
需要说明的是,本发明上述实施例数据库与缓存之间的数据同步方案中,对数据库与缓存的具体类型不作具体限定。
如图4所示,本发明第一实施例提出一种数据同步装置,包括:拉取模块201、分类添加模块202、解析模块203以及同步更新模块204,其中:
拉取模块201,用于异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;
分类添加模块202,用于将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;
解析模块203,用于并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;
同步更新模块204,用于根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
其中数据库是建立在关系数据库模型基础上的数据库,即关系数据库。目前主流的数据库有甲骨文公司的oracle和mysql、国际商业机器公司的db2、微软公司的sqlserver、赛贝斯公司的sybase等。一个数据库通常包含预先定义的一组表,每个表代表一类数据,每个表具有对应的表名。
如前所述,在数据库应用系统中,随着数据量的增加和用户数的增多,会导致数据库的性能变得很低,由此会使用缓存保存数据库中的结果,应用系统通过访问缓存,减轻直接访问数据库而对数据库造成的读写压力和计算压力,改善数据访问性能,提高应用系统的处理能力。
在实现数据库与缓存数据同步时,本实施例采用异步基于日志的数据库与缓存并行化数据同步方案,以满足数据库与缓存之间数据同步的一致性和实时性要求。
具体地,首先,拉取模块201在数据库中的数据更新时,异步拉取数据库更新数据时生成的包含更新数据信息的日志数据。
通常,在数据库中的数据更新(比如插入、修改和删除)后,数据库会生成包含更新数据信息的日志数据,同时,按照数据库系统规范,数据库对外提供数据库日志数据的拉取服务。在数据库中的数据更新后,外部系统可以按照一定的数据库外部访问接口规范,进行数据库日志数据的拉取操作。
在本实施例中,当数据库的数据发生更新时,拉取模块201通过数据库的外部访问接口规范,从数据库中异步拉取包含更新数据信息的日志数据。
如前所述,本实施例采用异步基于日志的数据库与缓存并行化数据同步方案,为了实现并行化数据同步处理,以数据库中的表为单位,预先为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据,由此,创建有多组日志队列。
在拉取到数据库中的日志数据后,分类添加模块202将所述日志数据按照数据库中的表名进行分类,然后,将各类日志数据添加到预先创建的对应的日志队列中,以便后续对各日志队列进行并行化的数据同步处理。
之后,解析模块203并行解析日志队列中的日志数据,得到数据库对应类别的更新数据。在并行解析所述日志队列中的日志数据时,作为一种实施方式,可以以表为单位,并行解析日志队列中的日志数据,由此得到数据库对应类别的更新数据。
同步更新模块204根据解析后的更新数据对缓存中的数据进行更新,完成数据并行同步过程。
相比现有技术,本实施例通过上述方案,采用异步基于日志的数据库与缓存并行化数据同步方式,当数据库发生数据更新时,更新的数据基于日志以表为单位并行同步到缓存内,满足了数据库与缓存之间数据同步的一致性和实时性要求,避免同步数据的丢失,保证用户最短时间内在缓存中看到最新数据;同时很好的解决数据库数据更新时数据库与缓存之间同步的延迟问题,并减轻了数据库与缓存之间数据同步时对数据库的压力。
如图5所示,本发明第二实施例提出一种数据同步装置,在上述第一实施例的基础上,还包括:
创建模块200,用于为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据;以及为应用系统创建数据库服务和缓存服务,所述数据库服务包括日志服务程序,所述日志服务程序按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
本实施例与上述第一实施例的区别在于,本实施例还包括:创建数据库服务和缓存服务以及日志队列的方案。
具体地,本实施例涉及的系统架构如图3所示,整个系统包括:关系数据库(包括日志服务程序)、异步日志拉取程序、日志队列、日志解析程序、同步程序和高速缓存。其中:
数据库中的日志服务程序,按照数据库系统规范,对外提供数据库日志的拉取服务;
异步日志拉取程序,工作在异步方式,在数据库数据发生更新(插入、修改和删除等)时,通过数据库内部日志服务程序,以数据库外部接口规范,得到包含数据更新信息的数据库日志,并依据日志数据中的表名将日志添加到不同的日志队列;
若干组日志队列、日志解析程序和同步程序,以表为单位并行处理,负责将包含数据更新信息的数据库日志解析为具体的更新数据,并将更新数据同步到缓存。
本实施例基于上述系统架构,具体实现流程如下:
首先,创建数据库服务(包括日志服务程序)和缓存服务。其中,日志服务程序需要按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
然后,为数据库中需要同步的各个表分别创建一组日志队列、日志解析程序和同步程序。其中,为了减少数据库与缓存之间数据同步的延迟,并保证数据同步的一致性,以表为单位创建多组日志队列、日志解析程序和同步程序,进行并行化的数据同步。
之后,当数据库的数据发生更新时,异步日志拉取程序通过日志服务程序,拉取到对应数据更新的数据库日志(即日志数据)。其中,异步日志拉取程序通过数据库外部接口规范,从日志服务程序异步拉取包含更新数据信息的数据库日志。
异步日志拉取程序依据数据库日志中的表名,将数据库日志添加到相应的日志队列。
然后,日志解析程序通过对应日志队列获取数据库日志,解析日志数据得到对应的更新数据。其中,日志解析程序等待包含更新数据信息的数据库日志进入日志队列,当数据库日志进入日志队列时,将数据库日志中包含的更新数据信息进行解析,得到对应的更新数据。
最后,由同步程序根据解析后的更新数据对缓存中的数据进行更新,完成同步过程。
相比现有技术,本实施例异步基于日志的数据库与缓存并行化数据同步方案具有以下有益效果:
1、基于实时拉取数据库日志的数据同步,满足了数据库与缓存之间数据同步的实时性要求。
2、以表为单位的数据同步的并行化,很好的解决了数据更新时数据库与缓存之间同步的延迟问题。
3、异步拉取数据库日志,减少了数据库与缓存之间数据同步对数据库的访问压力。
4、数据库日志更新时序与数据更新时序完全一致,基于日志的数据同步,避免了数据同步到缓存可能出现的乱序问题。
5、基于主动拉取数据库更新数据对应日志的处理方式,可以避免数据库与缓存之间数据同步过程中丢失同步数据的错误,保证了数据库与缓存之间的数据一致性。
需要说明的是,本发明上述实施例数据库与缓存之间的数据同步方案中,对数据库与缓存的具体类型不作具体限定。
如图6所示,本发明较佳实施例提出一种数据同步应用系统,包括:数据库服务器301和与所述数据库服务器301通信连接的缓存服务器302302;其中:
所述数据库服务器301,用于当数据库的数据发生更新时,生成包含更新数据信息的日志数据;
所述缓存服务器302,用于异步拉取数据库更新数据时数据库服务器301生成的包含更新数据信息的日志数据;将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
具体地,本实施例涉及的系统架构如图3所示,整个系统包括:关系数据库(包括日志服务程序)、异步日志拉取程序、日志队列、日志解析程序、同步程序和高速缓存。其中:
关系数据库位于数据库服务器301侧,数据库中的日志服务程序,按照数据库系统规范,对外提供数据库日志的拉取服务;
异步日志拉取程序、日志队列、日志解析程序、同步程序和高速缓存位于缓存服务器302侧。其中:
异步日志拉取程序,工作在异步方式,在数据库数据发生更新(插入、修改和删除等)时,通过数据库内部日志服务程序,以数据库外部接口规范,得到包含数据更新信息的数据库日志,并依据日志数据中的表名将日志添加到不同的日志队列;
若干组日志队列、日志解析程序和同步程序,以表为单位并行处理,负责将包含数据更新信息的数据库日志解析为具体的更新数据,并将更新数据同步到缓存。
本实施例基于上述系统架构,具体实现流程如下:
首先,由数据库服务器301和缓存服务器302分别创建数据库服务(包括日志服务程序)和缓存服务。其中,日志服务程序需要按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
然后,由所述缓存服务器302为数据库中需要同步的各个表分别创建一组日志队列、日志解析程序和同步程序。其中,为了减少数据库与缓存之间数据同步的延迟,并保证数据同步的一致性,以表为单位创建多组日志队列、日志解析程序和同步程序,进行并行化的数据同步。
之后,当数据库的数据发生更新时,数据库服务器301生成包含更新数据信息的日志数据。缓存服务器302侧的异步日志拉取程序通过数据库服务器301侧的日志服务程序,拉取到对应数据更新的数据库日志(即日志数据)。其中,异步日志拉取程序通过数据库外部接口规范,从日志服务程序异步拉取包含更新数据信息的数据库日志。
异步日志拉取程序依据数据库日志中的表名,将数据库日志添加到相应的日志队列。
然后,日志解析程序通过对应日志队列获取数据库日志,解析日志数据得到对应的更新数据。其中,日志解析程序等待包含更新数据信息的数据库日志进入日志队列,当数据库日志进入日志队列时,将数据库日志中包含的更新数据信息进行解析,得到对应的更新数据。
最后,由同步程序根据解析后的更新数据对缓存中的数据进行更新,完成同步过程。
相比现有技术,本实施例异步基于日志的数据库与缓存并行化数据同步方案具有以下有益效果:
1、基于实时拉取数据库日志的数据同步,满足了数据库与缓存之间数据同步的实时性要求。
2、以表为单位的数据同步的并行化,很好的解决了数据更新时数据库与缓存之间同步的延迟问题。
3、异步拉取数据库日志,减少了数据库与缓存之间数据同步对数据库的访问压力。
4、数据库日志更新时序与数据更新时序完全一致,基于日志的数据同步,避免了数据同步到缓存可能出现的乱序问题。
5、基于主动拉取数据库更新数据对应日志的处理方式,可以避免数据库与缓存之间数据同步过程中丢失同步数据的错误,保证了数据库与缓存之间的数据一致性。
需要说明的是,本发明上述实施例数据库与缓存之间的数据同步方案中,对数据库与缓存的具体类型不作具体限定。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。具体地,图4、图5所述的数据同步装置,图6所述的数据同步系统所对应的程序指令可以存储在用户终端、服务器等的可读存储介质中,并被其中的至少一个处理器执行,以实现图1至图2所述的数据同步方法。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种数据同步方法,其特征在于,包括:
异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;
将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;
并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;
根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
2.根据权利要求1所述的方法,其特征在于,所述异步拉取数据库更新数据时生成的包含更新数据信息的日志数据的步骤之前还包括:
为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据。
3.根据权利要求1所述的方法,其特征在于,所述并行解析所述日志队列中的日志数据的步骤包括:
以表为单位,并行解析所述日志队列中的日志数据。
4.根据权利要求1、2或3所述的方法,其特征在于,所述异步拉取数据库更新数据时生成的包含更新数据信息的日志数据的步骤之前还包括:
为应用系统创建数据库服务和缓存服务,所述数据库服务包括日志服务程序,所述日志服务程序按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
5.根据权利要求4所述的方法,其特征在于,所述异步拉取数据库更新数据时生成的包含更新数据信息的日志数据的步骤包括:
当数据库的数据发生更新时,通过所述数据库的外部访问接口规范,从所述数据库的日志服务程序中异步拉取包含更新数据信息的日志数据。
6.一种数据同步装置,其特征在于,包括:
拉取模块,用于异步拉取数据库更新数据时生成的包含更新数据信息的日志数据;
分类添加模块,用于将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;
解析模块,用于并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;
同步更新模块,用于根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
7.根据权利要求6所述的装置,其特征在于,还包括:
创建模块,用于为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据;以及为应用系统创建数据库服务和缓存服务,所述数据库服务包括日志服务程序,所述日志服务程序按照数据库系统规范在数据库内部加载运行,并对外提供访问接口规范。
8.根据权利要求7所述的装置,其特征在于,
所述解析模块,还用于以表为单位,并行解析所述日志队列中的日志数据。
9.根据权利要求7或8所述的装置,其特征在于,
所述拉取模块,还用于当数据库的数据发生更新时,通过所述数据库的外部访问接口规范,从所述数据库的日志服务程序中异步拉取包含更新数据信息的日志数据。
10.一种数据同步应用系统,其特征在于,包括:数据库服务器和与所述数据库服务器通信连接的缓存服务器;其中:
所述数据库服务器,用于当数据库的数据发生更新时,生成包含更新数据信息的日志数据;
所述缓存服务器,用于异步拉取数据库更新数据时数据库服务器生成的包含更新数据信息的日志数据;将所述日志数据按照数据库中的表名进行分类,添加相应的日志数据到预先创建的对应的日志队列中;并行解析所述日志队列中的日志数据,得到数据库对应的更新数据;根据得到的所述对应的更新数据对缓存中的数据进行并行同步更新。
11.根据权利要求9所述的系统,其特征在于,
所述缓存服务器,还用于为所述数据库中的各表分别创建相应的日志队列,每个表代表一类数据;以及以表为单位,并行解析所述日志队列中的日志数据。
12.根据权利要求10或11所述的系统,其特征在于,
所述缓存服务器,还用于当数据库的数据发生更新时,通过所述数据库的外部访问接口规范,从所述数据库的日志服务程序中异步拉取包含更新数据信息的日志数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310489129.9A CN104572689B (zh) | 2013-10-17 | 2013-10-17 | 数据同步方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310489129.9A CN104572689B (zh) | 2013-10-17 | 2013-10-17 | 数据同步方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572689A true CN104572689A (zh) | 2015-04-29 |
CN104572689B CN104572689B (zh) | 2020-03-17 |
Family
ID=53088780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310489129.9A Active CN104572689B (zh) | 2013-10-17 | 2013-10-17 | 数据同步方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572689B (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967658A (zh) * | 2015-05-08 | 2015-10-07 | 成都品果科技有限公司 | 一种多终端设备上的数据同步方法 |
CN105069059A (zh) * | 2015-07-28 | 2015-11-18 | 小米科技有限责任公司 | 数据库同步方法及装置 |
CN105138284A (zh) * | 2015-08-11 | 2015-12-09 | 上海交通大学 | 虚拟机磁盘镜像同步操作优化的系统及方法 |
CN105808643A (zh) * | 2016-02-25 | 2016-07-27 | 浪潮通信信息系统有限公司 | 一种Redis内存数据库刷新的方法 |
CN105956032A (zh) * | 2016-04-25 | 2016-09-21 | 百度在线网络技术(北京)有限公司 | 缓存数据同步方法、系统和装置 |
CN106033474A (zh) * | 2016-04-21 | 2016-10-19 | 苏州奖多多科技有限公司 | 一种数据同步更新方法、装置及电子设备 |
CN106484869A (zh) * | 2016-10-12 | 2017-03-08 | 北京集奥聚合科技有限公司 | 一种基于mysql binlog的分布式缓存方法及系统 |
CN106709043A (zh) * | 2016-12-30 | 2017-05-24 | 江苏瑞中数据股份有限公司 | 一种基于数据库日志的数据同步加载方法 |
CN107341212A (zh) * | 2017-06-26 | 2017-11-10 | 努比亚技术有限公司 | 一种缓存更新方法及设备 |
CN107885824A (zh) * | 2017-11-07 | 2018-04-06 | 北京锐安科技有限公司 | 一种数据读写方法及系统 |
CN108073660A (zh) * | 2016-11-18 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种实现缓存数据同步的方法及系统 |
CN108259269A (zh) * | 2017-12-30 | 2018-07-06 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 网络设备的监控方法和系统 |
CN108491332A (zh) * | 2018-04-04 | 2018-09-04 | 浙江小泰科技有限公司 | 一种基于Redis的实时缓存更新方法和系统 |
CN108600405A (zh) * | 2018-03-14 | 2018-09-28 | 中国互联网络信息中心 | 一种加速dns解析软件日志记录的方法和系统 |
CN109408479A (zh) * | 2018-09-19 | 2019-03-01 | 平安科技(深圳)有限公司 | 日志数据添加方法、系统、计算机设备和存储介质 |
CN109739929A (zh) * | 2018-12-18 | 2019-05-10 | 中国人民财产保险股份有限公司 | 数据同步方法、装置及系统 |
CN109871388A (zh) * | 2019-02-19 | 2019-06-11 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终电子设备及存储介质 |
CN110083616A (zh) * | 2019-04-19 | 2019-08-02 | 深圳前海微众银行股份有限公司 | 页面数据处理方法、装置、设备及计算机可读存储介质 |
CN110222073A (zh) * | 2019-06-10 | 2019-09-10 | 腾讯科技(深圳)有限公司 | 一种数据查询的方法以及相关装置 |
CN110222118A (zh) * | 2019-05-23 | 2019-09-10 | 上海易点时空网络有限公司 | 基于队列的异步数据处理方法及装置 |
CN110941623A (zh) * | 2019-11-12 | 2020-03-31 | 北京达佳互联信息技术有限公司 | 数据的同步方法及装置 |
CN111259031A (zh) * | 2020-01-16 | 2020-06-09 | 上海米哈游天命科技有限公司 | 数据更新方法、装置、设备和存储介质 |
CN111274254A (zh) * | 2020-01-16 | 2020-06-12 | 上海米哈游天命科技有限公司 | 数据更新方法、装置、设备和存储介质 |
CN111414392A (zh) * | 2020-03-25 | 2020-07-14 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
CN112597151A (zh) * | 2020-12-03 | 2021-04-02 | 长沙市到家悠享家政服务有限公司 | 数据处理方法、装置、设备和存储介质 |
CN114125479A (zh) * | 2021-11-05 | 2022-03-01 | 游艺星际(北京)科技有限公司 | 信息处理方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070185937A1 (en) * | 2005-12-19 | 2007-08-09 | Anand Prahlad | Destination systems and methods for performing data replication |
US7860889B1 (en) * | 2004-05-12 | 2010-12-28 | Cisco Technology, Inc. | Methods and apparatus for redetermining social maps upon expectation of change |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
CN102222071A (zh) * | 2010-04-16 | 2011-10-19 | 华为技术有限公司 | 数据同步处理方法、设备及系统 |
US8271830B2 (en) * | 2005-12-19 | 2012-09-18 | Commvault Systems, Inc. | Rolling cache configuration for a data replication system |
-
2013
- 2013-10-17 CN CN201310489129.9A patent/CN104572689B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7860889B1 (en) * | 2004-05-12 | 2010-12-28 | Cisco Technology, Inc. | Methods and apparatus for redetermining social maps upon expectation of change |
US20070185937A1 (en) * | 2005-12-19 | 2007-08-09 | Anand Prahlad | Destination systems and methods for performing data replication |
US8271830B2 (en) * | 2005-12-19 | 2012-09-18 | Commvault Systems, Inc. | Rolling cache configuration for a data replication system |
US20130006926A1 (en) * | 2005-12-19 | 2013-01-03 | Commvault Systems, Inc. | Rolling cache configuration for a data replication system |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
CN102222071A (zh) * | 2010-04-16 | 2011-10-19 | 华为技术有限公司 | 数据同步处理方法、设备及系统 |
Non-Patent Citations (1)
Title |
---|
詹自熬等: "基于XML和MSMQ的数据同步系统设计与实现", 《河南科学》 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967658A (zh) * | 2015-05-08 | 2015-10-07 | 成都品果科技有限公司 | 一种多终端设备上的数据同步方法 |
CN104967658B (zh) * | 2015-05-08 | 2018-11-30 | 成都品果科技有限公司 | 一种多终端设备上的数据同步方法 |
CN105069059A (zh) * | 2015-07-28 | 2015-11-18 | 小米科技有限责任公司 | 数据库同步方法及装置 |
CN105138284B (zh) * | 2015-08-11 | 2018-10-23 | 上海交通大学 | 虚拟机磁盘镜像同步操作优化的系统及方法 |
CN105138284A (zh) * | 2015-08-11 | 2015-12-09 | 上海交通大学 | 虚拟机磁盘镜像同步操作优化的系统及方法 |
CN105808643A (zh) * | 2016-02-25 | 2016-07-27 | 浪潮通信信息系统有限公司 | 一种Redis内存数据库刷新的方法 |
CN106033474A (zh) * | 2016-04-21 | 2016-10-19 | 苏州奖多多科技有限公司 | 一种数据同步更新方法、装置及电子设备 |
CN105956032A (zh) * | 2016-04-25 | 2016-09-21 | 百度在线网络技术(北京)有限公司 | 缓存数据同步方法、系统和装置 |
CN105956032B (zh) * | 2016-04-25 | 2019-09-20 | 百度在线网络技术(北京)有限公司 | 缓存数据同步方法、系统和装置 |
CN106484869A (zh) * | 2016-10-12 | 2017-03-08 | 北京集奥聚合科技有限公司 | 一种基于mysql binlog的分布式缓存方法及系统 |
CN108073660B (zh) * | 2016-11-18 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 一种实现缓存数据同步的方法及系统 |
CN108073660A (zh) * | 2016-11-18 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种实现缓存数据同步的方法及系统 |
CN106709043A (zh) * | 2016-12-30 | 2017-05-24 | 江苏瑞中数据股份有限公司 | 一种基于数据库日志的数据同步加载方法 |
CN107341212A (zh) * | 2017-06-26 | 2017-11-10 | 努比亚技术有限公司 | 一种缓存更新方法及设备 |
CN107885824A (zh) * | 2017-11-07 | 2018-04-06 | 北京锐安科技有限公司 | 一种数据读写方法及系统 |
CN108259269A (zh) * | 2017-12-30 | 2018-07-06 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 网络设备的监控方法和系统 |
CN108600405A (zh) * | 2018-03-14 | 2018-09-28 | 中国互联网络信息中心 | 一种加速dns解析软件日志记录的方法和系统 |
CN108491332A (zh) * | 2018-04-04 | 2018-09-04 | 浙江小泰科技有限公司 | 一种基于Redis的实时缓存更新方法和系统 |
CN109408479B (zh) * | 2018-09-19 | 2023-05-30 | 平安科技(深圳)有限公司 | 日志数据添加方法、系统、计算机设备和存储介质 |
CN109408479A (zh) * | 2018-09-19 | 2019-03-01 | 平安科技(深圳)有限公司 | 日志数据添加方法、系统、计算机设备和存储介质 |
CN109739929B (zh) * | 2018-12-18 | 2021-03-16 | 中国人民财产保险股份有限公司 | 数据同步方法、装置及系统 |
CN109739929A (zh) * | 2018-12-18 | 2019-05-10 | 中国人民财产保险股份有限公司 | 数据同步方法、装置及系统 |
CN109871388A (zh) * | 2019-02-19 | 2019-06-11 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终电子设备及存储介质 |
CN110083616A (zh) * | 2019-04-19 | 2019-08-02 | 深圳前海微众银行股份有限公司 | 页面数据处理方法、装置、设备及计算机可读存储介质 |
CN110222118A (zh) * | 2019-05-23 | 2019-09-10 | 上海易点时空网络有限公司 | 基于队列的异步数据处理方法及装置 |
CN110222118B (zh) * | 2019-05-23 | 2022-04-05 | 上海易点时空网络有限公司 | 基于队列的异步数据处理方法及装置 |
CN110222073A (zh) * | 2019-06-10 | 2019-09-10 | 腾讯科技(深圳)有限公司 | 一种数据查询的方法以及相关装置 |
CN110222073B (zh) * | 2019-06-10 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 一种数据查询的方法以及相关装置 |
CN110941623A (zh) * | 2019-11-12 | 2020-03-31 | 北京达佳互联信息技术有限公司 | 数据的同步方法及装置 |
CN111259031A (zh) * | 2020-01-16 | 2020-06-09 | 上海米哈游天命科技有限公司 | 数据更新方法、装置、设备和存储介质 |
CN111274254A (zh) * | 2020-01-16 | 2020-06-12 | 上海米哈游天命科技有限公司 | 数据更新方法、装置、设备和存储介质 |
CN111414392B (zh) * | 2020-03-25 | 2022-08-05 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
CN111414392A (zh) * | 2020-03-25 | 2020-07-14 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
CN112597151A (zh) * | 2020-12-03 | 2021-04-02 | 长沙市到家悠享家政服务有限公司 | 数据处理方法、装置、设备和存储介质 |
CN114125479A (zh) * | 2021-11-05 | 2022-03-01 | 游艺星际(北京)科技有限公司 | 信息处理方法、装置、电子设备和存储介质 |
CN114125479B (zh) * | 2021-11-05 | 2023-12-19 | 游艺星际(北京)科技有限公司 | 信息处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104572689B (zh) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572689A (zh) | 数据同步方法、装置及系统 | |
CN107402963B (zh) | 搜索数据的构建方法、增量数据的推送方法及装置和设备 | |
CN108519914B (zh) | 大数据计算方法、系统和计算机设备 | |
CN108920698A (zh) | 一种数据同步方法、装置、系统、介质及电子设备 | |
US20150032695A1 (en) | Client and server integration for replicating data | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN105205154B (zh) | 数据迁移方法以及装置 | |
CN103744906A (zh) | 一种数据同步系统、方法及装置 | |
CN107423404B (zh) | 流程实例数据同步处理方法和装置 | |
CN112988741B (zh) | 实时业务数据合并方法、装置及电子设备 | |
CN110727727B (zh) | 一种数据库的统计方法及装置 | |
CN104050276A (zh) | 一种分布式数据库的缓存处理方法及系统 | |
Jeong et al. | Anomaly teletraffic intrusion detection systems on hadoop-based platforms: A survey of some problems and solutions | |
CN110781197B (zh) | 一种hive离线同步校验方法、装置及电子设备 | |
CN110019062A (zh) | 数据同步方法和系统 | |
CN112363994A (zh) | 数据库的处理方法、装置、电子装置和存储介质 | |
CN103927314A (zh) | 一种数据批量处理的方法和装置 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、系统、设备和介质 | |
Wang et al. | A fault-tolerant framework for asynchronous iterative computations in cloud environments | |
RU2711348C1 (ru) | Способ и система для обработки запросов в распределенной базе данных | |
CN112241437A (zh) | 数据库多主同步的回环控制方法、装置、设备及存储介质 | |
EP2904520B1 (en) | Reference data segmentation from single to multiple tables | |
CN114416868B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN114398520A (zh) | 数据检索方法、系统、装置、电子设备及存储介质 | |
CN103970844A (zh) | 大数据的写入方法和装置、读取方法和装置及处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230921 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |