CN110209734A - 数据复制方法、装置、计算机设备及存储介质 - Google Patents

数据复制方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110209734A
CN110209734A CN201910368297.XA CN201910368297A CN110209734A CN 110209734 A CN110209734 A CN 110209734A CN 201910368297 A CN201910368297 A CN 201910368297A CN 110209734 A CN110209734 A CN 110209734A
Authority
CN
China
Prior art keywords
data
history state
state data
buffer area
cluster
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
Application number
CN201910368297.XA
Other languages
English (en)
Other versions
CN110209734B (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.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems 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 Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201910368297.XA priority Critical patent/CN110209734B/zh
Publication of CN110209734A publication Critical patent/CN110209734A/zh
Priority to JP2021532087A priority patent/JP7271670B2/ja
Priority to EP20802129.5A priority patent/EP3968175B1/en
Priority to PCT/CN2020/084085 priority patent/WO2020224374A1/zh
Priority to US17/330,276 priority patent/US11921746B2/en
Application granted granted Critical
Publication of CN110209734B publication Critical patent/CN110209734B/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
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/2365Ensuring data consistency and integrity
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据复制方法、装置、计算机设备及存储介质,属于数据库技术领域。该方法包括:当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中;将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区;当符合第一预设条件时,将该发送缓冲区中的至少一个历史态数据复制至集群设备。本发明中节点设备不用把原本的历史态数据格式转化为日志格式,集群设备也不必将日志解析为数据原始格式后再进行存储,也就避免了繁琐的日志回放流程,提高了数据复制过程的效率。

Description

数据复制方法、装置、计算机设备及存储介质
技术领域
本发明涉及数据库技术领域,特别涉及一种数据复制方法、装置、计算机设备及存储介质。
背景技术
在数据库技术中,尤其是OLAP(online analytical processing,联机实时分析)处理系统、数据仓库、大数据分析等场景中,经常需要从数据库中复制数据,对已有数据进行及时备份。
在复制过程中通常涉及到主机和备机两种设备,对于目前的数据库(例如Oracle、MySQL或者InnoDB等)而言,主机可以定期将数据库中的数据文件复制到备机上,实现基于数据文件的主备同步,进一步地,为了避免由于数据文件在复制过程损坏导致主机与备机数据不一致,主机和备机建立通信连接后,两者的数据库之间同步一个重做日志(REDOLOG),一旦复制过程出现异常,备机通过回放重做日志清除掉异常的数据。
然而,由于重做日志的解析工作和回放工作较为复杂,在大数据量的场景下,备机回放重做日志会消耗较长时间,影响数据复制过程的效率。
发明内容
本发明实施例提供了一种数据复制方法、装置、计算机设备及存储介质,能够解决基于重做日志复制数据时,消耗时间长,解析回放工作复杂,影响数据复制效率的问题。该技术方案如下:
一方面,提供了一种数据复制方法,该方法包括:
当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,该数据队列用于缓存历史态数据;
将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,该发送缓冲区用于缓存待复制的历史态数据;
当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备。
一方面,提供一种数据复制方法,该方法包括:
从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,该接收缓冲区用于缓存接收的历史态数据;
将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,该转发缓冲区用于对历史态数据进行数据格式转换;
将该至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在该节点设备中所在的一个原始数据表。
一方面,提供了一种数据复制装置,该装置包括:
添加模块,用于当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,该数据队列用于缓存历史态数据;
该添加模块,还用于将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,该发送缓冲区用于缓存待复制的历史态数据;
复制模块,用于当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备。
在一种可能实施方式中,该添加模块用于:
当检测到该数据队列中增加任一历史态数据时,将该历史态数据添加到该发送缓冲区;
该复制模块用于:
当检测到该发送缓冲区中增加任一历史态数据时,将该发送缓冲区中的该至少一个历史态数据复制至该集群设备。
在一种可能实施方式中,该添加模块用于:
每间隔第一预设时长,获取该数据队列中在当前时刻之前的该第一预设时长内增加的至少一个历史态数据;
按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到至少一个有序排列的历史态数据,将该至少一个有序排列的历史态数据添加到该发送缓冲区。
在一种可能实施方式中,该第一预设条件为检测到该发送缓冲区中增加任一历史态数据;或,
该第一预设条件为当检测到该发送缓冲区的已用数据量占该发送缓冲区的容量的比例达到比例阈值;或,
该第一预设条件为当前时刻距离该发送缓冲区上一次向该集群设备执行数据复制达到第二预设时长;或,
该第一预设条件为当前时刻距离该发送缓冲区上一次向该集群设备执行数据复制达到第三预设时长,该第三预设时长为多个节点设备中每一个节点设备都配置有的相同的预设时长,该第三预设时长大于该第二预设时长。
在一种可能实施方式中,该装置还包括:
当接收到该集群设备发送的复制成功响应时,清空与该复制成功响应所对应的发送缓冲区;或,
将该数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中。
一方面,提供了一种数据复制装置,该装置包括:
接收模块,用于从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,该接收缓冲区用于缓存接收的历史态数据;
添加模块,用于将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,该转发缓冲区用于对历史态数据进行数据格式转换;
存储模块,用于将该至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在该节点设备中所在的一个原始数据表。
在一种可能实施方式中,该存储模块包括:
第一存储单元,用于对任一以元组为单位的数据项,按照该数据项所在的原始数据表中的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中;或,
第二存储单元,用于对任一表示字段变更情况的数据项,按照键值对的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中。
在一种可能实施方式中,该第二存储单元用于:
将该数据项在该原始数据表中的键名或者该数据项的生成时间中的至少一项,确定为该数据项在该目标数据表中的键名;
将该至少一个数据项在该原始数据表中被修改的字段,确定为该至少一个数据项在该目标数据表中的键值。
在一种可能实施方式中,该装置还包括:
确定模块,用于在该至少一个历史态数据的事务标识中,确定符合第二预设条件的最小事务标识,该第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在该集群数据库中;
查询模块,用于根据该最小事务标识,确定可见数据项,基于该可见数据项,提供数据查询服务,其中,提交该可见数据项的事务标识小于或者等于该最小事务标识。
在一种可能实施方式中,该确定模块包括:
排序单元,用于按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到目标数据序列;
获取单元,用于从该目标数据序列中获取符合该第二预设条件的至少一个事务;
确定单元,用于将该至少一个事务中排序最靠前事务的事务标识确定为该最小事务标识。
在一种可能实施方式中,该获取单元包括:
遍历确定子单元,用于遍历该目标数据序列,对每个历史态数据的位图编码执行按位与操作,将输出为真的历史态数据所对应的事务确定为该至少一个事务;或,
遍历确定子单元,还用于遍历该目标数据序列,对每个历史态数据的压缩字典进行解码,得到与每个历史态数据对应的全局事务标识,当确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中时,将该全局事务标识所对应的事务确定为一个符合该第二预设条件的事务。
在一种可能实施方式中,遍历确定子单元还用于:
根据该全局事务标识,获取在该集群数据库中已存储的且具有该全局事务标识的数据项,当获取到的该数据项以及解码得到的该历史态数据与事务的所有子事务对应时,确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中。
在一种可能实施方式中,该接收模块用于:
每间隔第二预设时长,从该至少一个接收缓冲区中接收任一节点设备发送的至少一个历史态数据;或,
每间隔第三预设时长,从该至少一个接收缓冲区中接收多个节点设备同时发送的至少一个历史态数据。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条指令,该至少一条指令由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的数据复制方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该至少一条指令由处理器加载并执行以实现如上述任一种可能实现方式的数据复制方法所执行的操作。
本发明实施例提供的技术方案带来的有益效果至少包括:
通过当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,从而能够将任一事务的历史态数据缓存到数据队列中,将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,从而可以基于发送缓冲区执行发送进程或发送线程,当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备,使得节点设备能够每当符合第一预设条件,就将至少一个发送缓冲区中的历史态数据复制到集群设备,节点设备不用把原本的历史态数据格式转化为日志格式,集群设备也不必将日志解析为数据原始格式后再进行存储,从而在数据复制时无需对历史态数据进行重做日志的回放,避免了繁琐的回放流程,缩短了重做日志回放过程的时长,提高了数据复制过程的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据复制方法的实施环境示意图;
图2是本发明实施例提供的一种数据复制方法的交互流程图;
图3是本发明实施例提供的一种获取历史态数据的原理性示意图;
图4是本发明实施例提供的一种获取历史态数据的原理性示意图;
图5是本发明实施例提供的一种流复制技术的原理性示意图;
图6是本发明实施例提供的一种流复制技术的原理性示意图;
图7是本发明实施例提供的一种原始数据表的结构示意图;
图8是本发明实施例提供的一种目标数据表的结构示意图;
图9是本发明实施例提供的一种数据查询过程的流程图;
图10是本发明实施例提供的一种事务一致性点的原理性示意图;
图11是本发明实施例提供的一种数据系统的交互流程图;
图12是本发明实施例提供的一种数据复制装置的结构示意图;
图13是本发明实施例提供的一种数据复制装置的结构示意图;
图14是本发明实施例提供的计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在介绍本发明实施例之前,需要引入一些数据库技术中的基本概念:
本发明实施例涉及的数据库存储有多个数据表,每个数据表可以用于存储元组。其中,该数据库可以为基于MVCC(multi-version concurrency control,多版本并发控制)的任一类型的数据库。在本发明实施例中,对该数据库的类型不作具体限定。需要说明的是,上述数据库中的数据基于状态属性,可以包括三种状态:当前态、过渡态和历史态,该三种状态合称为“数据的全态”,简称全态数据,全态数据中的各个不同状态属性,可以用于标识数据在其生命周期轨迹中所处的状态。
当前态(current state):元组的最新版本的数据,是处于当前阶段的数据。处于当前阶段的数据的状态,称为当前态。
过渡态(transitional state):不是元组的最新的版本也不是历史态版本,处于从当前态向历史态转变的过程中,处于过渡态的数据,称为半衰数据。
历史态(historical state):元组在历史上的一个状态,其值是旧值,不是当前值。处于历史阶段的数据的状态,称为历史态。一个元组的历史态,可以有多个,反映了数据的状态变迁的过程。处于历史态的数据,只能被读取而不能被修改或删除。
需要说明的是,在MVCC机制下,数据的上述三种状态均存在,在非MVCC机制下,数据可以只存在历史态和当前态。在MVCC或封锁并发访问控制机制下,事务提交后的数据的新值处于当前态。以MVCC机制为例,当前活跃事务列表中最小的事务之前的事务生成的数据,其状态处于历史态。在封锁并发访问控制机制下,事务提交后,提交前的数据的值变为历史态的值,即元组的旧值处于历史态。而被读取的版本上尚有活跃事务(非最新相关事务)在使用,而由于最新相关事务修改了元组的值,其最新值已经处于一个当前态,被读取到的值相对当前态已经处于一个历史状态,因此,其数据状态介于当前态和历史态之间,所以称为过渡态。
例如,MVCC机制下,用户表(user表)的A账户余额从10元充值变为20元,然后消费了15元变为5元,此时金融B机构读取数据做检查事务一直进行中,A之后又充值20元变为25元,则25元为当前态数据,B正在读取到的5元为过渡态,其余的两个值20、10是历史上存在过的状态,都是历史态数据。
基于上述名词解释,图1是本发明实施例提供的一种数据复制方法的实施环境示意图。参见图1,该实施环境可以统称为HTAC(hybrid transaction/analytical cluster,混合事务/分析集群)架构,在HTAC架构内,可以包括TP(transaction processing,事务处理)集群101和AP(analytical processing,分析处理)集群102。
其中,该TP集群可以用于提供事务处理服务,在TP集群中可以包括多个节点设备103,在数据复制过程中,该多个节点设备103用于提供待复制的历史态数据,AP集群的每个节点设备上可以配置有节点数据库,每个节点设备可以是单机设备,也可以是一主两备集群设备,本发明实施例不对节点设备的类型进行具体限定。
其中,该AP集群可以用于提供历史态数据的查询及分析服务,在AP集群中可以包括集群设备104,集群设备104上可以配置有集群数据库,在数据复制过程中,该集群设备104用于将该多个节点设备103发送的历史态数据复制存储到集群数据库,基于集群数据库中已存储的历史态数据提供查询及分析服务,其中,该集群数据库可以是本地的数据库,也可以是该集群设备104通过存储接口所接入的分布式文件系统,从而可以通过该分布式文件系统对TP集群提供无限存储功能,例如,该分布式文件系统可以是HDFS(Hadoopdistributed file system,Hadoop分布式文件系统)、Ceph(一种Linux系统下的分布式文件系统)、Alluxio(一种基于内存的分布式文件系统)等。
当然,该集群设备104可以由一个或多个单机设备或者一主两备集群设备组合而成,各个设备之间实现联机通信,本发明实施例不对集群设备的类型进行具体限定。
在一些实施例中,由于该多个节点设备103可以提供事务处理服务,当任一事务提交完成的时刻,在生成新的当前态数据的同时,也会生成与该当前态数据所对应的历史态数据,而由于历史态数据会占用较多存储空间,而历史态数据又具有保存价值,因此该多个节点设备103可以基于本发明实施例提供的数据复制方法,将历史态数据复制至集群设备104,由集群设备104基于本地执行器(local executor,LE)将历史态数据存储到数据表中,当复制完成后支持在该节点设备103上删除已复制的历史态数据(当然也可以不删除),将历史态数据从TP集群转储到AP集群,从而不仅可以存储当前态数据和过渡态数据,对历史态数据也能实现妥善存储,实现完备的全态数据的存储机制。
在上述过程中,当该多个节点设备103将历史态数据成功复制到集群设备104上之后,还可以将本次复制的历史态数据的元数据注册到集群设备104的元数据(metadata,MD)管理器中,便于集群设备104基于该元数据管理器统计已储备的历史态数据的元信息。
在一些实施例中,用户可以基于SQL路由(structured query language router,SQL Router,简称SR)层中提供的查询语句、查询操作的语义和元数据,路由查询到TP集群或AP集群内存储的任一数据,当然,TP集群主要提供对当前态数据的查询服务,AP集群则主要提供对历史态数据的查询服务。其中,查询操作的语义是根据查询语句分析得到的操作意图,例如,WHERE子句的条件可以表示WHERE子句的意图。
在一些实施例中,尤其是大数据场景下,一个事务不仅会涉及到对单个节点设备的节点数据库进行数据修改,还通常会涉及到对另外的至少一个节点设备的节点数据库进行数据修改,此时可以基于分布式一致性算法(例如two-phase commit,2PC)执行跨节点的写事务,以保证对数据操作的事务的原子性和一致性。
在上述架构中,每个节点设备所对应的一个或多个节点数据库的数据库实例集合称为一个SET(集合),当然,如果该节点设备为单机设备,那么该单机设备的数据库实例为一个SET,如果该节点设备为一主两备集群设备,那么该节点设备的SET为主机数据库实例以及两个备机数据库实例的集合,此时可以基于云数据库(cloud database)的强同步技术来保证主机的数据与备机的副本数据之间的一致性,可选地,每个SET可以进行线性扩容,以应付大数据场景下的业务处理需求。
在一些实施例中,TP集群还可以支持通过分布式协调系统(例如ZooKeeper)实现对该多个节点设备103的管理,例如可以通过ZooKeeper使得某一个节点设备失效(也即是将该节点设备从TP集群中删除)。
基于上述实施环境,图2是本发明实施例提供的一种数据复制方法的交互流程图。参见图2,以TP集群中多个节点设备中的任一节点设备为例进行说明,该实施例应用于节点设备与集群设备的交互过程,该实施例包括:
201、当节点设备检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,该数据队列用于缓存历史态数据。
在上述过程中,该节点设备可以是TP集群内的任一节点设备,在该节点设备上可以配置有节点数据库,在该节点数据库内部,伴随着任一事务的提交,会生成历史态数据和新的当前态数据。
以更新事务(UPDATE操作)为例进行说明,对一个元组执行更新事务时可以划分为两个步骤:其一是更新前的元组上添加删除标识,其二是生成一个新的元组存放修改后的数据内容。当更新事务提交完成后,该更新前的元组和该新的元组才对外呈现“可被读到”的状态,也即是只有在更新事务提交完成后,元组才完成更新有效的过程,数据库引擎才支持对该更新前的元组和该新的元组执行读操作,从而用户能够发现这个元组被修改了。
另一方面,删除事务(DELETE操作)也具有类似的过程,对一个元组执行删除事务时,在原本的元组上添加删除标识,当删除事务提交完成后,元组才完成删除有效的过程,该原本的元组才对外呈现“可被读到”的状态,也即是只有在删除事务提交完成后,用户才能够发现这个元组被删除了。
基于上述情况,节点设备在提供事务处理服务时,当检测到任一事务的提交操作时,节点数据库会得到该事务的历史态数据,如果该节点数据库是不支持存储历史态数据的数据库,那么节点设备可以在事务提交完成的时刻,同时获取到历史态数据,执行上述步骤201中的将该历史态数据添加到数据队列中的操作,从而达到了事务的提交时刻与数据队列的添加时刻同步实现。
在一些实施例中,一些类型的节点数据库(例如Oracle、MySQL/InnoDB等)支持以回滚段的方式暂时性的存储过渡态数据或历史态数据时,事务的提交时刻与数据队列的添加时刻则是异步的,由于节点数据库仅能暂时性的存储历史态数据,数据库引擎会定时清理回滚段中存储的数据,此时节点设备可以在数据库引擎执行回滚段的清理操作时获取到回滚段中存储的历史态数据,执行上述步骤201中的将该历史态数据添加到数据队列中的操作,从而达到了事务的提交时刻与数据队列的添加时刻异步实现。
例如,图3是本发明实施例提供的一种获取历史态数据的原理性示意图,参见图3,假设用户A的初始余额为100元,在第一时刻充值了100元,余额变为200元,在第二时刻之后的某一第二时刻又充值了100元,余额变为300元,此时金融机构对节点数据库执行读操作,而在读操作进行过程中的第三时刻用户A又充值了100元,余额变为400元,此时用户A对应的当前态数据为400,过渡态数据为300,历史态数据包括100和200,以节点数据库为MySQL为例,可以通过执行PURGE操作进行回滚段的清理,而当节点设备检测到PURGE操作时,节点设备将PURGE操作所作用的历史态数据(用户A所对应的100和200)添加到数据队列中,这里仅以用户A的历史态数据为例进行说明,对于用户B、用户C以及用户D都同理使用,这里不做赘述。
在一些实施例中,一些类型的节点数据库(例如PostgreSQL)支持把当前态数据、过渡态数据和历史态数据记录在数据页面中,定时清理数据页面中的历史态数据,此时节点设备可以在数据库引擎执行数据页面的清理操作时获取到数据页面中存储的历史态数据,执行上述步骤201中的将该历史态数据添加到数据队列中的操作,从而达到了事务的提交时刻与数据队列的添加时刻异步实现。
例如,图4是本发明实施例提供的一种获取历史态数据的原理性示意图,参见图4,以节点数据库为PostgreSQL为例,节点数据库将多个元组的当前态数据、过渡态数据和历史态数据记录在数据页面中,在数据页面中还可以记录该多个元组的元组信息,节点数据库通过执行VACUUM操作进行数据页面的清理,当节点设备检测到VACUUM操作时,将VACUUM操作所作用的历史态数据添加到数据队列中,然后清理数据页面中当前最小活跃事务之前的事务所生成的数据。
在上述任一种情况下的将历史态数据添加到数据队列过程中,在该节点设备上可以包括数据缓冲区(buffer),在该数据缓冲区中以数据队列的形式缓存历史态数据,将历史态数据从节点数据库的原始数据表中添加到该数据缓冲区的数据队列中。
202、节点设备每间隔第一预设时长,获取该数据队列中在当前时刻之前的该第一预设时长内增加的至少一个历史态数据。
其中,该第一预设时长可以是任一大于或等于0的数值,例如,该第一预设时长可以是0.5毫秒。
在上述过程中,节点设备每间隔第一预设时长就从数据队列中获取一次历史态数据,但由于数据队列中的历史态数据是无序的,因此需要执行下述步骤203,对历史态数据进行排序后再添加到发送缓冲区中,从而实现将历史态数据异步写入发送缓冲区。
而在一些实施例中,节点设备还可以将历史态数据同步写入发送缓冲区,同步过程也即是每当数据队列中新增一个历史态数据,就将该历史态数据同步地获取到发送缓冲区中。基于上述同步写入发送缓冲区的情况,如果节点数据库是不支持存储历史态数据的数据库,那么节点设备在事务提交完成的时刻,即可以将历史态数据写入数据队列,在同一时刻又将历史态数据写入发送缓冲区。
在上述过程中,步骤202-204可以被替换为:当检测到该数据队列中增加任一历史态数据时,将该历史态数据添加到该发送缓冲区;当检测到该发送缓冲区中增加任一历史态数据时,将该发送缓冲区中的该至少一个历史态数据复制至该集群设备,从而实现了历史态数据的同步复制,保证了历史态数据在写入发送缓冲区时,就是按照事务提交时间戳的顺序以及事务标识的顺序来写入的,从而无需执行上述步骤203中的排序操作,直接执行下述步骤204。
而在一些场景中,如果历史态数据的产生与历史态数据被添加到数据队列的过程是异步的,例如上述步骤201中所涉及到的MySQL/InnoDB等类型的节点数据库中采用PURGE操作清理历史态数据,或者例如PostgreSQL等类型的节点数据库中采用VACUUM操作清理历史态数据,此时会导致数据队列中本身缓存的历史态数据是无序的,那么即使历史态数据是同步写入数据队列和发送缓冲区的,仍然无法保证历史态数据是有序的写入发送缓冲区,因此,在这种场景下仍然需要执行下述步骤203。
图5是本发明实施例提供的一种流复制技术的原理性示意图,参见图5,当检测到任一事务的提交操作后,可以使原本的当前态数据转换为历史态数据,此时先将历史态数据从原始数据表添加到数据队列中,然后基于上述步骤202中的操作,将历史态数据从数据队列异步添加到发送缓冲区,但由于间隔了第一预设时长,从数据队列中获取到的历史态数据是无序的,为了保证历史态数据能够有序地写入发送缓冲区,需要执行下述步骤203。
203、节点设备按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到至少一个有序排列的历史态数据,将该至少一个有序排列的历史态数据添加到发送缓冲区。
其中,每个历史态数据对应于一个事务,该事务标识(identification,事务ID)用于唯一标识一个事务,事务标识按照事务产生时间戳(timestamp)呈单调递增,例如该事务标识可以就是事务产生时间戳,当然,该事务标识也可以是按照事务产生时间戳赋值的呈单调递增趋势的数值,需要说明的是,一个事务通常对应于两个时间戳,分别是事务产生时间戳和事务提交时间戳,对应于事务的产生时刻和提交时刻。
其中,该发送缓冲区可以是一个在数据复制过程中循环使用的部分,该发送缓冲区可以是发送进程或发送线程执行发送任务(将历史态数据从节点设备发送至集群设备)时所调用的缓冲区,可选地,由于发送进程或者发送线程的数量可以是一个或多个,因此该发送缓冲区的数量也可以是一个或多个,在上述步骤203中仅以将有序的历史态数据写入任一个发送缓冲区为例进行说明。
在上述过程中,当节点设备将历史态数据异步写入发送缓冲区之前,可以先对历史态数据排序,在排序时先按照事务提交时间戳从小到大的顺序进行排序,再按照事务标识从小到大的顺序进行排序,再将有序排列的历史态数据写入该发送缓冲区,保证了在发送缓冲区内的历史态数据是绝对有序的。
图6是本发明实施例提供的一种流复制技术的原理性示意图,参见图6,当发送缓冲区的数量为多个时,每个发送缓冲区获取历史态数据的方法与上述202-203的情况类似,在此不做赘述,在上述步骤202-203中,节点设备将数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,从而可以通过增加发送缓冲区的数量,更加快速地将数据队列中的历史态数据写入发送缓冲区。
可选地,当发送缓冲区的数量为多个时,节点设备可以将数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中,从而能够提高多个发送缓冲区的利用率,也能提升对该原始数据表中历史态数据的发送速率。
在一些实施例中,当节点设备将历史态数据从数据队列中添加到发送缓冲区之后,可以在数据队列中将该历史态数据标记为可复用的状态,从而能够将该历史态数据转储在本地。
204、当符合第一预设条件时,节点设备将该发送缓冲区中的该至少一个历史态数据复制至集群设备。
可选地,该第一预设条件可以为节点设备检测到发送缓冲区中增加任一历史态数据,其中该发送缓冲区用于缓存待复制的历史态数据,从而在节点设备执行从数据队列中获取历史态数据的过程中,一旦向发送缓冲区中成功添加了一个历史态数据,则发送缓冲区会向集群设备复制该历史态数据,从而能够源源不断地将历史态数据复制到集群设备中,这种数据复制的技术称为流复制技术。
在一些实施例中,该第一预设条件还可以是节点设备检测到该发送缓冲区的已用数据量占该发送缓冲区的容量的比例达到比例阈值,从而在节点设备执行从数据队列中获取历史态数据的过程中,一旦发送缓冲区的已用数据量占发送缓冲区容量的比例达到比例阈值,则发送缓冲区会向集群设备复制该历史态数据,从而能够源源不断地将历史态数据复制到集群设备中。其中该比例阈值可以是任一大于或等于0且小于或等于1的数值,例如该比例阈值可以是100%或75%等数值。
在一些实施例中,该第一预设条件还可以是当前时刻距离该发送缓冲区上一次向集群设备执行数据复制达到第二预设时长,从而在节点设备执行从数据队列中获取历史态数据的过程中,一旦节点设备距离上次数据复制达到第二预设时长,则发送缓冲区会向集群设备复制该历史态数据,从而能够源源不断地将历史态数据复制到集群设备中。
其中,该第二预设时长可以是任一大于或等于第一预设时长的数值,例如当第一预设时长为0.5毫秒时,该第二预设时长可以是1毫秒,此时发送缓冲区每隔1毫秒向集群设备执行一次数据复制,而在这1毫秒的间隔内,发送缓冲区又每间隔0.5毫秒,就从数据队列中获取这0.5毫秒内数据队列中新增的历史态数据(可以是一个或多个)。
在一些实施例中,该第一预设条件还可以是当前时刻距离该发送缓冲区上一次向集群设备执行数据复制达到第三预设时长,其中,该第三预设时长为多个节点设备中每一个节点设备都配置有的相同的预设时长,该第三预设时长大于第二预设时长,从而在多个节点设备各自执行数据复制的过程中,每间隔第三预设时长,多个节点设备同时执行一次数据复制任务,以控制各个节点设备数据复制时相互之间的延时最大不超过该第三预设时长。
在一些实施例中,该第一预设条件还可以是当节点设备检测到该发送缓冲区的已用数据量占该发送缓冲区的容量的比例达到比例阈值,或者当前时刻距离该发送缓冲区上一次向集群设备执行数据复制达到第二预设时长。上述情况也即是:在数据复制的过程中,一旦发送缓冲区的已用数据量占发送缓冲区容量的比例达到了比例阈值,则执行一次数据复制任务,或者即使发送缓冲区的已用数据量占发送缓冲区容量的比例还没有达到比例阈值,但是当前时刻距离该发送缓冲区上一次向集群设备执行数据复制达到了第二预设时长,也执行一次数据复制任务。
在上述过程中,节点设备可以基于发送进程或者发送线程,将该发送缓冲区中的该至少一个历史态数据发送至集群设备,可选地,节点设备还可以当符合第一预设条件时,一次性将该发送缓冲区中缓存的所有历史态数据发送至该集群设备,上述步骤202-204构成了一个循环过程,使得节点设备能够基于一种流复制的技术,持续地将历史态数据复制到集群设备中。
在一些实施例中,该发送缓冲区向集群设备发送的每个历史态数据中可以包括该历史态数据所对应事务的事务标识、该事务的一个或多个子事务所对应的一个或多个节点设备的节点标识或者该历史态数据的全量数据中的至少一项。
其中,一个事务可以包括至少一个子事务,每个子事务对应于一个节点设备,每个节点设备具有唯一的节点标识,该节点标识可以是节点设备的IP地址(internet protocoladdress,互联网协议地址),也可以是节点设备的标识号码,该标识号码与IP地址具有一一对应的映射关系,TP集群中的任一节点设备中可以存储有该映射关系,当然AP集群的集群设备中也可以存储有该映射关系。
在一些实施例中,可以采用位图编码或者字典压缩等方式对上述一个或多个节点设备的节点标识进行编码,使得节点设备所发送的历史态数据的长度变短,进一步地压缩了数据传输所占用的资源。
在一些实施例中,上述数据复制过程可以通过TP集群的Checkpoint(检查点)操作实现,节点设备还可以设置TP集群的Checkpoint操作频度,其中,该操作频度用于表示TP集群执行Checkpoint操作的频率,例如该操作频度可以是1秒执行1次,在一次Checkpoint操作中,TP集群中的每一个节点设备都执行一次上述步骤204中的数据复制过程,使得TP集群中新产生的历史态数据可以一次性地转储到AP集群中,也即是Checkpoint操作频度实际上是对应于上述第三预设时长。
而在一些实施例中,当TP集群内节点设备的数量较多时,如果仍然对TP集群中每一个节点设备遍历执行一次Checkpoint操作,会导致TP集群向AP集群进行数据复制所消耗的时长大量增加,还会导致HTAP的性能出现颠簸,影响了HTAP的稳定性和鲁棒性,因此对于TP集群内的每一个节点设备,可以执行“微Checkpoint”操作,微Checkpoint的操作频度快于Checkpoint的操作频度,从而能够使得节点设备的历史态数据更快地转储到AP集群,满足AP集群对历史态数据的获取需求,保障了历史态数据的复制效率,提高了AP集群的实时可用性。
例如,可以将微Checkpoint的操作频度设置为Checkpoint的操作频度的千分之一个时间单位,也即是如果Checkpoint操作1秒执行1次,则微Checkpoint操作1毫秒执行1次,当然,这里仅仅是对微Checkpoint的操作频度进行示例性描述,本发明实施例不对微Checkpoint的操作频度与Checkpoint的操作频度之间的比例进行具体限定。
需要说明的是,在上述情况中,微Checkpoint的操作频度实际上是对应于上述第二预设时长,不同的节点设备可以设置有不同的微Checkpoint的操作频度,微Checkpoint操作频度可以与节点设备每秒钟活跃事务数量呈正相关,例如,对于每秒钟活跃事务数量占TP集群前10的节点设备,可以设置较快的微Checkpoint操作频度。当然,即使不同的节点设备设置了相同的微Checkpoint操作频度,由于不同的节点设备的发送缓冲区的已用数据量所占发送缓冲区容量的比例通常不会同时达到比例阈值,也会导致不同节点设备之间的微Checkpoint操作不同步。
在一些实施例中,在TP集群不同节点设备分别执行微Checkpoint操作的同时,还可以强制TP集群中所有节点设备定时地执行一次Checkpoint操作,从而避免了TP集群内部不同节点设备由于微Checkpoint操作的不同步造成数据延时过大,也就提升了影响AP集群的实时可用性。例如,各个节点设备每1毫秒执行一次微Checkpoint操作,而TP集群每1秒遍历所有的节点设备,执行一次Checkpoint操作,保证了AP集群接收历史态数据的数据延时最大不超过1秒(不超过Checkpoint操作频度)。
进一步地,在上述步骤204中的数据复制过程也可以分为同步和异步,在同步复制中,数据复制与历史态数据的清理操作紧密相关,每次清理操作(例如PRUGE操作或者VACUUM操作)所对应的清理事务在提交阶段都会发起一次历史态数据流复制,也即是节点设备在清理操作完成之前先将被清理的所有历史态数据同步到集群设备,集群设备基于ARIES算法对数据复制过程的元数据的重做日志(REDO LOG)进行回放,节点设备等待回放完成后才将清理事务的状态置为“已提交”,使得历史态数据能够尽快地复制到集群设备上,极大地保证了历史态数据的安全性。
需要说明的是,对于原始数据表中清理出的历史态数据,基于流复制技术就能实现数据复制,但是在一些实施例中,可以仅对本次数据复制的元数据进行重做日志的记录和回放,实现节点设备与集群设备之间的再次核验和校对,能够更大程度地保证本次数据复制过程的安全性,在这种情况下,仍然可以避免对原始数据表中清理出的历史态数据一一执行重做日志的回放,也就简化了回放过程的数据量,缩短了回放过程消耗的时长,提升了数据复制的效率。
在一些实施例中,数据复制过程还可以是异步的,此时数据复制与清理事务的提交是不相关的,节点设备的清理事务在提交阶段不会发起历史态数据流复制,节点设备与集群设备之间的流复制是将按照第一预设条件所规定的第二预设时长而进行发起的,将两次流复制之间的时间间隔内节点设备上发生修改的历史态数据复制到集群设备,节约了数据复制过程所占用的数据传输资源。
在上述步骤204中,还涉及到对数据复制的完成事项的确认,此时可以分为三种确认级别,分别是确认回放级别、确认接收级别、确认发送级别,下面进行详述:
在确认回放级别中,只有当节点设备接收到集群设备的复制成功响应后,节点设备才认为一次数据复制任务完成,实现了数据复制过程的强同步,保证每次的数据复制一定是原子的,也即是数据复制的整体过程要么成功,要么失败,不存在中间状态,一旦任一环节出现异常,则认为本次数据复制失败,需要对本次数据复制整体进行重做,保证了数据复制过程的安全性。可选地,该复制成功响应可以是一个“Applied”指令。
在确认接收级别中,当节点设备接收到集群设备的数据接收响应后,节点设备就认为一次数据复制任务完成,实现了数据复制过程的弱同步,保证除了集群设备的元数据回放工作之外,数据复制过程中的其余操作都是原子的,此时如果元数据回放失败,那么不会使得本次数据复制整体重做,在兼顾了数据复制效率的同时,在一定程度上保证了数据复制过程的安全性。可选地,该数据接收响应可以是一个“Received”指令。
在确认发送级别中,当节点设备完成数据发送操作后,节点设备就认为一次数据复制任务完成,此时虽然不能保证数据复制过程是原子的,但节点设备与集群设备之间互不影响,使得当集群设备产生响应发送宕机等异常情况时,不会阻塞节点设备再次发起数据复制,而当集群设备具有的单机设备数量不止一个时,即使一个单机设备故障,对于其余单机设备的数据复制过程仍可以正常进行,保障了数据复制的效率。
205、集群设备从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,该接收缓冲区用于缓存接收的历史态数据。
其中,该接收缓冲区可以是一个在数据复制过程中循环使用的部分,该发送缓冲区可以是接收进程或接收线程执行接收任务(接收节点设备发送的历史态数据)时所调用的缓冲区,可选地,由于接收进程或者接收线程的数量可以是一个或多个,因此该接收缓冲区的数量也可以是一个或多个,本发明实施例仅以一个接收缓冲区为例进行说明,对于其他的接收缓冲区具有类似的接收历史态数据的过程,在此不作赘述。
在一些实施例中,一个接收缓冲区可以对应于一个节点设备,此时上述步骤205也即是:集群设备从至少一个接收缓冲区中确定与节点设备所对应的接收缓冲区,基于接收进程,将该节点设备发送的至少一个历史态数据缓存至该接收缓冲区,使得每个接收缓冲区能够有针对性地接收来自同一节点设备的历史态数据。
当然,该接收缓冲区也可以与节点设备之间不存在对应关系,而是由集群设备根据接收缓冲区当前可用的存储空间来进行数据接收任务的分配,此时上述步骤205也即是:集群设备从至少一个接收缓冲区中确定当前可用的存储空间最大的接收缓冲区,基于接收进程,将节点设备发送的至少一个历史态数据缓存至该接收缓冲区,使得集群设备能够将历史态数据添加到当前可用的存储空间最大的接收缓冲区,提高了数据接收的速度。
206、集群设备将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,该转发缓冲区用于对历史态数据进行数据格式转换。
在上述过程中,接收缓冲区将历史态数据添加到(也即是复制)转发缓冲区的过程也可以具有同步复制和异步复制两种方式,在同步复制的过程中,每当集群设备从接收缓冲区中接收到历史态数据(可能是一个或多个,但属于节点设备一次性发送的),即立刻对将该历史态数据复制到转发缓冲区。
在一些实施例中,异步复制的过程也即是:集群设备从接收缓冲区中接收历史态数据,每间隔第四预设时长,将该接收缓冲区中的所有历史态数据复制到转发缓冲区。其中,第四预设时长为任一大于或等于0的数值。
在一些实施例中,如果节点设备每间隔第二预设时长执行一次微Checkpoint操作,那么上述步骤206也即是:每间隔第二预设时长,集群设备从该至少一个接收缓冲区中接收任一节点设备发送的至少一个历史态数据,当然对于任一个节点设备都以此类推,不同的节点设备的第二预设时长可以相同也可以不同。
在一些实施例中,如果TP集群所有的节点设备每间隔第三预设时长执行一次Checkpoint操作,那么上述步骤207也即是:每间隔第三预设时长,集群设备从该至少一个接收缓冲区中接收多个节点设备同时发送的至少一个历史态数据,保证了TP集群不同节点设备之间的数据延时不超过第三预设时长,提升了AP集群存储历史态数据的实时可用性。
在一些实施例中,不管是同步复制还是异步复制,当历史态数据成功复制到转发缓冲区之后,在接收缓冲区中清空本次复制的历史态数据,从而能够及时清理出缓存空间来存储新的历史态数据,从而加快了数据传输的速度。
在上述步骤206中,由于节点设备发送的至少一个历史态数据的格式是经过压缩后的数据格式,在转发缓冲区能够将该至少一个历史态数据还原为原本的符合元组格式的数据,以便于执行下述步骤207,在一些实施例中,该符合元组格式的数据可以是行格式的数据。
207、集群设备将该至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在该节点设备中所在的一个原始数据表。
在上述步骤中,根据业务需求的不同,目标数据表可以包括两种存储格式,因此,集群设备将该至少一个数据项存入目标数据表时也存在两种相应地存储过程,下面进行详述:
在一些实施例中,对任一以元组为单位的数据项,集群设备可以按照该数据项所在的原始数据表中的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中,从而使得目标数据表与原始数据表的存储格式完全相同,便于在通用的情况下跟踪一个元组的生命周期。
在上述过程中,为了保证原始数据表与目标数据表的格式一致,当任一节点设备与集群设备建立连接后,可用基于逻辑复制技术(例如MySQL的BinLog技术)或者物理复制技术(例如PostgreSQL的基于REDO LOG的复制技术),在集群设备中创建与节点设备中各个原始数据表所对应的各个目标数据表,其中原始数据表用于存储多个元组的当前态数据,而与该原始数据表对应的目标数据表则用于存储该多个元组的历史态数据。
在上述BinLog(二进制日志,也称逻辑日志)技术中,BinLog用于记录数据库中的操作,在BinLog中以特定的格式来描述数据改动、表结构改动等数据库事务操作,而能够记录在BinLog中的事务操作都是已经完成提交或完成回滚的。下面以MySQL数据库的逻辑复制技术为例进行说明,当节点设备与集群设备建立连接后,节点设备上可以维护一个或多个Dump-Thread线程(倾倒线程),一个Dump-Thread线程用于与一个集群设备进行对接,在节点设备与集群设备进行逻辑复制时,可以执行下述步骤:
集群设备向节点设备发送已经同步的BinLog的信息(包括数据文件名和数据文件内的位置),节点数据库根据已经同步的BinLog的信息,确定当前已同步的位置;节点设备的Dump-Thread线程将未同步元数据的BinLog数据发送到集群设备,集群设备通过IO-Thread(input/output thread,输入输出线程)接收节点设备同步过来的BinLog数据,将BinLog数据写入Relay-Log(转接日志)所在的文件中,集群设备通过SQL-Thread(SQL线程)从Relay-Log文件中读取BinLog数据,执行BinLog数据解码后得到的SQL语句,从而可以增量的将节点设备的元数据复制到集群设备中。
在一些实施例中,对任一表示字段变更情况的数据项,集群设备可以按照键值对(key-value)的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中,从而不仅可以保留数据项原本承载的信息,还可以通过键值对的存储格式,定制化地跟踪任一字段的历史态数据的变更情况。
在上述以键值对格式存储的过程中,需要确定目标数据表的键名(key)和键值(value),在一些实施例中,具体可以进行如下操作来确定键名:集群设备将数据项在原始数据表中的键名或者该数据项的生成时间中的至少一项,确定为该数据项在该目标数据表中的键名,可选地,当原始数据表存在键名时,可以将原始数据表中的键名以及该数据项的生成时间确定为目标数据表中的键名,从而能够从不同的维度来跟踪历史态数据的变更情况,当然,而如果原始数据表不存在键名时,则可以直接将数据项的生成时间确定为目标数据表中的键名,能够直观地记录数据项的生成时间。
在一些实施例中,还可以进行如下操作来确定键值:集群设备将该至少一个数据项在原始数据表中被修改的字段,确定为该至少一个数据项在目标数据表中的键值,其中,被修改的字段类似于一个字符串的格式,每个被修改的字段的存储格式可以为“键名:旧值,新值”,可选地,被修改的字段可以是一个或多个,如果有多个字段同时被修改,则被修改的字段之间可以用分号隔开。
例如,图7是本发明实施例提供的一种原始数据表的结构示意图,参加图7,以一个表示字段变更情况的数据项为例进行说明,在原始数据表中存在有4个键名,分别是服务器号、服务器状态、所属部门和地区。假设在一次事务操作中,对该数据项的“服务器状态”和“所属部门”进行了修改,图8是本发明实施例提供的一种目标数据表的结构示意图,参见图8,在目标数据表中可以直观地看到“服务器状态”和“所属部门”以及操作时间的动态变更情况,由于数据项的“地区”没有被修改,因此在目标数据表中不需要展示“地区”的变更情况,此时,在目标数据表中各个键值的存储格式可以是“服务器状态:提供服务,服务中断;所属部门:部门A,部门B”。
在一些实施例中,集群设备还可以通过存储进程或者存储线程,将转发缓冲区中的数据项通过存储接口(storage interface)上传至分布式文件系统进行持久化存储,以实现历史态数据的无限存储。
以分布式文件系统为Ceph,集群设备的集群数据库为MySQL为例进行说明,在MySQL上可以通过两种方式来挂载Ceph,例如,可以通过挂载CephFS来完成配置,此时假设集群设备中包括一个监管(Monitor)设备(node1)以及两个单机设备(node2和node3),具体可以执行下述步骤:
首先,集群设备创建目录并准备bootstrap keyring文件,可以通过“sudo mkdir-p/var/lib/ceph/mds/ceph-localhost”命令实现,在创建目录后Ceph会在监管设备所在的node1上自动生成bootstrap keyring文件,此时需要将bootstrap keyring文件复制到node2和node3上,可以通过“/var/lib/ceph/bootstrap-osd/ceph.keyring”命令进行复制,需要说明的是,此处是以集群设备中包括2个单机设备为例进行说明,如果集群设备中包括2个以上的单机设备,要在其他的单机设备上挂载CephFS时,需要将bootstrapkeyring文件复制到该单机设备上。
其次,集群设备生成done文件和sysvinit文件,在一些实施例中,集群设备可以通过语句“sudo touch/var/lib/ceph/mds/ceph-mon1/done”生成done文件,以及可以通过语句“sudo touch/var/lib/ceph/mds/ceph-mon1/sysvinit”生成sysvinit文件。
其次,集群设备生成mds的keyring文件,在一些实施例中,集群设备可以通过语句“sudo ceph auth get-or-create mds.mon1osd'allow rwx'mds'allow'mon'allowprofile mds'-o/var/lib/ceph/mds/ceph-mon1/keyring”生成keyring文件。
其次,集群设备创建Cephfs的pool,在一些实施例中,集群设备可以通过语句“ceph osd pool create cephfs_data 300”创建Cephfs的pool的数据,通过语句“cephosd pool create cephfs_metadata 300”创建Cephfs的pool的元数据。
其次,集群设备启动MDS文件(一种镜像文件),在一些实施例中,集群设备可以通过语句“sudo/etc/init.d/ceph start|stop mds.localhost”来启动MDS。
最后,集群设备创建Cephfs和挂载Cephfs,在一些实施例中,集群设备可以通过语句“ceph fs new cephfs cephfs_metadata cephfs_data”来创建Cephfs,当创建完成后,集群设备可以通过语句“mount-t ceph[mon监管设备ip地址]:6789://mnt/mycephfs”来完成Cephfs的挂载。
可选地,集群设备还可以通过挂载Ceph的RBD(一种镜像文件)的方式来完成配置,具体可以执行下述步骤:
首先,集群设备创建RBD的pool,例如可以通过语句“ceph osd pool create rbd256”进行创建。
其次,集群设备创建RBD块设备myrbd(也即是申请一个块存储空间),例如可以通过语句“rbd create rbd/myrbd--size 204800-m[mon监管设备ip地址]-k/etc/ceph/ceph.client.admin.keyring”进行创建。
其次,集群设备创建RBD映射,获取设备名称,也即是将RBD映射到监管设备上,例如可以通过语句“sudo rbd map rbd/myrbd--name client.admin-m[mon监管设备ip地址]-k/etc/ceph/ceph.client.admin.keyring”来进行映射,同时获取到监管设备的名称,需要说明的是,这里以挂载到监管设备为例进行说明,实际上要挂载到哪个单机设备,就执行将RBD映射到该单机设备上,获取该单机设备的名称的操作。
最后,集群设备根据获取到的设备名称创建文件系统,挂载RBD,例如可以通过语句“sudo mkfs.xfs/dev/rbd1”进行创建文件系统,通过语句“sudo mount/dev/rbd1/mnt/myrbd”进行RBD挂载。
需要说明的是,在一些实施例中,不仅集群设备可以通过存储接口接入分布式文件系统,TP集群中的任一节点设备也可以通过存储接口接入分布式文件系统,均可以执行上述类似的挂载方式完成配置,这里不再赘述。
208、集群设备向节点设备发送复制成功响应。
在上述过程中,当集群设备将历史态数据成功存储到目标数据表后,集群设备可以向节点设备发送一个ACK数据(acknowledgement,确认字符),该ACK数据是一种传输类控制字符,用于表示已对节点设备发送的历史态数据复制成功。
209、当节点设备接收到该集群设备发送的复制成功响应时,清空与该复制成功响应所对应的发送缓冲区。
在上述过程中,节点设备接收到复制成功响应后,才允许清空发送缓冲区,保证了节点设备与集群设备之间的强同步,保证了数据复制过程的安全性。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本发明实施例提供的方法,通过当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,从而能够将任一事务的历史态数据缓存到数据队列中,将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,从而可以基于发送缓冲区执行发送进程或发送线程,当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备,使得节点设备能够每当符合第一预设条件,就将至少一个发送缓冲区中的历史态数据复制到集群设备,节点设备不用把原本的历史态数据格式转化为日志格式,集群设备也不必将日志解析为数据原始格式后再进行存储,从而在数据复制时无需对历史态数据进行重做日志的回放,避免了繁琐的回放流程,缩短了重做日志回放过程的时长,提高了数据复制过程的效率。
进一步地,节点设备对历史态数据进行同步复制,保证了历史态数据是按照事务提交的先后顺序被复制到集群设备,也就避免了对历史态数据进行排序的步骤,简化了流复制过程的流程,当然,节点设备还可以将数据队列中的历史态数据异步复制到发送缓冲区,从而批量地将数据队列中的历史态数据获取到发送缓冲区中,避免了频繁执行历史态数据复制操作,也就避免影响节点设备的处理效率,而在异步复制之前先对历史态数据进行排序,能够保证历史态数据有序地被添加到发送缓冲区中,方便了后续集群设备获取最小事务标识。
进一步地,如果符合该第一预设条件,发送缓冲区会向集群设备复制历史态数据,复制成功后清空发送缓冲区,此后发送缓冲区循环执行添加历史态数据和发送历史态数据的过程,能够源源不断地将节点设备的历史态数据复制到集群设备中,避免了对历史态数据进行重做日志的回放,提高了数据复制过程的效率。
进一步地,当发送缓冲区的数量为多个时,节点设备可以将数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中,从而能够提高多个发送缓冲区的利用率,也能提升对该原始数据表中历史态数据的发送速率。
进一步地,第一预设条件为节点设备检测到发送缓冲区中增加任一历史态数据时,能够实现数据复制的同步复制,保障了历史态数据复制过程的实时性,而第一预设条件为节点设备检测到发送缓冲区的已用数据量占该发送缓冲区的容量的比例达到比例阈值,能够有效地将发送缓冲区的已用数据量所占发送缓冲区容量的比例控制在比例阈值内,提升了数据复制过程的效率,进一步地,该第一预设条件还可以是当前时刻距离该发送缓冲区上一次向集群设备执行数据复制达到第二预设时长,从而能够控制两次数据复制之间的最大时间间隔,保障了历史态数据复制过程的实时性,进一步地,该第一预设条件还可以是当前时刻距离该发送缓冲区上一次向集群设备执行数据复制达到第三预设时长,由于第三预设时长是TP集群各个节点设备所具有的相同的预设时长,从而能够控制TP集群不同节点设备数据复制过程的延时。
进一步地,当集群设备从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据后,可以将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,从而能够对压缩后的历史态数据的格式进行还原,由于直接得到了保留有原本格式的历史态数据,那么就避免了对日志解析来获得历史态数据,从而将该至少一个数据项存储到集群数据库的至少一个目标数据表中,能够妥善地实现对历史态数据的保存。
进一步地,根据业务需求的不同,集群设备的目标数据表中可以支持两种存储格式,对以元组为单位的数据项,集群设备可以按照原始数据表中的存储格式进行存储,便于在通用的情况下跟踪一个元组的生命周期,而另一方面,,对表示字段变更情况的数据项,集群设备可以按照键值对的存储格式进行存储,从而不仅可以保留数据项原本承载的信息,还可以定制化地跟踪任一字段的历史态数据的变更情况。
进一步地,在以键值对格式存储的过程中,集群设备可以将数据项在原始数据表中的键名或者该数据项的生成时间中的至少一项,确定为该数据项在该目标数据表中的键名,从而能够从不同的维度来跟踪历史态数据的变更情况,直观地记录数据项的生成时间,进一步地,集群设备将该至少一个数据项在原始数据表中被修改的字段,确定为该至少一个数据项在目标数据表中的键值,能够直观地查看被修改的字段,跟踪任一字段的历史态数据的变更情况。
上述实施例提供了一种数据复制方法,使得当符合第一预设条件时,节点设备能够基于流复制技术,将历史态数据复制到集群设备上,提高了历史态数据的安全性,而当集群设备妥善存储历史态数据之后,还可以对外提供历史态数据的查询或者分析等服务。
在上述实施例中,已经提到过一个事务可以包括一个或多个子事务,而不同的子事务可以对应于不同的节点设备,虽然节点设备可以每间隔第二预设时长执行一次数据复制过程,但不同的节点设备的起始时间点可以不同,导致节点设备之间的数据复制有可能是异步的,因此在一些场景中,对于同一个已经提交的事务而言,由于该事务的一个或多个子事务所对应的节点设备在数据复制过程中不同步,导致有的节点设备已经将子事务所对应的历史态数据复制到集群设备了,但有的节点设备可能还没有将子事务所对应的历史态数据复制到集群设备,导致集群设备不能够完整地读取同一个事务所影响的所有历史态数据,在AP集群进行数据读取时会出现“不一致性”的问题。为解决集群设备读取的“不一致性”的问题,图9是本发明实施例提供的一种数据查询过程的流程图,参见图9,在集群设备上读取历史态数据的步骤如下:
901、集群设备按照事务提交时间戳从小到大的顺序,对至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到目标数据序列。
其中,上述排序过程是指按照事务标识赋值的从小到大的顺序进行排序,而一个事务在另一个事务之前是指一个事务的事务标识的赋值小于另一个事务的事务标识的赋值,在不同事务的事务标识之间,如果事务的提交时刻越晚,则事务的事务标识赋值越大,因此,事务标识的赋值实际上是按照提交时刻的时间戳递增的。上述步骤901中的排序过程与上述步骤203类似,这里不做赘述。
在上述过程中,虽然每个节点设备的至少一个发送缓冲区在数据发送前都进行过排序,但是由于集群设备中可以设置有至少一个接收缓冲区,因此,虽然每一个接收缓冲区中接收到的历史态数据是有序的(可以视为一种分段有序的情况),但无法保证所有的接收缓冲区的历史态数据综合起来是有序的,因此集群设备需要执行上述步骤901,对各个接收缓冲区中接收到的至少一个历史态数据进行排序,其中,该至少一个历史态数据是多个节点设备发送的历史态数据。
在上述过程中,由于TP集群定时执行一次Checkpoint操作,因此每当集群设备从至少一个接收缓冲区中接收Checkpoint操作所发送的至少一个历史态数据时,可以通过对该至少一个历史态数据进行排序,能够得到按照事务提交时间戳有序且按照事务标识有序的目标数据序列,此时为了保证读取的一致性,执行下述步骤902-903。
902、集群设备遍历该目标数据序列,对每个历史态数据的位图编码执行按位与操作,将输出为真的历史态数据所对应的事务确定为至少一个事务。
在上述步骤204中已经提到过,任一节点设备向集群设备发送历史态数据时,由于一个事务的一个或多个子事务对应于一个或多个节点设备,为了记录与该事务相关的节点设备(也即是子事务对应的节点设备),通常可以采用位图编码或者字典压缩等方式对该一个或多个节点设备的节点标识进行编码,从而对历史态数据的长度进行压缩,减少数据传输所占用的资源。
其中,该至少一个事务为符合第二预设条件的事务,该第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在集群数据库中。
在上述步骤902中,集群设备从该目标数据序列中获取符合该第二预设条件的至少一个事务,获取至少一个事务的方式是由节点设备对历史态数据的压缩方式而决定的。
上述过程给出的是当节点设备采用位图编码进行数据压缩时,确定至少一个事务的方法,也即是对目标数据序列中每个历史态数据进行按位与操作,如果所有的bit位都为1(真),那么表示该历史态数据所对应的事务符合第二预设条件,因为该事务的所有子事务所对应的数据项都已经被存储到集群数据库中了,此时可以将该至少一个事务称为“备选一致性点”。
在一些实施例中,如果节点设备采用字典压缩的方式进行数据压缩时,上述步骤902还可以采用下述方式进行替换:集群设备遍历该目标数据序列,对每个历史态数据的压缩字典进行解码,得到与每个历史态数据对应的全局事务标识,当确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中时,将该全局事务标识所对应的事务确定为一个符合该第二预设条件的事务,从而对于字典压缩的情况也能够确定出备选一致性点,并通过下述步骤903可以从备选一致性点中找到“完备的最小的事务ID”。
其中,如果一个事务包括多个子事务,那么该事务可以称为一个“全局事务”,一个全局事务意味着这个事务中涉及到的多个子事务对应于多个节点设备,那么对任一全局事务而言可以包括两种类型的事务标识,分别是全局事务标识和局部事务标识,全局事务标识用于表示整个TP集群中所有全局事务中的唯一标识信息,而局部事务标识则用于表示在各自的节点设备中所有事务中的唯一标识信息,对于一个全局事务而言,所有的子事务具有相同的全局事务标识,并且各个子事务还具有各自的局部事务标识。
基于上述情况,那么确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中的过程可以是如下过程:集群设备根据该全局事务标识,获取在该集群数据库中已存储的且具有该全局事务标识的数据项,当获取到的该数据项以及解码得到的该历史态数据与事务的所有子事务对应时,确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中。
903、集群设备将该至少一个事务中排序最靠前的事务所对应的事务标识确定为最小事务标识。
在上述过程中,由于集群设备已经在步骤901中对各个历史态数据按照事务标识从小到大的顺序进行排序,因此可以直接获取至少一个事务中排序最靠前的事务所对应的事务标识,也就获取到了至少一个事务的事务标识中的最小事务标识,在节点设备中事务标识是按照时间戳递增的,因此获取到了最小事务标识,也就意味着得到这本次Checkpoint操作所接收到的历史态数据中,最完备(指符合第二预设条件)并且时间戳最小的事务,该最小事务标识可以称作“完备的最小的事务ID”,对于事务ID小于该最小事务标识的数据项,可以视为一个“微一致性点”。
在上述步骤901-903中,集群设备在至少一个历史态数据的事务标识中,确定了符合第二预设条件的最小事务标识,该第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在集群数据库中,从而找到了本次Checkpoint操作中的完备的最小的事务ID,在一些实施例中,如果在本次Checkpoint操作中不能找到一个比上一次Checkpoint操作中所确定的最小事务标识更大的新一轮的最小事务标识,那么将暂时不对最小事务标识进行更新,而是在TP集群的下一次Checkpoint操作中执行上述步骤901-903所执行的操作,直到确定新的最小事务标识之后,执行下述步骤904,从而可以保证在TP集群中新事务不断的提交的过程中,不断产生事务标识更大的历史态数据,这些历史态数据通过Checkpoint操作被转储到AP集群中,同时会AP集群可以不断地对最小事务标识的数值进行更新,使得完备的最小的事务ID取值越来越大,类似于一个向前滚动的过程,保障了AP集群提供数据查询服务的实时性。
904、集群设备根据该最小事务标识,确定可见数据项,基于该可见数据项,提供数据查询服务,其中,提交该可见数据项的事务标识小于或等于该最小事务标识。
在上述步骤904中,集群设备可以基于MVCC技术的元组可见性判断算法,使得事务标识小于或等于该最小事务标识的数据项是对外可见的,从而保障了在微Checkpoint操作机制下AP集群的读取一致性。
在一些实施例中,当集群设备基于可见数据项提供数据查询服务时,可以实现全时态数据的任何读操作的读取一致性,因为读取一致性在本质上可以认为是基于历史态数据所构建的事务一致性,因此,实现了读取一致性也就确保了从AP集群读取到的任何时间点的历史态数据都是处于一个事务一致性点。
例如,图10是本发明实施例提供的一种事务一致性点的原理性示意图,参见图10,假设集群数据库中存在三个数据项,分别为r1、r2、r3(三者可分布在AP集群中不同的单机设备上)。初始的数据状态用白色圆圈表示,此时r1、r2、r3处于一个一致性状态(用实线表示),当新的事务发生时,会致使数据的版本发生改变,如T1事务在t1时刻提交,修改了数据项r1,生成一个r1的新版本,在图中用黑色圆圈表示;后来,事务T2在t2时刻提交,修改了数据项r2和r3,产生r2和r3的新版本,在图中用斜线圆圈表示;后来,T3事务在t3时刻提交,修改了数据项r1和r3,产生r1和r3的新版本,在图中用网格圆圈表示;后来,T4事务在t4时刻提交,修改了数据项r2,产生r2的新版本,在图中用网点圆圈表示。经过T1~T4这一系列事务的操作,在全时态数据的维度上进行观察,产生了图中所示的实线、长划线、短划线、点划线、点线共5个一致性状态,每一条线段均可以代表一个一致性状态。那么,如果需要查询t1.5、t3.5等历史时刻的历史态数据,也即是可以通过图中曲线所示的数据版本所处的符合一致性状态的历史态数据(都满足了事务一致性)提供数据查询服务。
在一些实施例中,用户可以基于图1中SR层提供的查询语句、查询操作的语义和元数据,路由查询到TP集群或AP集群内存储的任一数据,当然,TP集群主要提供对当前态数据的查询服务,AP集群则主要提供对历史态数据的查询服务。
可选地,当TP集群提供对当前态(或过渡态)数据的查询服务时,可以基于分布式并发访问控制算法来保证当前态(或过渡态)数据的事务一致性,例如,该分布式并发访问控制算法可以是基于封锁技术的并发访问控制算法、基于OCC(optimstic concurrencycontrol,乐观并发控制)技术的并发访问控制算法、基于TO(time ordering,时间序列)技术的并发访问控制算法、基于MVCC技术的并发访问控制算法等,本发明实施例不对分布式并发访问控制算法的类型进行具体限定。
可选地,当AP集群提供对历史态数据的查询服务时,可以基于上述事务一致性的基础来读取满足一致性条件的历史态数据。
在一些实施例中,HTAC架构整体还可以提供混合查询的服务,也即是一个查询操作同时用于查询元组的当前态数据和历史态数据,该查询操作通常是指定一个历史的时间点,从该时间点起一直读取元组的历史态数据,直到查询到当前时刻的当前态数据。
例如,可以基于下述语句实现混合查询:
SELECT
[ALL|DISTINCT|DISTINCTROW]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT]
[SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]
select_expr[,select_expr...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY{col_name|expr|position}
[ASC|DESC],...[WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY{col_name|expr|position}
[ASC|DESC],...]
[LIMIT{[offset,]row_count|row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE'file_name'
[CHARACTER SET charset_name]
export_options
|INTO DUMPFILE'file_name'
|INTO var_name[,var_name]]
[FOR UPDATE|LOCK IN SHARE MODE]]
在上述语句中,table_references的格式可以为如下格式:tbl_name[[AS]alias][index_hint][SNAPSHOT START snapshot_name[TO snapshot_name2][WITH type]]。
其中,SNAPSHOT为事务快照(不同于数据块的数据快照),可以简称为快照,“[SNAPSHOT[START snapshot_name][TO snapshot_name2][WITH type]]”表示为一个“tbl_name”对象指定一个快照区间,是在DQL(data query language,数据查询语言)的基础上新增加的内容,语句的所有子句都包括(SNAPSHOT、START、TO),表示“快照差读”,也即是从一个快照开始读取直到读取到另一个快照。
本发明实施例提供的数据查询过程,保证了HTAC架构下整体的读取一致性,既保证了TP集群的读取一致性,也保证了AP集群的读取一致性,在AP集群内部,每当接收一次Checkpoint操作所作用的历史态数据,均尝试获取一个新的最小事务标识(完备的最小的事务ID),也即是尝试更新最小事务标识的取值,基于MVCC技术的元组可见性判断算法,使得事务标识小于最小事务标识的事务所对应数据项可见,保证了AP集群存储的历史态数据在事务层面的事务一致性,而当HTAC还支持外部一致性(包括线性一致性、因果一致性等)时,外部一致性和事务一致性整体可以视为全局一致性,使得基于HTAC架构发起的任一项读操作能够满足全局一致性,虽然由于Checkpoint操作会造成一定的数据延时,但仍然可以认为AP集群近似实时地满足了分析类业务对于数据正确性和实时性的查询需求以及计算需求。
上述实施例提供了一种基于数据复制方法后执行数据查询的过程,当符合第一预设条件时,节点设备能够基于流复制技术,将历史态数据复制到集群设备上,使得集群设备能够提供历史态数据的查询、分析等服务,提高了历史态数据的安全性和可用性,而在一些实施例中,如果对TP集群中每一个节点设备遍历执行一次Checkpoint操作,会导致TP集群向AP集群进行数据复制所消耗的时长大量增加,还会导致HTAP的性能出现颠簸,影响了HTAP的稳定性和鲁棒性,因此引入了微Checkpoint操作,图11是本发明实施例提供的一种数据系统的交互流程图,参见图11,该数据系统包括AP集群的集群设备和TP集群的多个节点设备,下面将对TP集群向AP集群执行微Checkpoint操作和Checkpoint操作的过程进行详述:
1101、每间隔第二预设时长,对该多个节点设备中的任一节点设备,将该节点设备的至少一个历史态数据复制至该集群设备。
在上述步骤1101中,TP集群中的每个节点设备都每间隔第二预设时长执行一次微Checkpoint操作,将该节点设备上的至少一个历史态数据复制到集群设备。
其中,该第二预设时长与上述步骤202中相同,该微Checkpoint操作在上述步骤204中已经作出详述,数据复制的过程与上述步骤201-209类似,这里不做赘述。
1102、每间隔第三预设时长,该多个节点设备将每个节点设备的至少一个历史态数据同时复制至该集群设备,该第三预设时长大于该第二预设时长。
其中,该第三预设时长可以是大于第二预设时长的任一数值。可选地,第二预设时长与微Checkpoint的操作频度所对应,第三预设时长与Checkpoint的操作频度所对应。
在上述步骤902中,TP集群每间隔第三预设时长,遍历TP集群的每一个节点设备,执行一次Checkpoint操作,将TP集群中所有节点设备的至少一个历史态数据复制到集群设备,数据复制的过程与上述步骤201-209类似,这里不做赘述。
1103、每间隔该第三预设时长,该集群设备在该多个节点设备发送的所有历史态数据的事务标识中,确定符合第二预设条件的最小事务标识,该第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在集群数据库中;根据该最小事务标识,确定可见数据项,基于该可见数据项,提供数据查询服务,其中,提交该可见数据项的事务标识中小于或者等于该最小事务标识。
上述步骤1103与上述步骤901-904类似,这里不做赘述。
本发明实施例提供的数据系统,通过在TP集群与AP集群之间的交互过程,在系统层面体现了TP集群中各个节点设备分别各自每间隔第二预设时长执行微Checkpoint操作,而TP集群整体所有节点设备则每间隔第三预设时长执行一次Checkpoint操作,从而既能满足AP集群对历史态数据的实时更新需求,保证了AP集群的实时可用性,也通过微Checkpoint操作减少了数据复制过程中所耗费的遍历确认时长,提高了数据复制的效率。
图12是本发明实施例提供的一种数据复制装置的结构示意图,参见图12,该装置包括添加模块1201和复制模块1202,下面进行详述:
添加模块1201,用于当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,该数据队列用于缓存历史态数据;
该添加模块1201,还用于将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,该发送缓冲区用于缓存待复制的历史态数据;
复制模块1202,用于当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备。
本发明实施例提供的装置,通过当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,从而能够将任一事务的历史态数据缓存到数据队列中,将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,从而可以基于发送缓冲区执行发送进程或发送线程,当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备,使得节点设备能够每当符合第一预设条件,就将至少一个发送缓冲区中的历史态数据复制到集群设备,节点设备不用把原本的历史态数据格式转化为日志格式,集群设备也不必将日志解析为数据原始格式后再进行存储,从而在数据复制时无需对历史态数据进行重做日志的回放,避免了繁琐的回放流程,缩短了重做日志回放过程的时长,提高了数据复制过程的效率。
在一种可能实施方式中,该添加模块1201用于:
当检测到该数据队列中增加任一历史态数据时,将该历史态数据添加到该发送缓冲区;
该复制模块1202用于:
当检测到该发送缓冲区中增加任一历史态数据时,将该发送缓冲区中的该至少一个历史态数据复制至该集群设备。
在一种可能实施方式中,该添加模块1201用于:
每间隔第一预设时长,获取该数据队列中在当前时刻之前的该第一预设时长内增加的至少一个历史态数据;
按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到至少一个有序排列的历史态数据,将该至少一个有序排列的历史态数据添加到该发送缓冲区。
在一种可能实施方式中,该第一预设条件为检测到该发送缓冲区中增加任一历史态数据;或,
该第一预设条件为当检测到该发送缓冲区的已用数据量占该发送缓冲区的容量的比例达到比例阈值;或,
该第一预设条件为当前时刻距离该发送缓冲区上一次向该集群设备执行数据复制达到第二预设时长;或,
该第一预设条件为当前时刻距离该发送缓冲区上一次向该集群设备执行数据复制达到第三预设时长,该第三预设时长为多个节点设备中每一个节点设备都配置有的相同的预设时长,该第三预设时长大于该第二预设时长。
在一种可能实施方式中,基于图12的装置组成,该装置还包括:
当接收到该集群设备发送的复制成功响应时,清空与该复制成功响应所对应的发送缓冲区;或,
将该数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中。
需要说明的是:上述实施例提供的数据复制装置在复制数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将节点设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据复制装置与数据复制方法实施例属于同一构思,其具体实现过程详见数据复制方法实施例,这里不再赘述。
图13是本发明实施例提供的一种数据复制装置的结构示意图,参见图13,该装置包括接收模块1301、添加模块1302和存储模块1203,下面进行详述:
接收模块1301,用于从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,该接收缓冲区用于缓存接收的历史态数据;
添加模块1302,用于将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,该转发缓冲区用于对历史态数据进行数据格式转换;
存储模块1303,用于将该至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在该节点设备中所在的一个原始数据表。
本发明实施例提供的装置,通过从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据后,可以将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,从而能够对压缩后的历史态数据的格式进行还原,由于直接得到了保留有原本格式的历史态数据,那么就避免了对日志解析来获得历史态数据,从而将该至少一个数据项存储到集群数据库的至少一个目标数据表中,能够妥善地实现对历史态数据的保存。
在一种可能实施方式中,基于图13的装置组成,该存储模块1303包括:
第一存储单元,用于对任一以元组为单位的数据项,按照该数据项所在的原始数据表中的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中;或,
第二存储单元,用于对任一表示字段变更情况的数据项,按照键值对的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中。
在一种可能实施方式中,该第二存储单元用于:
将该数据项在该原始数据表中的键名或者该数据项的生成时间中的至少一项,确定为该数据项在该目标数据表中的键名;
将该至少一个数据项在该原始数据表中被修改的字段,确定为该至少一个数据项在该目标数据表中的键值。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
确定模块,用于在该至少一个历史态数据的事务标识中,确定符合第二预设条件的最小事务标识,该第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在该集群数据库中;
查询模块,用于根据该最小事务标识,确定可见数据项,基于该可见数据项,提供数据查询服务,其中,提交该可见数据项的事务标识小于或者等于该最小事务标识。
在一种可能实施方式中,基于图13的装置组成,该确定模块包括:
排序单元,用于按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到目标数据序列;
获取单元,用于从该目标数据序列中获取符合该第二预设条件的至少一个事务;
确定单元,用于将该至少一个事务中排序最靠前事务的事务标识确定为该最小事务标识。
在一种可能实施方式中,该获取单元包括:
遍历确定子单元,用于遍历该目标数据序列,对每个历史态数据的位图编码执行按位与操作,将输出为真的历史态数据所对应的事务确定为该至少一个事务;或,
遍历确定子单元,还用于遍历该目标数据序列,对每个历史态数据的压缩字典进行解码,得到与每个历史态数据对应的全局事务标识,当确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中时,将该全局事务标识所对应的事务确定为一个符合该第二预设条件的事务。
在一种可能实施方式中,遍历确定子单元还用于:
根据该全局事务标识,获取在该集群数据库中已存储的且具有该全局事务标识的数据项,当获取到的该数据项以及解码得到的该历史态数据与事务的所有子事务对应时,确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中。
在一种可能实施方式中,该接收模块1301用于:
每间隔第二预设时长,从该至少一个接收缓冲区中接收任一节点设备发送的至少一个历史态数据;或,
每间隔第三预设时长,从该至少一个接收缓冲区中接收多个节点设备同时发送的至少一个历史态数据。
需要说明的是:上述实施例提供的数据复制装置在复制数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将集群设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据复制装置与数据复制方法实施例属于同一构思,其具体实现过程详见数据复制方法实施例,这里不再赘述。
图14是本发明实施例提供的计算机设备的结构示意图,该计算机设备1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)1401和一个或一个以上的存储器1402,其中,该存储器1402中存储有至少一条指令,该至少一条指令由该处理器1401加载并执行以实现上述各个数据复制方法实施例提供的数据复制方法。当然,该计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由终端中的处理器执行以完成上述实施例中数据复制方法。例如,该计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (17)

