CN114579662A - 内存数据库同步方法、系统、设备及存储介质 - Google Patents
内存数据库同步方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN114579662A CN114579662A CN202011376922.4A CN202011376922A CN114579662A CN 114579662 A CN114579662 A CN 114579662A CN 202011376922 A CN202011376922 A CN 202011376922A CN 114579662 A CN114579662 A CN 114579662A
- Authority
- CN
- China
- Prior art keywords
- data
- memory database
- instruction
- identification instruction
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000004458 analytical method Methods 0.000 claims abstract description 27
- 230000001360 synchronised effect Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 14
- 230000010365 information processing Effects 0.000 claims description 7
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 230000002457 bidirectional effect Effects 0.000 abstract description 21
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000011084 recovery Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000013508 migration Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F16/275—Synchronous replication
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
技术领域
本发明属于数据库技术领域,尤其涉及一种内存数据库同步方法、系统、设备及存储介质。
背景技术
随着互联网时代的不断发展,互联网系统都在进行“双中心”建设,双中心一般有“灾备”(单机房承载业务)和“双活”(双机房同时承载业务)两种类型。在双中心的系统部署架构下,会面临着数据迁移、数据共享、实时同步等问题。
数据库官方提供了一些数据迁移的功能,但并不适用于“双中心”的部署架构。市面上的内存数据库数据同步中间件,一般更适用于“灾备”双中心,而不适合“双活”双中心,仅支持单向同步,不能解决双向同步的问题,在双向同步时两个内存数据库之间会出现死循环同步的情况。例如,第一内存数据库中发生数据变更时,需要同步到第二内存数据库,同样,第二内存数据库中发生数据变更时,也要同步到第一内存数据库,但是,第一内存数据库同步至第二内存数据库的数据,不能再从第二内存数据库回到第一内存数据库,否则就会出现死循环同步的情况。
发明内容
本发明实施例提供一种内存数据库同步方法、系统、设备及存储介质,能够在内存数据库双向同步中,避免出现死循环同步的情况。
第一方面,本发明实施例提供一种内存数据库同步方法,方法包括:接收来自第一内存数据库的第一数据;基于第一数据对第二内存数据库进行数据更新;将第一数据确定为需要发送给第一内存数据库的第二数据;解析第二数据,得到解析结果;在解析结果中包括第一标识指令的情况下,删除第一标识指令,并禁止将第二数据发送至第一内存数据库,第一标识指令为第一内存数据库在发送第一数据时插入到第一数据的指令数据。
在一种可选的实施方式中,该方法还包括:
获取第三数据,第三数据为需要同步至第一内存数据库的数据;
在第三数据中插入第二标识指令;
将携带第二标识指令的第三数据发送至第一内存数据库,以使第一内存数据库基于第三数据完成数据更新。
在一种可选的实施方式中,在第三数据为事务操作指令集时,第二标识指令包括第一子指令和第二子指令;
在第三数据中,插入第二标识指令,包括:
在第三数据的头部和尾部分别插入第一子指令和第二子指令,以使第二内存数据库在解析到第二子指令时删除第一子指令和第二子指令,并且不将第三数据确定为需要同步至第一内存数据库的数据。
在一种可选的实施方式中,在第三数据为基础数据结构指令时,在第三数据中,插入第二标识指令,包括:
在第三数据的头部插入第二标识指令。
在一种可选的实施方式中,基于第一数据对第二内存数据库进行数据更新,具体包括:
解析第一数据,得到第一解析数据;
在第一解析数据包括第一标识指令、第三标识指令和第一目标数据时,存储第一目标数据,第一目标数据为第一内存数据库中更新的数据,以及
删除第一标识指令和第三标识指令,并且不将第一数据确定为需要发送给第一内存数据库的第二数据;
在第一解析数据仅包括第一标识指令和第一目标数据时,存储第一标识指令和第一目标数据,第一目标数据为第一内存数据库中更新的数据。
第二方面,本发明实施例提供了一种内存数据库同步系统,系统包括:
第一获取模块,被配置为接收来自第一内存数据库的第一数据;
第一更新模块,被配置为基于第一数据对第二内存数据库进行数据更新;
信息处理模块,被配置为将第一数据确定为需要发送给第一内存数据库的第二数据;
第一解析模块,被配置为解析第二数据,得到解析结果;
第一判断模块,被配置为在解析结果中包括第一标识指令的情况下,删除第一标识指令,并禁止将第二数据发送至第一内存数据库,第一标识指令为第一内存数据库在发送第一数据时插入到第一数据的指令数据。
第三方面,本发明实施例提供了一种内存数据库同步设备,设备包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现第一方面及第一方面中任一可选实施方式提供的内存数据库同步方法。
第四方面,本发明实施例提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现第一方面及第一方面中任一可选实施方式提供的内存数据库同步方法。
本发明实施例的内存数据库双向同步方法、系统、设备及存储介质,第二内存数据库能够基于第一数据完成数据更新,并在数据更新后将第一数据确定为需要同步给第一内存数据库的第二数据,在解析到第二数据中的第一标识数据时,删除第一标识数据完成数据同步,并且停止将第二数据发送至第一内存数据库,避免出现同步时的死循环问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中双向同步时的死循环流程示意图;
图2是本发明实施例提供的一种内存数据库双向同步方法的流程示意图;
图3是本发明实施例提供的事务操作指令集双向同步流程示意图;
图4是本发明实施例提供的基础数据结构双向同步流程示意图;
图5是本发明实施例提供的一种内存数据库双向同步系统的结构示意图;
图6是本发明实施例提供的一种内存数据库双向同步设备的结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本发明,而不是限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
随着互联网时代的不断发展,对实时性要求极高的互联网系统都在进行“双中”心建设,双中心一般有“灾备”(单机房承载业务)和“双活”(双机房同时承载业务)两种类型。在双中心的系统部署架构下,会面临着数据迁移、数据共享、实时同步等诸多问题。
关系型数据库官方提供了数据同步方案,如Oracle数据库的同步方案(OracleGolden Gate,OGG),以及Mysql数据库的Dual Master同步方案。而内存数据库也提供了数据同步方案,如主从复制等。但是,内存数据库官方提供的数据迁移的功能,但并不适用于“双中心”的部署架构。双中心共用一套内存数据库的情况,会存在跨中心的数据访问,两个中心的网络延迟会对访问、操作效率有所影响,所以为了解决内存数据库应对“双中心”的场景,业界多个开源项目组开发了数据同步中间件,这些中间件的特点如下:
1.支持对内存数据库的数据文件或指令进行解析,实现基于数据文件或指令的备份与恢复功能;
2.在一定条件下,实现两个内存数据库节点之间数据的全量同步与增量实时同步,并能够通过一定规则对同步数据进行选择和过滤;
3.有较高的性能,不会因为引入中间件自身,而影响数据的恢复、同步速率。
但是,目前市面上或开源的内存数据库数据同步中间件,由于要保证其通用性与灵活性,一般的定位都偏向于数据迁移工具,而这种中间件一般更适用于“灾备”双中心,而不适合“双活”双中心,其主要原因如下:
1.仅支持单向同步,不能解决双向同步的问题。如图1所示,在A、B中心分别部署了两套主从Redis内存数据库R1、R2,以及两个数据同步中间件M1、M2,双向同步会引发如下所述的“死循环”问题:
①A中心的内存数据库R1中执行一条指令;
②A中心数据同步中间件M1会将该指令同步到B中心的内存数据库;
③B中心内存数据库R2同步成功,B中心数据同步中间件M2依旧会将该指令同步到A中心的内存数据库。
2.在“双活”的架构下,无冲突复制数据(Conflict-Free Replicated Data Type,CRDT)很容易出现数据不一致的情况。这也是所有双向同步方案所遇到的一个通用问题,在一定程度上同样也限制了“非热点数据”(即在极其短的单位时间内不存在频繁修改的数据)的数据同步问题。
基于此本申请实施例针对于“非热点数据”提供了一种内存数据库同步方法、系统、设备及存储介质,可以应用于双活部署架构下的“少写多读”的业务场景,在内存数据库“异地双活”的双向同步的过程中,减少双向同步所产生的数据不一致的问题,并解决双向同步带来的“死循环”问题。最终实现在“双中心”的部署架构下,两个不同的机房内存数据库分别执行不同的指令,可以同步到对端机房的内存数据库中。以下实施例主要以Redis内存数据库为例展开详细阐述。
下面首先对本发明实施例提供的一种内存数据库同步方法进行介绍。请参见图2,本申请实施例提供的一种内存数据库同步方法的流程示意图。该方法各步骤的执行主体即为前述同步中间件,该方法可以包括步骤S101至S105。
S101.接收来自第一内存数据库的第一数据。
在双向同步过程中,第二内存数据库可以接收第一内存数据库同步过来的第一数据,第一数据包括第一内存数据库中发生更新的数据。其中,
第一内存数据库中发生更新的数据具体可以是基础数据结构指令,也可以是事务操作指令集。
S102.基于第一数据对第二内存数据库进行数据更新。
第二内存数据库可以解析接收到的第一数据,然后存储解析到的内容,完成第二内存数据库的数据更新。解析到的内容中至少包括第一内存数据库中更新的数据。
S103.将第一数据确定为需要发送给第一内存数据库的第二数据。
第二内存数据库在解析并存储解析到的内容后,第二数据库相比存储数据前,其数据发生了更新。因此,第二内存数据库会将更新的内容,即第一数据确定为需要同步给第一内存数据库库的内容,即第二数据。
S104.解析第二数据,得到解析结果。
第二内存数据库确定了第二数据后,在将第二数据发送给第一内存数据库之前,第二内存数据库会再次解析第二数据,得到解析结果。
S105.在解析结果中包括第一标识指令的情况下,删除第一标识指令,并禁止将第二数据发送至第一内存数据库,第一标识指令为第一内存数据库在发送第一数据时插入到第一数据的指令数据。
第二内存数据库在解析到第二数据中包含预设的第一标识指令时,第二内存数据库会删除第一标识指令。其中,第一标识指令是第一数据库的标识数据,也是第一内存数据库在将第一数据发送给第二内存数据库前插入到第一数据的指令数据。第二内存数据库在删除第一标识指令后,会终止将第二数据发送至第一内存数据库的操作,避免了死循环的问题。而且,删除第一标识指令后,第二内存数据库中的数据与第一内存数据库一致,实现了同步,去除了冗余数据,即第一标识指令数据,解决了在“双活”架构下,CRDT数据不一致的问题。
本申请实施例提供的一种内存数据库同步方法,第二内存数据库能够基于第一数据完成数据更新,并在数据更新后将第一数据确定为需要同步给第一内存数据库的第二数据,在解析到第二数据中的第一标识数据时,删除第一标识数据完成数据同步,并且停止将第二数据发送至第一内存数据库,实现了无冲突复制数据,避免了同步时的死循环问题。
上述实施例提供的一种内存数据库同步方法,仅给出了更新数据来自对端内存数据库,即第一数据库时的同步方法。但是在实际使用中,第二数据库的更新也有可能是源自自身的操作,产生的更新。因此,本申请实施例提供的一种内存数据库同步方法,还可以包括步骤S106-S108。
S106.获取第三数据,第三数据为需要同步至第一内存数据库的数据。
双向同步时,第二内存数据库自身发生数据更新时,需要将自身更新的数据同步给第一内存数据库。第二内存数据库需要先获取更新的数据,即第三数据。
S107.在第三数据中插入第二标识指令。
第二标识指令,应结合内存数据库内核和标记值自定义。标记值可以通过将第三数据当作输入值经算法生成,生成算法要保证经过算法处理后的标记值唯一对应算法处理前的输入值,标记算法可以是但不局限于MD5、DES等,标记值同样也可以使用非数据关联性算法,可以但不局限于时间戳等。
第二内存数据库获取到的第三数据需要同步给第一内存数据库。在双向同步的过程中,为了避免出现死循环情况,在将更新数据即第三数据发送给第一内存数据库之前,可以在第三数据中插入第二标识指令。其中,第二标识指令是第二数据库的标识数据,也是用于避免出现死循环情况的指令数据。
S108.将携带第二标识指令的第三数据发送至第一内存数据库,以使第一内存数据库基于第三数据完成数据更新。
在第三数据中插入第二标识指令后,第二内存数据库将第三数据发送给第一内存数据库。第一内存数据库可以依据与步骤S101-S105相似的步骤完成数据同步,因为第三数据中包括第二标识指令,相当于步骤S101-S105中的第一标识指令,因此不会出现死循环同步的情况,并且第一数据库在最后会删除第二标识指令,去除了冗余数据,解决了在“双活”架构下,CRDT数据不一致的问题。
在一个示例中,在双向同步中,步骤S107可以根据第三数据的数据操作类型进行不同处理,其中数据操作类型包括事务操作指令集和基础数据结构指令。
在一个具体示例中,在第三数据为事务操作指令集时,第二标识指令包括第一子指令和第二子指令;
此时,步骤S107可以具体包括在第三数据的头部和尾部分别插入第一子指令和第二子指令,以使第二内存数据库在解析到第二子指令时删除第一子指令和第二子指令,并且不将第三数据确定为需要同步至第一内存数据库的数据。
为了更好地理解本申请示例中,在第三数据为事务操作指令集时的具体同步方法,下面通过一个具体的例子进行详细的介绍。
如图3所示,A中心Redis数据库中执行了事务操作,事务完成后A中心数据同步中间件会拉取该事务操作,然后将不同的事务操作统一转换为预设的格式,当发现事务指令中不包含第一标识指令时,说明该事务指令集为首次执行,所以在事务的开始和结束插入第一子指令和第二子指令,并打包发送到对端中心内存数据库执行。B中心内存数据库执行成功后,会删除第一子指令和第二子指令,并禁止将该事务操作发送至A中心。所以整个事务操作不再进行同步,从而解决事务操作的双向同步的“死循环”问题。
在另一个具体示例中,在第三数据为基础数据结构指令时,步骤S107具体包括在第三数据的头部插入第二标识指令。
为了更好地理解本申请示例中,在第三数据为基础数据结构指令时的具体同步方法,下面通过一个具体的例子进行详细的介绍。
如图4所示,A中心Redis内存数据库执行基础数据结构指令,指令完成后,A中心同步中间件会拉取该指令,解析模块会将该指令经过标记算法生成一个标识,然后将第二标识指令和该基础数据结构指令打包成一个事务同步到B中心的内存数据库。B中心内存数据库进行数据库同步后,B中心同步中间件依然会拉取指令,首先解析到事务操作中存在第二标识指令,可以判断该事务中的基础数据结构指令是由对端中心同步过来并已执行成功,所以不再进行同步并删除第二标识指令,确保B中心Redis内存数据库中没有多余的冗余数据,从而解决基础数据结构双向同步的“死循环”问题。
在一个示例中,上述两个示例根据第三数据的数据操作类型进行不同处理,都可以采用针对事务操作指令集的处理方法,即在第三数据的头部和尾部分别插入第一子指令和第二子指令的方法来解决双向同步的“死循环”问题,因为这种方法的优势是在目标内存数据库中执行后最终不会产生多余的冗余的数据。但是考虑到一方面基础数据结构类型的指令大多数都为一条,前后增加两条指令与增加一条标记指令相比在一定程度上会增大内存与网络开销,所以对此进行了针对性调整。
在一个实施例中,步骤S102可以具体包括步骤S1021-S1023。
S1021.解析第一数据,得到第一解析数据;
S1022.在第一解析数据包括第一标识指令、第三标识指令和第一目标数据时,存储第一目标数据,第一目标数据为第一内存数据库中更新的数据,以及
删除第一标识指令和第三标识指令,并且不将第一数据确定为需要发送给第一内存数据库的第二数据;
S1023.在第一解析数据仅包括第一标识指令和第一目标数据时,存储第一标识指令和第一目标数据,第一目标数据为第一内存数据库中更新的数据。
与本申请实施例提供的内存数据库同步方法相对应,本申请实施例还提供一种内存数据库同步系统,请参考图5,该系统可以包括:
第一获取模块501,被配置为接收来自第一内存数据库的第一数据;
第一更新模块502,被配置为基于第一数据对第二内存数据库进行数据更新;
信息处理模块503,被配置为将第一数据确定为需要发送给第一内存数据库的第二数据;
第一解析模块504,被配置为解析第二数据,得到解析结果;
第一判断模块505,被配置为在解析结果中包括第一标识指令的情况下,删除第一标识指令,并禁止将第二数据发送至第一内存数据库,第一标识指令为第一内存数据库在发送第一数据时插入到第一数据的指令数据。
本申请实施例提供的一种内存数据库同步系统,能够实现两个内存数据库的双向同步,并且可以在双向同步的过程中有效避免出现死循环同步的情况。
在一个实施例中,与图5实施例所示内存数据库同步系统相比,还可以包括第二获取模块、第一插入模块、第一发送模块。
第二获取模块,被配置为获取第三数据,第三数据为需要同步至第一内存数据库的数据;
第一插入模块,被配置为在第三数据中插入第二标识指令;
第一发送模块,被配置为将携带第二标识指令的第三数据发送至第一内存数据库,以使第一内存数据库基于第三数据完成数据更新。
在一个示例中,第一插入模块,具体被配置为在第三数据为事务操作指令集时,第二标识指令包括第一子指令和第二子指令,以及在第三数据的头部和尾部分别插入第一子指令和第二子指令,以使第二内存数据库在解析到第二子指令时删除第一子指令和第二子指令,并且不将第三数据确定为需要同步至第一内存数据库的数据。
在一个示例中,第一插入模块,具体被配置为在第三数据为基础数据结构指令时,在第三数据中,插入第二标识指令,以及在第三数据的头部插入第二标识指令。
在一个实施例中,与图5实施例所示内存数据库同步系统相比,第一更新模块502可以包括第一解析子模块、第一信息处理子模块、第二信息处理子模块。
第一解析子模块,被配置为解析第一数据,得到第一解析数据;
第一信息处理子模块,被配置为在第一解析数据包括第一标识指令、第三标识指令和第一目标数据时,存储第一目标数据,第一目标数据为第一内存数据库中更新的数据,以及
删除第一标识指令和第三标识指令,并且不将第一数据确定为需要发送给第一内存数据库的第二数据;
第二信息处理子模块,被配置为在第一解析数据仅包括第一标识指令和第一目标数据时,存储第一标识指令和第一目标数据,第一目标数据为第一内存数据库中更新的数据。
上述各实施例提供的内存数据库同步方法可以由图6所示的内存数据库同步设备执行。
内存数据库同步设备可以包括处理器601以及存储有计算机程序指令的存储器602。
具体地,上述处理器601可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器602可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器602可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器602可以包括可移除或不可移除(或固定)的介质,或者存储器602是非易失性固态存储器。存储器602可在综合网关容灾设备的内部或外部。
在一个实例中,存储器602可以是只读存储器(Read Only Memory,ROM)。在一个实例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
存储器602可以包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现上述任一实施例提供的内存数据库同步方法,并达到该方法达到的相应技术效果,为简洁描述在此不再赘述。
在一个示例中,内存数据库同步设备还可包括通信接口603和总线610。其中,如图6所示,处理器601、存储器602、通信接口603通过总线610连接并完成相互间的通信。
通信接口603,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线610包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(Industry Standard Architecture,ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线610可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该内存数据库同步设备能够实现两个内存数据库的双向同步,并且可以在双向同步的过程中有效避免出现死循环同步的情况。
结合上述实施例中的内存数据库同步方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种内存数据库同步方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、适当的固件、插件、功能卡等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RadioFrequency,RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种内存数据库同步方法,其特征在于,包括:
接收来自第一内存数据库的第一数据;
基于所述第一数据对第二内存数据库进行数据更新;
将所述第一数据确定为需要发送给所述第一内存数据库的第二数据;
解析所述第二数据,得到解析结果;
在所述解析结果中包括第一标识指令的情况下,删除所述第一标识指令,并禁止将所述第二数据发送至所述第一内存数据库,所述第一标识指令为所述第一内存数据库在发送所述第一数据时插入到所述第一数据的指令数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取第三数据,所述第三数据为需要同步至所述第一内存数据库的数据;
在所述第三数据中插入第二标识指令;
将携带第二标识指令的所述第三数据发送至所述第一内存数据库,以使所述第一内存数据库基于所述第三数据完成数据更新。
3.根据权利要求2所述的方法,其特征在于,在所述第三数据为事务操作指令集时,所述第二标识指令包括第一子指令和第二子指令;
所述在所述第三数据中,插入第二标识指令,包括:
在所述第三数据的头部和尾部分别插入第一子指令和第二子指令,以使所述第二内存数据库在解析到所述第二子指令时删除所述第一子指令和所述第二子指令,并且不将所述第三数据确定为需要同步至所述第一内存数据库的数据。
4.根据权利要求2所述的方法,其特征在于,在所述第三数据为基础数据结构指令时,所述在所述第三数据中,插入第二标识指令,包括:
在所述第三数据的头部插入第二标识指令。
5.根据权利要求1所述的方法,其特征在于,所述基于所述第一数据对第二内存数据库进行数据更新,具体包括:
解析所述第一数据,得到第一解析数据;
在所述第一解析数据包括第一标识指令、第三标识指令和第一目标数据时,存储所述第一目标数据,所述第一目标数据为所述第一内存数据库中更新的数据,以及
删除所述第一标识指令和所述第三标识指令,并且不将所述第一数据确定为需要发送给所述第一内存数据库的第二数据;
在所述第一解析数据仅包括第一标识指令和第一目标数据时,存储所述第一标识指令和第一目标数据,所述第一目标数据为所述第一内存数据库中更新的数据。
6.一种内存数据库同步系统,其特征在于,包括:
第一获取模块,被配置为接收来自第一内存数据库的第一数据;
第一更新模块,被配置为基于所述第一数据对第二内存数据库进行数据更新;
信息处理模块,被配置为将所述第一数据确定为需要发送给所述第一内存数据库的第二数据;
第一解析模块,被配置为解析所述第二数据,得到解析结果;
第一判断模块,被配置为在所述解析结果中包括第一标识指令的情况下,删除所述第一标识指令,并禁止将所述第二数据发送至所述第一内存数据库,所述第一标识指令为所述第一内存数据库在发送所述第一数据时插入到所述第一数据的指令数据。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
第二获取模块,被配置为获取第三数据,所述第三数据为需要同步至所述第一内存数据库的数据;
第一插入模块,被配置为在所述第三数据中插入第二标识指令;
第一发送模块,被配置为将携带第二标识指令的所述第三数据发送至所述第一内存数据库,以使所述第一内存数据库基于所述第三数据完成数据更新。
8.根据权利要求7所述的系统,其特征在于,所述第一插入模块,具体被配置为在所述第三数据为事务操作指令集时,所述第二标识指令包括第一子指令和第二子指令,以及在所述第三数据的头部和尾部分别插入第一子指令和第二子指令,以使所述第二内存数据库在解析到所述第二子指令时删除所述第一子指令和所述第二子指令,并且不将所述第三数据确定为需要同步至所述第一内存数据库的数据。
9.一种内存数据库同步设备,其特征在于,所述设备包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现如权利要求1-5任意一项所述的内存数据库同步方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-5任意一项所述的内存数据库同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011376922.4A CN114579662A (zh) | 2020-11-30 | 2020-11-30 | 内存数据库同步方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011376922.4A CN114579662A (zh) | 2020-11-30 | 2020-11-30 | 内存数据库同步方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579662A true CN114579662A (zh) | 2022-06-03 |
Family
ID=81767272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011376922.4A Pending CN114579662A (zh) | 2020-11-30 | 2020-11-30 | 内存数据库同步方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579662A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126882A (zh) * | 2023-04-17 | 2023-05-16 | 中国工商银行股份有限公司 | 数据同步方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402562A (zh) * | 2010-09-14 | 2012-04-04 | 中兴通讯股份有限公司 | 数据库异地容灾方法及系统 |
CN104376017A (zh) * | 2013-08-15 | 2015-02-25 | 阿里巴巴集团控股有限公司 | 在数据库之间进行数据同步的方法及系统 |
CN109271444A (zh) * | 2018-08-10 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种基于触发器的表级双向同步实现方法和系统 |
CN109508346A (zh) * | 2018-10-19 | 2019-03-22 | 武汉达梦数据库有限公司 | 一种ddl操作的级联同步控制方法及系统 |
CN110222114A (zh) * | 2019-04-30 | 2019-09-10 | 武汉达梦数据库有限公司 | 数据库中数据双向同步的方法及设备 |
CN110990432A (zh) * | 2019-11-18 | 2020-04-10 | 北京禧云信息科技有限公司 | 一种跨机房同步分布式缓存集群的装置和方法 |
CN111177264A (zh) * | 2019-12-27 | 2020-05-19 | 青岛聚看云科技有限公司 | 一种数据库双向同步方法、同步网元及系统 |
-
2020
- 2020-11-30 CN CN202011376922.4A patent/CN114579662A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402562A (zh) * | 2010-09-14 | 2012-04-04 | 中兴通讯股份有限公司 | 数据库异地容灾方法及系统 |
CN104376017A (zh) * | 2013-08-15 | 2015-02-25 | 阿里巴巴集团控股有限公司 | 在数据库之间进行数据同步的方法及系统 |
CN109271444A (zh) * | 2018-08-10 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种基于触发器的表级双向同步实现方法和系统 |
CN109508346A (zh) * | 2018-10-19 | 2019-03-22 | 武汉达梦数据库有限公司 | 一种ddl操作的级联同步控制方法及系统 |
CN110222114A (zh) * | 2019-04-30 | 2019-09-10 | 武汉达梦数据库有限公司 | 数据库中数据双向同步的方法及设备 |
CN110990432A (zh) * | 2019-11-18 | 2020-04-10 | 北京禧云信息科技有限公司 | 一种跨机房同步分布式缓存集群的装置和方法 |
CN111177264A (zh) * | 2019-12-27 | 2020-05-19 | 青岛聚看云科技有限公司 | 一种数据库双向同步方法、同步网元及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116126882A (zh) * | 2023-04-17 | 2023-05-16 | 中国工商银行股份有限公司 | 数据同步方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108431B (zh) | 数据同步方法和系统 | |
CN104021043B (zh) | 批量应用程序的中断重入方法及系统 | |
CN109522316B (zh) | 日志处理方法、装置、设备和存储介质 | |
CN112182104A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN114710224A (zh) | 帧同步方法及装置、计算机可读介质、电子设备 | |
CN114185678A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN104079623A (zh) | 多级云存储同步控制方法及系统 | |
CN114579662A (zh) | 内存数据库同步方法、系统、设备及存储介质 | |
CN113641676B (zh) | 一种时序处理方法及装置 | |
CN114385188A (zh) | 一种代码工作量统计方法、装置和电子设备 | |
CN114612101A (zh) | 面向连接的可靠链间路由跨链方法及系统 | |
CN113342774A (zh) | 数据处理方法及装置、计算机可读介质和电子设备 | |
CN112241355A (zh) | 链路追踪方法、系统、计算机可读存储介质及电子设备 | |
CN117240943A (zh) | 接口数据解析方法和装置 | |
CN116074308A (zh) | 车端升级包下载方法、系统、设备及可读存储介质 | |
CN111198782A (zh) | 数据重分布方法、装置、设备及存储介质 | |
CN114238359A (zh) | 报表数据管理方法、装置、设备、介质及计算机程序产品 | |
CN111143899A (zh) | 存储数据的方法、装置、存储介质及电子装置 | |
US8037077B2 (en) | Computer-readable recording medium, method, and apparatus for creating message patterns | |
CN111831211B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN114896641A (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN110896391B (zh) | 一种报文处理方法和装置 | |
CN112925849A (zh) | 数据库同步的方法、装置、电子设备及计算机存储介质 | |
CN112559546A (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 |