1.一种数据复制方法,其特征在于,所述方法包括:
当检测到任一事务的提交操作时,将所述事务的历史态数据添加到数据队列中,所述数据队列用于缓存历史态数据;
将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,所述发送缓冲区用于缓存待复制的历史态数据;
当符合第一预设条件时,将所述发送缓冲区中的所述至少一个历史态数据复制至集群设备。
2.根据权利要求1所述的方法,其特征在于,所述将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区包括:
当检测到所述数据队列中增加任一历史态数据时,将所述历史态数据添加到所述发送缓冲区;
所述当符合第一预设条件时,将所述发送缓冲区中的所述至少一个历史态数据复制至集群设备包括:
当检测到所述发送缓冲区中增加任一历史态数据时,将所述发送缓冲区中的所述至少一个历史态数据复制至所述集群设备。
3.根据权利要求1所述的方法,其特征在于,所述将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区包括:
每间隔第一预设时长,获取所述数据队列中在当前时刻之前的所述第一预设时长内增加的至少一个历史态数据;
按照事务提交时间戳从小到大的顺序,对所述至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对所述多个历史态数据进行排序,得到至少一个有序排列的历史态数据,将所述至少一个有序排列的历史态数据添加到所述发送缓冲区。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一预设条件为检测到所述发送缓冲区中增加任一历史态数据;或,
所述第一预设条件为当检测到所述发送缓冲区的已用数据量占所述发送缓冲区的容量的比例达到比例阈值;或,
所述第一预设条件为当前时刻距离所述发送缓冲区上一次向所述集群设备执行数据复制达到第二预设时长;或,
所述第一预设条件为当前时刻距离所述发送缓冲区上一次向所述集群设备执行数据复制达到第三预设时长,所述第三预设时长为多个节点设备中每一个节点设备都配置有的相同的预设时长,所述第三预设时长大于所述第二预设时长。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括下述任一项或至少两项的组合:
当接收到所述集群设备发送的复制成功响应时,清空与所述复制成功响应所对应的发送缓冲区;或,
将所述数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中。
6.一种数据复制方法,其特征在于,所述方法包括:
从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,所述接收缓冲区用于缓存接收的历史态数据;
将所述接收缓冲区中的所述至少一个历史态数据添加到转发缓冲区,通过所述转发缓冲区,将所述至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,所述转发缓冲区用于对历史态数据进行数据格式转换;
将所述至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在所述节点设备中所在的一个原始数据表。
7.根据权利要求6所述的方法,其特征在于,所述将所述至少一个数据项存储到集群数据库的至少一个目标数据表中包括:
对任一以元组为单位的数据项,按照所述数据项所在的原始数据表中的存储格式,将所述数据项存储在与所述原始数据表所对应的目标数据表中;或,
对任一表示字段变更情况的数据项,按照键值对的存储格式,将所述数据项存储在与所述原始数据表所对应的目标数据表中。
8.根据权利要求7所述的方法,其特征在于,所述按照键值对的存储格式,将所述数据项存储在与所述原始数据表所对应的目标数据表中包括:
将所述数据项在所述原始数据表中的键名或者所述数据项的生成时间中的至少一项,确定为所述数据项在所述目标数据表中的键名;
将所述至少一个数据项在所述原始数据表中被修改的字段,确定为所述至少一个数据项在所述目标数据表中的键值。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述至少一个历史态数据的事务标识中,确定符合第二预设条件的最小事务标识,所述第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在所述集群数据库中;
根据所述最小事务标识,确定可见数据项,基于所述可见数据项,提供数据查询服务,其中,提交所述可见数据项的事务标识小于或者等于所述最小事务标识。
10.根据权利要求9所述的方法,其特征在于,所述在所述至少一个历史态数据的事务标识中,确定符合第二预设条件的最小事务标识包括:
按照事务提交时间戳从小到大的顺序,对所述至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对所述多个历史态数据进行排序,得到目标数据序列;
从所述目标数据序列中获取符合所述第二预设条件的至少一个事务;
将所述至少一个事务中排序最靠前事务的事务标识确定为所述最小事务标识。
11.根据权利要求10所述的方法,其特征在于,所述从所述目标数据序列中获取符合所述第二预设条件的至少一个事务包括:
遍历所述目标数据序列,对每个历史态数据的位图编码执行按位与操作,将输出为真的历史态数据所对应的事务确定为所述至少一个事务;或,
遍历所述目标数据序列,对每个历史态数据的压缩字典进行解码,得到与每个历史态数据对应的全局事务标识,当确定所述全局事务标识对应的子事务的数据项均已经存储在所述集群数据库中时,将所述全局事务标识所对应的事务确定为一个符合所述第二预设条件的事务。
12.根据权利要求11所述的方法,其特征在于,所述确定所述全局事务标识对应的子事务的数据项均已经存储在所述集群数据库中包括:
根据所述全局事务标识,获取在所述集群数据库中已存储的且具有所述全局事务标识的数据项,当获取到的所述数据项以及解码得到的所述历史态数据与事务的所有子事务对应时,确定所述全局事务标识对应的子事务的数据项均已经存储在所述集群数据库中。
13.根据权利要求6所述的方法,其特征在于,所述从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据包括:
每间隔第二预设时长,从所述至少一个接收缓冲区中接收任一节点设备发送的至少一个历史态数据;或,
每间隔第三预设时长,从所述至少一个接收缓冲区中接收多个节点设备同时发送的至少一个历史态数据。
14.一种数据复制装置,其特征在于,所述装置包括:
添加模块,用于当检测到任一事务的提交操作时,将所述事务的历史态数据添加到数据队列中,所述数据队列用于缓存历史态数据;
所述添加模块,还用于将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,所述发送缓冲区用于缓存待复制的历史态数据;
复制模块,用于当符合第一预设条件时,将所述发送缓冲区中的所述至少一个历史态数据复制至集群设备。
15.一种数据复制装置,其特征在于,所述装置包括:
接收模块,用于从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,所述接收缓冲区用于缓存接收的历史态数据;
添加模块,用于将所述接收缓冲区中的所述至少一个历史态数据添加到转发缓冲区,通过所述转发缓冲区,将所述至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,所述转发缓冲区用于对历史态数据进行数据格式转换;
存储模块,用于将所述至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在所述节点设备中所在的一个原始数据表。
16.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条指令,所述至少一条指令由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求5或权利要求6至权利要求13任一项所述的数据复制方法所执行的操作。
17.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至权利要求5或权利要求6至权利要求13任一项所述的数据复制方法所执行的操作。
CN201910368297.XA 2019-05-05 2019-05-05 数据复制方法、装置、计算机设备及存储介质 Active CN110209734B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201910368297.XA CN110209734B (zh) 2019-05-05 2019-05-05 数据复制方法、装置、计算机设备及存储介质
JP2021532087A JP7271670B2 (ja) 2019-05-05 2020-04-10 データレプリケーション方法、装置、コンピュータ機器及びコンピュータプログラム
EP20802129.5A EP3968175B1 (en) 2019-05-05 2020-04-10 Data replication method and apparatus, and computer device and storage medium
PCT/CN2020/084085 WO2020224374A1 (zh) 2019-05-05 2020-04-10 数据复制方法、装置、计算机设备及存储介质
US17/330,276 US11921746B2 (en) 2019-05-05 2021-05-25 Data replication method and apparatus, computer device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910368297.XA CN110209734B (zh) 2019-05-05 2019-05-05 数据复制方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110209734A true CN110209734A (zh) 2019-09-06
CN110209734B CN110209734B (zh) 2022-11-18

Family

ID=67786863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910368297.XA Active CN110209734B (zh) 2019-05-05 2019-05-05 数据复制方法、装置、计算机设备及存储介质

Country Status (5)

Country Link
US (1) US11921746B2 (zh)
EP (1) EP3968175B1 (zh)
JP (1) JP7271670B2 (zh)
CN (1) CN110209734B (zh)
WO (1) WO2020224374A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955612A (zh) * 2019-11-07 2020-04-03 浪潮电子信息产业股份有限公司 一种数据缓存方法及相关装置
CN111694825A (zh) * 2020-05-27 2020-09-22 平安银行股份有限公司 机构撤并数据核验方法、装置、计算机设备及存储介质
WO2020224374A1 (zh) * 2019-05-05 2020-11-12 腾讯科技(深圳)有限公司 数据复制方法、装置、计算机设备及存储介质
CN112380266A (zh) * 2020-10-16 2021-02-19 广州市百果园网络科技有限公司 消息数据处理方法、装置、设备和存储介质
CN113193947A (zh) * 2021-04-23 2021-07-30 北京百度网讯科技有限公司 实现分布式全局序的方法、设备、介质及程序产品
CN113297605A (zh) * 2021-06-24 2021-08-24 建信金融科技有限责任公司 复制数据管理方法、装置、电子设备及计算机可读介质
CN116301593A (zh) * 2023-02-09 2023-06-23 安超云软件有限公司 在云平台下跨集群跨存储拷贝块数据的方法及应用
CN116385001A (zh) * 2023-06-07 2023-07-04 建信金融科技有限责任公司 交易日志回放方法、装置、电子设备及存储介质
CN116644103A (zh) * 2023-05-17 2023-08-25 本原数据(北京)信息技术有限公司 数据排序方法和数据排序装置、计算机设备、存储介质
CN116701544A (zh) * 2023-08-07 2023-09-05 金篆信科有限责任公司 分布式数据库日志处理方法和装置、电子设备和存储介质

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11159617B1 (en) * 2021-01-22 2021-10-26 Juniper Networks, Inc Apparatus, system, and method for synchronizing replicated objects across network nodes in highly scaled environments
CN113722396B (zh) * 2021-08-25 2023-12-22 武汉达梦数据库股份有限公司 一种数据同步接收端服务主备切换的方法及设备
CN113704340B (zh) * 2021-08-30 2023-07-21 远景智能国际私人投资有限公司 数据处理方法、装置、服务器及存储介质
US11922026B2 (en) 2022-02-16 2024-03-05 T-Mobile Usa, Inc. Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network
CN114860824A (zh) * 2022-04-11 2022-08-05 远景智能国际私人投资有限公司 数据传输方法、装置、设备及存储介质
CN115134266A (zh) * 2022-05-31 2022-09-30 西安北方华创微电子装备有限公司 数据上传方法、数据接收方法和半导体工艺设备
CN114884774B (zh) * 2022-06-01 2023-10-03 北京东土军悦科技有限公司 数据包转发方法及装置、网络设备和计算设备
CN114741206B (zh) * 2022-06-09 2022-09-06 深圳华锐分布式技术股份有限公司 客户端数据回放处理方法、装置、设备及存储介质
CN115951846B (zh) * 2023-03-15 2023-06-13 苏州浪潮智能科技有限公司 数据写入方法、装置、设备及介质
CN116578655B (zh) * 2023-07-06 2023-09-15 舟谱数据技术南京有限公司 一种数据传输系统及其控制方法
CN116644215B (zh) * 2023-07-27 2023-09-29 北京亿中邮信息技术有限公司 一种跨组织结构的数据更新方法以及更新系统
CN116980475A (zh) * 2023-07-31 2023-10-31 深圳市亲邻科技有限公司 一种基于binlog与双环形缓冲区的数据推送系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0772136A2 (en) * 1995-11-02 1997-05-07 Informix Software, Inc. Method of commitment in a distributed database transaction
WO2007028249A1 (en) * 2005-09-09 2007-03-15 Avokia Inc. Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring
US20100332448A1 (en) * 2003-06-30 2010-12-30 Gravic, Inc. Method for ensuring referential integrity in replication engines by resolving lock conflicts
US20180096018A1 (en) * 2016-09-30 2018-04-05 Microsoft Technology Licensing, Llc Reducing processing for comparing large metadata sets

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
WO2003044697A1 (en) * 2001-11-16 2003-05-30 Paralleldb, Incorporated Data replication system and method
JP2003263350A (ja) * 2002-03-07 2003-09-19 Ricoh Co Ltd データベースシステム
JP4549793B2 (ja) * 2004-09-21 2010-09-22 株式会社日立製作所 データ処理方法、データベースシステム及びストレージ装置
JP4355674B2 (ja) * 2005-03-17 2009-11-04 富士通株式会社 リモートコピー方法及びストレージシステム
KR100926880B1 (ko) * 2007-05-21 2009-11-16 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
JP4612715B2 (ja) * 2008-09-05 2011-01-12 株式会社日立製作所 情報処理システム、データ更新方法およびデータ更新プログラム
CN101719165B (zh) * 2010-01-12 2014-12-17 浪潮电子信息产业股份有限公司 一种实现数据库高效快速备份的方法
CN102609479B (zh) 2012-01-20 2015-11-25 北京思特奇信息技术股份有限公司 一种内存数据库节点复制方法
JP6225606B2 (ja) * 2013-09-26 2017-11-08 日本電気株式会社 データベース監視装置、データベース監視方法、並びにコンピュータ・プログラム
CN104239476B (zh) * 2014-09-04 2018-09-25 上海天脉聚源文化传媒有限公司 一种数据库同步的方法、装置及系统
US9959178B2 (en) * 2014-11-25 2018-05-01 Sap Se Transactional and parallel log replay for asynchronous table replication
US10168928B2 (en) * 2017-03-10 2019-01-01 International Business Machines Corporation Managing data storage by an asynchronous copy service
CN109902127B (zh) * 2019-03-07 2020-12-25 腾讯科技(深圳)有限公司 历史态数据处理方法、装置、计算机设备及存储介质
CN109992628B (zh) * 2019-04-15 2022-10-25 深圳市腾讯计算机系统有限公司 数据同步的方法、装置、服务器及计算机可读存储介质
CN110209734B (zh) * 2019-05-05 2022-11-18 深圳市腾讯计算机系统有限公司 数据复制方法、装置、计算机设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0772136A2 (en) * 1995-11-02 1997-05-07 Informix Software, Inc. Method of commitment in a distributed database transaction
US20100332448A1 (en) * 2003-06-30 2010-12-30 Gravic, Inc. Method for ensuring referential integrity in replication engines by resolving lock conflicts
WO2007028249A1 (en) * 2005-09-09 2007-03-15 Avokia Inc. Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring
US20180096018A1 (en) * 2016-09-30 2018-04-05 Microsoft Technology Licensing, Llc Reducing processing for comparing large metadata sets

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11921746B2 (en) 2019-05-05 2024-03-05 Tencent Technology (Shenzhen) Company Limited Data replication method and apparatus, computer device, and storage medium
WO2020224374A1 (zh) * 2019-05-05 2020-11-12 腾讯科技(深圳)有限公司 数据复制方法、装置、计算机设备及存储介质
CN110955612B (zh) * 2019-11-07 2022-03-08 浪潮电子信息产业股份有限公司 一种数据缓存方法及相关装置
CN110955612A (zh) * 2019-11-07 2020-04-03 浪潮电子信息产业股份有限公司 一种数据缓存方法及相关装置
CN111694825A (zh) * 2020-05-27 2020-09-22 平安银行股份有限公司 机构撤并数据核验方法、装置、计算机设备及存储介质
CN111694825B (zh) * 2020-05-27 2024-04-09 平安银行股份有限公司 机构撤并数据核验方法、装置、计算机设备及存储介质
CN112380266A (zh) * 2020-10-16 2021-02-19 广州市百果园网络科技有限公司 消息数据处理方法、装置、设备和存储介质
CN113193947A (zh) * 2021-04-23 2021-07-30 北京百度网讯科技有限公司 实现分布式全局序的方法、设备、介质及程序产品
CN113193947B (zh) * 2021-04-23 2022-11-15 北京百度网讯科技有限公司 实现分布式全局序的方法、设备、介质及程序产品
CN113297605B (zh) * 2021-06-24 2023-05-05 中国建设银行股份有限公司 复制数据管理方法、装置、电子设备及计算机可读介质
CN113297605A (zh) * 2021-06-24 2021-08-24 建信金融科技有限责任公司 复制数据管理方法、装置、电子设备及计算机可读介质
CN116301593B (zh) * 2023-02-09 2024-02-02 安超云软件有限公司 在云平台下跨集群跨存储拷贝块数据的方法及应用
CN116301593A (zh) * 2023-02-09 2023-06-23 安超云软件有限公司 在云平台下跨集群跨存储拷贝块数据的方法及应用
CN116644103A (zh) * 2023-05-17 2023-08-25 本原数据(北京)信息技术有限公司 数据排序方法和数据排序装置、计算机设备、存储介质
CN116644103B (zh) * 2023-05-17 2023-11-24 本原数据(北京)信息技术有限公司 基于数据库的数据排序方法和装置、设备、存储介质
CN116385001A (zh) * 2023-06-07 2023-07-04 建信金融科技有限责任公司 交易日志回放方法、装置、电子设备及存储介质
CN116385001B (zh) * 2023-06-07 2023-08-22 建信金融科技有限责任公司 交易日志回放方法、装置、电子设备及存储介质
CN116701544A (zh) * 2023-08-07 2023-09-05 金篆信科有限责任公司 分布式数据库日志处理方法和装置、电子设备和存储介质
CN116701544B (zh) * 2023-08-07 2023-11-24 金篆信科有限责任公司 分布式数据库日志处理方法和装置、电子设备和存储介质

Also Published As

Publication number Publication date
JP7271670B2 (ja) 2023-05-11
JP2022510460A (ja) 2022-01-26
US20210279254A1 (en) 2021-09-09
EP3968175B1 (en) 2023-10-18
EP3968175A1 (en) 2022-03-16
US11921746B2 (en) 2024-03-05
WO2020224374A1 (zh) 2020-11-12
CN110209734B (zh) 2022-11-18
EP3968175A4 (en) 2022-05-25

Similar Documents

Publication Publication Date Title
CN110209734A (zh) 数据复制方法、装置、计算机设备及存储介质
US11704290B2 (en) Methods, devices and systems for maintaining consistency of metadata and data across data centers
Niazi et al. {HopsFS}: Scaling Hierarchical File System Metadata Using {NewSQL} Databases
US9146934B2 (en) Reduced disk space standby
Strauch et al. NoSQL databases
Baker et al. Megastore: Providing scalable, highly available storage for interactive services.
US10055250B2 (en) High performance log-based parallel processing of logs of work items representing operations on data objects
US20090012932A1 (en) Method and System For Data Storage And Management
CN107835983A (zh) 使用一致的数据库快照在分布式数据库中进行备份和还原
Lipcon et al. Kudu: Storage for fast analytics on fast data
CN109710388A (zh) 数据读取方法、装置、电子设备以及存储介质
CN117677943A (zh) 用于混合数据处理的数据一致性机制
CN114925073A (zh) 支持灵活动态分片的分布式数据库架构及其实现方法
Neeraj Mastering Apache Cassandra
CN114385577A (zh) 一种分布式文件系统
US20240126781A1 (en) Consensus protocol for asynchronous database transaction replication with fast, automatic failover, zero data loss, strong consistency, full sql support and horizontal scalability
Arrieta-Salinas et al. Epidemia: Variable consistency for transactional cloud databases
Shastry et al. Transaction support for HBase
WO2024081140A1 (en) Configuration and management of replication units for asynchronous database transaction replication
WO2024081139A1 (en) Consensus protocol for asynchronous database transaction replication with fast, automatic failover, zero data loss, strong consistency, full sql support and horizontal scalability
Jain Dgraph: synchronously replicated, transactional and distributed graph database
Behrens Distributed dynamic partially stateful dataflow
Sridhar Active Replication in AsterixDB
Pitoura System Support for Mobile Wireless Computing
Sovran Building scalable geo-replicated storage backends for web applications.

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