CN111797062B - 数据处理方法、装置和分布式数据库*** - Google Patents

数据处理方法、装置和分布式数据库*** Download PDF

Info

Publication number
CN111797062B
CN111797062B CN201910282391.3A CN201910282391A CN111797062B CN 111797062 B CN111797062 B CN 111797062B CN 201910282391 A CN201910282391 A CN 201910282391A CN 111797062 B CN111797062 B CN 111797062B
Authority
CN
China
Prior art keywords
data
log
processed
management module
execution modules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910282391.3A
Other languages
English (en)
Other versions
CN111797062A (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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies 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 Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN201910282391.3A priority Critical patent/CN111797062B/zh
Priority to PCT/CN2020/070576 priority patent/WO2020207078A1/zh
Publication of CN111797062A publication Critical patent/CN111797062A/zh
Application granted granted Critical
Publication of CN111797062B publication Critical patent/CN111797062B/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/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了数据处理方法、装置和分布式数据库***,涉及数据处理技术领域,有助于降低存储成本,且提高***整体性能。该分布式数据库***包括多个节点,多个节点上部署有日志管理模块、数据管理模块和多个数据执行模块;日志管理模块,用于在确定待处理日志成功写入多个节点中的M个节点之后,向数据管理模块发送待处理日志;其中,M是大于或等于3的整数,待处理日志用于记录对待处理数据进行更新的更新操作;数据管理模块,用于向多个数据执行模块中的N个数据执行模块发送待处理日志;其中,N是大于或等于1的整数;N个数据执行模块中的每个数据执行模块,用于根据待处理日志中记录的更新操作,对待处理数据进行更新。

Description

数据处理方法、装置和分布式数据库***
技术领域
本申请涉及数据处理技术领域,尤其涉及数据处理方法、装置和分布式数据库***。
背景技术
为了提高数据的可用性,数据库***中通常需要存储数据的多个副本;并且,需要容忍AZ+1故障。其中,AZ是可用区域(availability zones)的英文简称,一个AZ包括多个存储节点,数据的不同副本存储在不同存储节点中。不同AZ之间会隔离水、电等,以防止由于供水、供电等原因导致多个AZ中的存储节点同时故障。AZ+1故障,是指当一个AZ中的存储节点全部故障,且另外一个AZ中的一个存储节点故障时,数据库***还是可用的即用户还可以访问数据库***中的数据。考虑到数据的可靠性和存储成本问题,AZ的个数通常是3。
亚马逊云服务(amazon web services,AWS)的Aurora数据库采用了Quorum分布式协议。Qurorum分布式协议中定义了:写成功的副本个数W、读成功的副本个数R和总的副本个数N之间需要满足W+R>N,且W>N/2。考虑到存储成本问题,W和R通常取满足Qurorum分布式协议的最小值。
当数据的副本个数为3时,对于一个数据来说,一个AZ中存储该数据的1个副本。根据Quorum一致性协议可以得到:W=2,R=2。当发生AZ+1故障时,如果某一数据的3个副本分别存储在如图1中的a图中虚线框所示的3个存储节点中,则该数据的2个副本已经故障,只剩下1个副本是正常的,不能满足2个副本读成功的条件,即用户不可以访问数据库***中的数据了。因此,当数据副本个数为3时,数据库***不能容忍AZ+1故障。
当数据副本个数为6时,对于一个数据来说,一个AZ中存储有该数据的2个副本。根据Quorum一致性协议可以得到:W=4,R=3。当发生AZ+1故障时,如果某一数据的6个副本分别存储在如图1中的b图中虚线框所示的6个存储节点中,则该数据的3个副本已经故障,还剩下3个副本是正常的,能满足3个副本读成功的条件,即用户还可以访问数据库***中的数据。因此,当数据副本个数为6时,数据库***能够容忍AZ+1故障。
基于上述分析可知,数据库***需要使用6个数据副本才能容忍AZ+1故障,这会增加存储成本。另外,发生AZ+1故障时,不能满足4个副本写成功的条件,也就是说,发生AZ+1故障时,不能正常进行写,这会影响***整体性能。
发明内容
本申请实施例提供了数据处理方法、装置和分布式数据库***,有助于降低存储成本,且提高***整体性能。
第一方面,本申请实施例提供了一种分布式数据库***,包括多个节点,该多个节点上部署有日志管理模块、数据管理模块和多个数据执行模块。示例的,该多个节点可以包括一个或多个结构化查询语言(structured query language,SQL)节点,和/或多个存储节点。例如,日志管理模块和/或数据管理模块部署在SQL节点上,数据执行模块部署在存储节点上。日志管理模块,用于在确定待处理日志成功写入该多个节点中的M个节点之后,向数据管理模块发送待处理日志;其中,M是大于或等于3的整数,待处理日志用于记录对待处理数据进行更新的更新操作;数据管理模块,用于向该多个数据执行模块中的N个数据执行模块发送待处理日志;其中,N是大于或等于1的整数;N个数据执行模块中的每个数据执行模块,用于根据待处理日志中记录的更新操作,对待处理数据进行更新。
可见,本技术方案中,在成功写入待处理日志的M个副本之后,再写入待处理数据的一个或多个副本。由于日志是只读的,写入后就不需要修改,因此只要持久化的日志的多个副本(即写入M个节点中的待处理日志)中还有一个是可用的,就可以读取到最新的数据,因此可以容忍AZ+1故障。另外,即使唯一被成功写入的待处理页面的副本丢失,还可以通过经持久化的日志的副本恢复得到最新的数据,因此可以容忍AZ+1故障。综上,本技术方案可以实现在数据库中存储数据的一个或多个副本(如3个副本),即容忍AZ+1故障,相比现有技术,可以降低存储成本。另外,当发生AZ+1故障时,可以继续对数据库进行读写,也就是说,既不影响读数据,也不影响写数据,因此相比现有技术,可以提高***整体性能。
在一种可能的设计中,每个数据执行模块,还用于在执行更新操作之后,向数据管理模块返回数据写入成功指示信息。数据管理模块,还用于在接收到该N个数据执行模块中的部分数据执行模块(如一个数据执行模块)返回的数据写入成功指示信息之后,向日志管理模块返回数据写入成功指示信息。这样有助于***容忍慢输入输出(input output,IO),从而提高***整体性能。本申请实施例中将所对应的响应时间(即数据执行模块从接收到待处理日志至返回数据写入成功指示信息所需的时间)较长的IO请求称为“慢IO”。
在一种可能的设计中,分布式数据库***还包括多个日志执行模块。日志管理模块,还用于向该多个日志执行模块中的M个日志执行模块分别发送待处理日志;M个日志执行模块中的每个日志执行模块,用于将待处理日志写入一个节点,如每个日志执行模块将待处理日志写入该日志执行模块所在的存储节点。可选的,不同日志执行模块部署在不同节点上。该可能的设计提供了一种写入日志的多个副本的具体实现方式。
在一种可能的设计中,N个数据执行模块,还用于对更新后的待处理数据进行同步;日志管理模块,还用于在确定N个数据执行模块已对更新后的待处理数据进行同步之后,控制M个日志执行模块删除写入M个节点的待处理日志。这样,有助于降低存储成本。另外,在该可能的设计中,由于删除日志的前提是数据执行模块已同步了更新后的数据多个副本(如3个),因此,只要该多个副本中的其中一个副本是可用的,就可以读取到最新的数据,因此可以容忍AZ+1故障。
在一种可能的设计中,N个数据执行模块中的每个数据执行模块均记录待处理数据的一个或多个版本,待处理数据的一个版本对应待处理数据的一个日志。日志管理模块具体用于:获取N个数据执行模块所记录的待处理数据的N个最新版本号中的最小版本号;其中,N个数据执行模块中的一个数据执行模块记录待处理数据的一个最新版本号;控制M个日志执行模块删除待处理数据的目标日志;目标日志对应的待处理数据的版本小于或等于最小版本号;目标日志包括待处理日志。其中,对于同一页面来说,版本号越大,则该页面越新,即该页面的更新次数越多。版本号越小,数据越旧,即该页面的更新次数越少。作为一个示例,待查询页面的最新版本号可以是待查询页面的日志的最新LSN。该可能的设计提供了删除所写入的待处理日志的一种具体实现方式,这样,有助于降低存储成本。
在一种可能的设计中,日志管理模块还用于,向数据管理模块发送查询命令;该查询命令用于查询N个数据执行模块所记录的待处理数据的N个最新版本号;数据管理模块还用于,向N个数据执行模块分别发送该查询命令;N个数据执行模块中的每个数据执行模块还用于,向数据管理模块返回自身所记录的待处理日志的最新版本号;数据管理模块还用于,将N个数据执行模块返回的待处理数据的N个最新版本号返回给日志管理模块。该可能的设计提供了一种日志管理模块获取数据管理模块所记录的待处理数据的最新版本号的具体实现方式。
在一种可能的设计中,M=3和/或N=3。这样,在数据库容忍AZ+1故障的同时,可以保证日志的可靠性和数据的可靠性。
可选的,M个日志执行模块部署在M个节点上,且不同日志执行模块部署在不同节点上。可选的,该M个节点中的不同节点属于不同的AZ。可选的,N个数据执行模块部署在N个节点上,且不同数据执行模块部署在不同节点上。可选的,该N个节点中的不同节点属于不同的AZ。可选的,不同执行模块(包括日志执行模块和数据执行模块)部署在不同节点上。
在一种可能的设计中,以页面为粒度对待处理数据进行更新。也就是说,第一方面及其任一种可能的设计中的待处理数据均可以为待处理页面。
第二方面,本申请实施例提供了一种数据处理方法,应用于分布式数据库***,该分布式数据库***包括多个节点,该多个节点上部署有日志管理模块、数据管理模块和多个数据执行模块。该方法包括:日志管理模块确定待处理日志成功写入该多个节点中的M个节点;其中,M是大于或等于3的整数,待处理日志用于记录对待处理数据进行更新的更新操作;日志管理模块在确定待处理日志成功写入M个节点之后,向数据管理模块发送待处理日志;待处理日志用于数据管理模块控制该多个数据执行模块中的N个数据执行模块根据待处理日志中记录的更新操作,对待处理数据进行更新;其中,N是大于或等于1的整数。
在一种可能的设计中,分布式数据库***还包括多个日志执行模块。该方法还包括:日志管理模块向该多个日志执行模块中的M个日志执行模块分别发送待处理日志;待处理日志用于M个日志执行模块将所述待处理日志写入M个节点。
在一种可能的设计中,该方法还包括:日志管理模块在确定N个数据执行模块已对更新后的待处理数据进行同步之后,控制M个日志执行模块删除写入M个节点的待处理日志。
在一种可能的设计中,日志管理模块在确定N个数据执行模块已对更新后的待处理数据进行同步之后,控制M个日志执行模块删除写入M个节点的所述待处理日志,包括:获取N个数据执行模块所记录的待处理数据的N个最新版本号中的最小版本号;其中,N个数据执行模块中的一个数据执行模块记录待处理数据的一个最新版本号;控制M个日志执行模块删除待处理数据的目标日志;目标日志对应的待处理数据的版本号小于或等于最小版本号;目标日志包括待处理日志。
在一种可能的设计中,该方法还包括:日志管理模块向数据管理模块发送查询命令;该查询命令用于查询N个数据执行模块所记录的待处理数据的N个最新版本号;日志管理模块接收数据管理模块返回的待处理数据的N个最新版本号。
在一种可能的设计中,M=3和/或N=3。例如,M=3或N=3。又如,M=3且N=3。
第三方面,本申请实施例提供了一种数据处理装置,该装置可以用于执行上述第二方面或第二方面的任一种可能的设计提供的任一种方法。可选的,该装置可以是上述第二方面或第二方面的任一种可能的设计中的日志管理模块,或者是部署有第二方面或第二方面的任一种可能的设计中的日志管理模块的节点(如存储节点或者SQL节点)。
在一种可能的设计中,可以根据上述第二方面或第二方面的任一种可能的设计提供的方法对该装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
在一种可能的设计中,该装置具体是包含上述第二方面或第二方面的任一种可能的设计中的日志管理模块的节点。该节点包括存储器和处理器,存储器用于存储计算机程序。处理器用于调用该计算机程序,以实现日志管理模块的功能。关于日志管理模块的功能可以参考上述第二方面或第二方面的任一种可能的设计。
第四方面,本申请实施例提供了一种装置,用以实现上述第三方面或第三方面的任一种可能的设计提供的数据处理装置的功能,该装置包括处理器和接口。该装置例如可以是一个芯片。该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于处理器之外,独立存在。该接口用于该装置与其他模块/装置/设备之间进行信息交互。
第五方面,本申请实施例提供了一种计算机可读存储介质,如计算机非瞬态的可读存储介质。其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第二方面或第二方面的任一种可能的设计提供的任一种方法。例如,该计算机可以是分布式数据库***中的节点(如存储节点或SQL节点)。
第六方面,本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得第二方面或第二方面的任一种可能的设计提供的任一种方法被执行。例如,该计算机可以是分布式数据库***中的节点(如存储节点或SQL节点)。
第七方面,本申请实施例提供了一种节点集群,包括至少一个节点,每个节点包括存储器和处理器,每个节点的存储器用于存储计算机程序,该至少一个节点的处理器用于执行该计算机程序,以执行上述第二方面或第二方面的任一种可能的设计提供的任一种方法。
第八方面,本申请实施例提供了一种计算机可读存储介质,包括计算机程序,当该述计算机程序在节点集群上运行时,该节点集群执行上述第二方面或第二方面的任一种可能的设计提供的任一种方法。
第九方面,本申请实施例提供了一种计算设备程序产品,该计算设备程序产品被节点集群执行时,该节点集群执行上述第二方面或第二方面的任一种可能的设计提供的任一种方法。
可以理解的,上述提供的任一种方法或装置或计算机存储介质或计算机程序产品等均可以应用于上文所提供的对应的分布式数据库***,因此,其所能达到的有益效果可参考对应的分布式数据库***中的有益效果,此处不再赘述。
附图说明
图1为现有技术提供的一种分布式数据库***出现AZ+1故障的示意图;
图2为可适用于本申请实施例的一种分布式数据库***的结构示意图;
图3为可适用于本申请实施例的一种节点的结构示意图;
图4为可适用于本申请实施例的另一种分布式数据库***的结构示意图;
图5为本申请实施例提供的一种写数据的方法的交互示意图;
图6为本申请实施例提供的一种删除日志(或者截短日志)的方法的交互示意图;
图7为本申请实施例提供的一种读数据的方法的交互示意图;
图8为本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
本申请实施例中的术语“至少一个(种)”包括一个(种)或多个(种)。“多个(种)”是指两个(种)或两个(种)以上。例如,A、B和C中的至少一种,包括:单独存在A、单独存在B、同时存在A和B、同时存在A和C、同时存在B和C,以及同时存在A、B和C。在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
图2为可适用于本申请实施例的一种分布式数据库***的结构示意图。参见图2,该分布式数据库***包括代理层101、SQL层102、存储层103、集群管理器104,以及运行于代理层101之上的应用层105,应用层105包括一个或者多个应用程序(application,APP)。其中,代理层101具有分库分表及透明访问、读写分离、负载均衡的功能。SQL层102可以包括多个SQL节点,每个SQL节点可以包括SQL引擎和存储适配器;SQL引擎具有SQL解析、事务并发控制等功能;存储适配器具有存储层接口适配、以及访问路由等功能。存储层103可以包括多个存储节点,每个存储节点可用于存储数据和/或日志。存储层103还具有请求处理分发、日志序列号(log sequence number,LSN)保序控制、管理和维护命令处理等功能。存储层103还具有使用复制协议实现各个数据副本之间的数据同异步复制,以及具有数据库状态机维护,处理写节点产生的恢复日志,并提供异步页面以及相应的页面读取服务等功能。集群管理器104具有集群管理、软件启动停止及故障监控处理等功能。作为一个示例,存储节点可以是服务器。
图2所示的分布式数据库***仅为一个示例,其不对本申请实施例可适用的分布式数据库***的结构构成限定。
图3为可适用于本申请实施例的一种节点(如SQL节点或存储节点)的结构示意图。参见图3,该节点包括至少一个处理器201、通信线路202、存储器203和至少一个通信接口204。
处理器201可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路202可以包括一通路,用于在上述组件之间传送信息。
通信接口204,可以是任何收发器一类的装置,用于与其他设备或通信网络通信。例如,该通信网络可以是以太网、无线接入网(radio access network,RAN)或无线局域网(wireless local area networks,WLAN)等。
存储器203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器203可以是独立存在,通过通信线路202与处理器相连接。存储器203也可以和处理器201集成在一起。本申请实施例提供的存储器203通常可以具有非易失性。其中,存储器203用于存储执行本申请方案的计算机指令。处理器201用于执行存储器203中存储的计算机指令,从而实现本申请实施例提供的方法。本申请实施例中的计算机指令也可以称之为应用程序代码。
在具体实现中,作为一种实施例,上述通信接口204可以是可选的。
在具体实现中,作为一种实施例,节点可以包括多个处理器,例如图3中的处理器201和处理器205。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
图3所示的节点的结构仅为一个示例,其不对本申请实施例可适用的节点(如SQL节点或存储节点)的结构构成限定。
图4为可适用于本申请实施例的另一种分布式数据库***的结构示意图。参见图4,该分布式数据库***包括:数据库代理模块(database proxy)31、SQL模块32、日志管理模块33、数据管理模块34、日志执行模块35和数据执行模块36。
作为一个示例,结合图2,数据库代理模块31可以对应于图2中的代理层101。SQL模块32可以对应于图2中的SQL层102,也就是说,SQL模块32可以部署在SQL节点上。例如,SQL模块32可以对应于SQL层102中的SQL引擎。可选的,可以通过一个SQL引擎实现一个SQL模块32,当然不限于此。日志执行模块35和数据执行模块36可以对应于图2中的存储层103,也就是说,日志执行模块35和数据执行模块36可以部署在存储节点上。另外,日志管理模块33和/或数据管理模块34可以对应于SQL层102,也可以对应于存储层103。也就是说,日志管理模块33和/或数据管理模块34可以部署在SQL节点或者存储节点上。例如,当日志管理模块33和/或数据管理模块34部署在SQL节点上时,该日志管理模块33和/或数据管理模块34可以对应于SQL层102中的存储适配器。可选的,可以通过一个存储适配器实现一个日志管理模块33或一个数据管理模块34,当然不限于此。
数据库代理模块31,可以与一个或多个SQL模块32连接,用于提供数据库的访问入口,具有分库分表及透明访问、读写分离、负载均衡的功能。
SQL模块32,可以与一个或多个日志管理模块33,以及一个或多个数据管理模块34连接,具有SQL解析、事务并发控制等功能。
日志管理模块33,可以与一个或多个日志执行模块35连接,用于管理日志执行模块35,并向日志执行模块分发日志,以及向数据管理模块34发送日志。
日志执行模块35,用于负责日志的存储和同步。例如,将所接收到的日志存储到该日志执行模块35所在的存储节点的存储空间中,并与其他日志执行模块35同步所存储的日志。
数据管理模块34,可以与一个或多个数据执行模块36连接,用于管理数据执行模块36,并向数据执行模块36分发日志。
数据执行模块36,用于负责数据库中数据的更新、存储和同步。例如,根据所接收到的日志对相应数据进行更新,并存储更新后的数据(如将更新后的数据存储到该数据执行模块36所在的存储节点的存储空间中);以及与其他数据执行模块36之间同步更新后的数据。
具体实现的过程中,本申请实施例对上述模块之间(如数据库代理模块31与SQL模块32之间,SQL模块32与日志管理模块33之间等)的连接方式不进行限定,例如,可以通过网络连接,具体可以是有线连接或无线连接;又如,可以通过通信总线,如高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)总线等连接。
具体实现的过程中,数据库代理模块31、SQL模块32、日志管理模块33、数据管理模块34、日志执行模块35和数据执行模块36中的部分或全部可以以计算机程序的形式存储于其所部署的节点的存储器(如图3中的存储器203)中。该节点中的处理器(如图3中的处理器201)可以调用该计算机程序,从而实现相应模块的功能。
具体实现的过程中,上述数据库代理模块31、SQL模块32、日志管理模块33、数据管理模块34、日志执行模块35和数据执行模块36等中不同模块可以部署在不同节点上,或者其中的任意多个模块可以部署在同一节点上。作为一个示例,用于实现上述任一模块的设备的结构示意图可以如图3中所示的节点。图4中是以SQL模块32、日志管理模块33和数据管理模块34均部署在SQL节点,且不同执行模块(包括日志执行模块35和数据执行模块36)均部署在不同存储节点上为例进行说明的。
具体实现的过程中,上述数据库代理模块31、SQL模块32、日志管理模块33、数据管理模块34、日志执行模块35和数据执行模块36等中的任意一个模块可以部署在一个节点集群中,该节点集群可以包括至少一个节点。
可选的,分布式数据库***中设置有多个AZ。作为一个示例,AZ可以理解为多个存储节点构成的集合。对于一个分布式数据库***来说,AZ的个数通常是3,当然本申请实施例不限于此。图4中是以AZ的个数是3为例进行说明的。
数据库中的数据最终是以页面(page)的形式进行存放的,一个数据库的所有数据可以看作是若干个页面的集合。
在数据库中,通常使用日志来记录对数据库的更新操作。数据库每更新一次会生成一条日志。页面发送变化,即对页面进行更新操作。例如,数据库中存储的数据是10,如果对该数据进行+1操作,则数据库中会生成一条日志,该日志中记录的更新操作为+1操作。
一条日志包括一个页面的标识和更新操作。更新操作是指对数据进行更新,如添加、修改或删除等。当更新操作包括添加操作时,该更新操作用于请求在数据库中添加该页面;当更新操作包括修改操作时,该更新操作用于请求对数据库中的该页面进行修改;当该更新操作包括删除操作时,该更新操作用于请求删除数据库中的该页面。
以下结合附图说明本申请实施例提供的技术方案进行说明。
以下实施例中提供的方法均可以应用于分布式数据库***如图4所示的分布式数据库***。以下实施例中均以AZ的个数是3、日志的副本个数是3,且数据的副本个数是3为例进行说明的。以下实施例中是以基于页面粒度对数据库进行更新为例进行说明的,实际实现时,还可以以其他粒度对数据库进行更新。
如图5所示,为本申请实施例提供的一种写数据的方法的交互示意图。该方法包括:
S101:SQL模块确定待处理页面,并生成待处理页面的日志(即待处理日志)。其中,待处理日志包括待处理页面的标识和更新操作。
具体实现时,结合图4,分布式数据库***中的应用可以向数据库代理模块发送一个或多个写请求;数据库代理模块将接收到的该一个或多个写请求分配给与该数据库代理模块连接的一个或多个SQL模块。对于接收到写请求的每个SQL模块来说,可以根据所接收到的一个或多个写请求确定一个或多个待处理页面的标识。
S102:SQL模块向与该SQL模块连接的其中一个日志管理模块提交待处理日志,下文中将该日志管理模块称为目标日志管理模块。本申请实施例对SQL模块确定目标日志管理模块的具体实现方式不进行限定,例如可以参考现有技术。
具体实现的过程中,可能对待处理页面进行多次更新;相应的,SQL模块可以生成包含待处理页面的标识的多条日志。为了提高处理效率,在一些实施例中,目标SQL模块可以一次提交待处理页面的多条待处理日志。
S103:目标日志管理模块向第一日志执行模块、第二日志执行模块和第三日志执行模块分别发送待处理日志。
可选的,第一日志执行模块、第二日志执行模块和第三日志执行模块分别部署在不同的存储节点上。这样,即使其中一个日志执行模块所在的存储节点故障,其他日志执行模块还能正常运行,从而可以提高日志的可靠性。
进一步可选的,第一日志执行模块、第二日志执行模块和第三日志执行模块所部署的存储节点分别属于不同的AZ。这样,即使其中一个日志执行模块所在的AZ中的存储节点故障,其他日志执行模块还能正常运行,从而可以提高日志的可靠性。
可以理解的是,相比页面所占的存储空间来说,日志所占的存储空间较小,因此,在一些实施例中,一个AZ可以对应一个日志执行模块,该日志执行模块用于负责该AZ中的日志的存储和同步。基于此,第一日志执行模块、第二日志执行模块和第三日志执行模块可以分别是3个AZ所对应的日志执行模块。当然本申请实施例不限于此,例如,一个AZ可以对应一个或多个日志执行模块。
S104:第一日志执行模块、第二日志执行模块和第三日志执行模块中的每个日志执行模块将所接收到的待处理日志写入该日志执行模块所在的存储节点的存储空间,并在写入成功之后,向目标日志管理模块返回日志写入成功指示信息。
至此,数据库中已成功写入了3份待处理日志,这可以理解为:成功写入了待处理日志的3个副本。S101~S104的过程可以称为日志持久化过程。
S105:目标日志管理模块在接收到第一日志执行模块、第二日志执行模块和第三日志执行模块返回的日志写入成功指示信息之后,向目标SQL模块返回日志写入成功指示信息。
S106:目标日志管理模块在接收到第一日志执行模块、第二日志执行模块和第三日志执行模块返回的日志写入成功指示信息之后,向与目标日志管理模块所连接的其中一个数据管理模块发送待处理日志,下文中将该数据管理模块称为目标数据管理模块。
本申请实施例对目标日志管理模块确定目标数据管理模块的具体实现方式不进行限定,例如可以预定义多个页面的标识与多个数据管理模块之间的对应关系,然后基于该对应关系,从该多个页面的标识中查找待处理页面,从而确定出待处理页面对应的数据管理模块,并将所确定的数据管理模块作为目标数据管理模块。
本申请实施例对S105和S106的先后顺序不进行限定,例如可以先执行S105再执行S106,或者,可以先执行S106再执行S105,或者,可以同时执行S105和S106。
S107:目标数据管理模块向第一数据执行模块、第二数据执行模块和第三数据执行模块分别发送待处理日志。
本申请实施例对目标数据管理模确定第一数据执行模块、第二数据执行模块和第三数据执行模块的具体实现方式不进行限定,例如可以参考现有技术。
可选的,第一数据执行模块、第二数据执行模块和第三数据执行模块分别部署在不同的存储节点上,这样,有助于提高数据的可靠性。
进一步可选的,第一数据执行模块、第二数据执行模块和第三数据执行模块所部署的存储节点分别属于不同的AZ,这样,有助于进一步提高数据的可靠性。
可选的,第一数据执行模块、第二数据执行模块、第三数据执行模块、第一日志执行模块、第二日志执行模块和第三日志执行模块分别部署在不同的存储节点上。这样,有助于提高数据和日志的可靠性。
S108:第一数据执行模块、第二数据执行模块和第三数据执行模块中的每个数据执行模块对待处理页面执行待处理日志中所记录的更新操作,并在更新成功之后,向目标数据管理模块返回数据写入成功指示信息。
在本申请实施例中,一个数据执行模块针对待处理页面成功执行更新操作,可以认为数据库中成功写入了待处理页面的一个副本。
S109:目标数据管理模块在接收到第一数据执行模块、第二数据执行模块和第三数据执行模块中的部分数据执行模块(如其中一个数据执行模块)返回的数据写入成功指示信息之后,向目标日志管理模块返回数据写入成功指示信息。
可以理解的是,由于在执行S104之后,数据库中已成功写入了待处理日志的3个副本,因此,一方面,只要在数据库中成功写入待处理页面的一个副本,就可以在读数据时,读到最新的待处理页面。另一方面,即使该唯一被成功写入的待处理页面的副本丢失,还可以通过执行S104时已成功写入的待处理日志的3个副本恢复得到最新的待处理页面。基于此,在执行S109时,目标数据管理模块可以在接收到部分数据执行模块(如其中一个数据执行模块)返回的数据写入成功指示信息之后,向目标日志管理模块返回数据写入成功指示信息。这样,有助于***容忍慢IO,从而提高***整体性能。以下介绍“慢IO”:具体实现时,可能因所在的存储节点的硬件资源不同等原因,导致不同数据执行模块对IO请求的响应时间不同,具体来说,不同数据执行模块从接收到待处理日志至返回数据写入成功指示信息所需的时间不同,本申请实施例中将所对应的响应时间较长的IO请求称为“慢IO”。
S110:目标日志管理模块向SQL模块返回写入成功指示信息。
至此,数据库已成功写入了待处理页面的至少一个副本(即数据副本)。
可选的,数据执行模块之间可以通过执行后台任务同步待处理页面的副本。例如,假设在执行S108时,第一数据执行模块成功写入了待处理页面的副本,而第二数据执行模块和第三数据执行模块写入待处理页面的副本失败,那么,第一数据执行模块可以将已成功写入的待处理页面的副本同步给第二数据执行模块和第三数据执行模块,从而提高数据的可靠性。具体的同步过程可以参考现有技术,此处不再赘述。
由于数据执行模块之间可以同步待处理页面的副本,并且,上述S107~S108只要实现在数据库中成功写入待处理页面的一个副本即可,因此,实际实现时,上述S107~S108可以扩展为:目标数据管理模块向第一数据执行模块、第二数据执行模块和第三数据执行模块中的部分或全部数据执行模块发送待处理日志。接收到待处理日志的数据执行模块对待处理页面执行待处理日志中记录的更新操作,并在更新成功之后,向目标数据管理模块返回数据写入成功指示信息。
由于第一数据执行模块、第二数据执行模块和第三数据执行模块同步待处理页面的副本之后,已经能够保证数据的可靠性。因此,可选的,目标日志管理模块可以在确定第一数据执行模块、第二数据执行模块和第三数据执行模块同步待处理页面的副本之后,控制第一日志执行模块、第二日志执行模块和第三日志执行模块可以删除S104中所写入的待处理日志。这样,可以节省存储资源。
其中,本申请实施例对目标日志管理模块如何确定第一数据执行模块、第二数据执行模块和第三数据执行模块是否已同步待处理页面的副本不进行限定。本申请实施例提供的一个示例可以如图6所示。
本申请实施例提供的技术方案大致上分为两个阶段:
第一个阶段:对日志进行持久化的阶段,即存储待处理日志的多个副本的阶段。
第二个阶段:将日志应用到数据上的阶段,即对待处理数据进行待处理日志所记录的更新操作,从而实现存储数据的多个副本的阶段。
由于日志是只读的,写入后就不需要修改,因此当日志的一个副本所在的存储节点故障,可以把日志写入到另一个存储节点。只要持久化的日志的多个副本中还有一个是可用的,就可以读取到最新的数据,因此可以容忍AZ+1故障。另外,即使唯一被成功写入的待处理页面的副本丢失,还可以通过经持久化的日志的副本恢复得到最新的数据,因此可以容忍AZ+1故障。另外,在“删除日志”的实施例中,由于删除这些日志的前提是数据执行模块已同步了更新后的数据多个副本(如3个),因此,只要该多个副本中的其中一个副本是可用的,就可以读取到最新的数据,因此可以容忍AZ+1故障。综上,本申请实施例可以实现在数据库中存储数据的3个副本,即容忍AZ+1故障,相比现有技术,可以降低存储成本。另外,当发生AZ+1故障时,可以继续对数据库进行读写,也就是说,既不影响读数据,也不影响写数据,因此相比现有技术,可以提高***整体性能。
在一个示例中,可以认为本申请实施例中的日志的存储方式是append only方式,即写入后不修改,只读;数据的存储方式是write in place方式,即写入后可以修改。
以下,以对待处理页面进行多次更新,也就是说,第一数据执行模块、第二数据执行模块和第三数据执行模块中的每个数据执行模块保存了待处理页面的一个或多个版本为例,对目标日志管理模块删除日志(也可以称为截短日志)的过程进行说明。
如图6所示,为本申请实施例提供的一种删除日志(或者截短日志)的方法的交互示意图。图6所示的方法可以包括如下步骤:
S201:目标日志管理模块向目标数据管理模块发送查询命令。该查询命令可以包括待查询页面的标识。该查询命令用于查询待查询页面的日志持久化情况,或者说用于查询待查询页面的更新情况。例如,“待查询页面”可以是上文中的待处理页面。
作为一个示例,可以通过待查询页面的最新版本号来表征待查询页面的更新情况。其中,待查询页面的最新版本号可以是待查询页面的日志的最新LSN。
为了方便用户查询同一页面的不同版本。数据执行模块可以记录其所管理的每个页面的最近W次的版本及版本号,W是大于或等于1的整数。关于W的取值的具体实现方式可以参考现有技术。一个数据执行模块所管理的一个页面的版本可以是在接收到数据管理模块发送的该页面的日志时,对该页面进行更新后得到的;或者是该数据执行模块与其他数据执行模块之间进行数据同步后得到的。由于不同数据执行模块写数据的速率不同(或者说不同数据执行模块对IO请求的处理时间不同),因此,随着对同一页面的更新次数的增多,不同数据执行模块所记录的该页面的最新版本号可能不同。当然不同数据执行模块所记录的该页面的最新版本号也可能相同。需要说明的是,本申请实施例中,均是以随着对页面的更新次数的增加,该页面的版本号递增为例进行说明的。
S202:目标数据管理模块向第一数据执行模块、第二数据执行模块和第三数据执行模块分别发送该查询命令。其中,第一数据执行模块、第二数据执行模块和第三数据执行模块是与目标数据管理模块连接的,且与待查询页面的标识存在对应关系的数据执行模块。例如,第一数据执行模块、第二数据执行模块和第三数据执行模块可以是负责对待查询页面更新、存储和/或同步的数据执行模块。
S203:第一数据执行模块、第二数据执行模块和第三数据执行模块中的每个数据执行模块在接收到该查询命令之后,查询并向目标数据管理模块返回自身所记录的待查询页面的最新版本号。
S204:目标数据管理模块向目标日志管理模块返回查询结果,该查询结果可以包括:该每个数据执行模块返回的待查询页面的最新版本号。
S205:目标日志管理模块从该查询结果中选择待查询页面的最小版本号,并向第一日志执行模块、第二日志执行模块和第三日志执行模块分别发送该最小版本号。
具体实现时,上述S204~S205可以替换为:目标数据管理模块从查询结果中选择待查询页面的最小版本号,并将该最小版本号返回给目标日志管理模块;目标日志管理模块向第一日志执行模块、第二日志执行模块和第三日志执行模块分别发送该最小版本号。
其中,对于同一页面来说,版本号越大,则该页面越新,即该页面的更新次数越多。版本号越小,数据越旧,即该页面的更新次数越少。
S206:第一日志执行模块、第二日志执行模块和第三日志执行模块删除该最小版本号及小于该最小版本号的所有版本号所对应的日志。
例如,第一数据执行模块、第二数据执行模块和第三数据执行模块返回的待查询页面的最新版本号分别是LSN=100、LSN=70和LSN=50,说明:第一数据执行模块、第二数据执行模块和第三数据执行模块分别对待查询页面执行了100次更新操作、70次更新操作和50次更新操作,也就是说,第一数据执行模块、第二数据执行模块和第三数据执行模块均对待查询页面执行了前50次更新操作(即第一数据执行模块、第二数据执行模块和第三数据执行模块已同步了对待查询页面的前50次更新操作后的数据)。该情况下,最小版本号是LSN=50。那么,第一日志执行模块、第二日志执行模块和第三日志执行模块可以删除待查询页面的LSN≤50的日志。
本实施例中,通过查询与一个页面存在对应关系的数据执行模块所记录的该页面的最新版本号,确定这些数据执行模块所记录的最新版本号中的最小版本号,从而删除与该页面存在对应关系的日志执行模块所记录的小于该最小版本号所对应的日志。由此达到删除已同步的页面的日志的目的,从而节省存储资源。当然具体实现时不限于此。
如图7所示,为本申请实施例提供的一种读数据的方法的交互示意图。图7所示的方法可以包括如下步骤:
S301:SQL模块确定待读页面的标识。例如,该待读页面可以是上述待处理页面。
可选的,SQL模块还可以确定待读页面的版本号,如待读页面的日志的LSN。在一个示例中,如果SQL模块不确定待读页面的版本号,则可以默认本次读取过程用于读取待读页面的最新版本号,当然本申请实施例不限于此。
具体实现时,结合图4,分布式数据库***中的应用可以向数据库代理模块发送一个或多个读请求;数据库代理模块将接收到的该一个或多个读请求分配给与该数据库代理模块连接的一个或多个SQL模块。本申请实施例对如何分配不进行限定,例如可以参考现有技术。对于接收到读请求的每个SQL模块来说,可以根据所接收到的一个或多个读请求确定一个或多个待读页面的标识,其具体实现方式可以参考现有技术。
需要说明的是,本实施例中是以基于页面粒度读取数据库中的数据为例进行说明的,实际实现时,还可以以其他粒度读取数据库中的数据。
可以理解的是,由于分布式数据库***中的SQL模块可以是读写一体的SQL模块,即既可用于处理读请求又可用于处理写请求的SQL模块;或者,可以是读写分立的SQL模块。并且SQL模块之间可以进行信息同步。因此,本实施例中的“SQL模块”与上述图5所示的实施例中的“SQL模块”可以相同,也可以不同。相应的,本实施例中的其他模块与上述图5所示的实施例中的具有相同名字的模块可以相同,也可以不同。
S302:SQL模块向与该SQL模块所连接的其中一个数据管理模块发送待读页面的标识,下文中将该数据管理模块称为目标数据管理模块。
S303:目标数据管理模块向第一数据执行模块、第二数据执行模块或第三数据执行模块中的任意一个数据模块发送待读页面的标识。
目标数据管理模块确定第一数据执行模块、第二数据执行模块或第三数据执行模块的具体实现过程可以参考上述S107中的示例,此处不再赘述。
S304:接收到待读页面的标识的数据执行模块,向目标数据管理模块返回待读页面,具体是指待读页面的内容。
可选的,接收到待读页面的标识的数据执行模块,向目标数据管理模块发送目标版本的待读页面,该目标版本是S301的可选的实施方式中所确定的版本。具体的,接收到待读页面的标识的数据执行模块判断该数据执行模块是否存储有目标版本的版本号,如果存储了,则向目标数据管理模块发送目标版本的待读页面。另外,如果没有存储,则可以向目标数据管理模块返回读错误的指示信息。后续,目标数据管理模块可以向其他数据执行模块发送待读页面的标识,以读取待读页面。例如,假设目标版本的版本号是70,而接收到待读页面的标识的数据执行模块所存储的版本号是50~60,那么,该数据执行模块向目标数据管理模块返回读错误的指示信息。
S305:目标数据管理模块向SQL模块返回待读页面。
至此,读取页面的过程结束。
可以理解的是,本实施例仅为基于上文所提供的写数据的方法而提供的读数据的一个示例,其不对本申请实施例可适用的读数据的方法构成限定。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对上述日志管理模块或其部署的节点等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图8所示,为本申请实施例提供的一种数据处理装置80的结构示意图。该装置80可以用于执行数据处理方法,如上述图4或图5所示的方法。该装置80可以是分布式数据库***中的日志管理模块或者是部署有日志管理模块的节点。分布式数据库***包括至少两个节点,该至少两个节点上部署有日志管理模块、数据管理模块和多个数据执行模块。
该装置80包括:处理单元801和发送单元802。处理单元801,用于确定待处理日志成功写入该多个节点中的M个节点;其中,M是大于或等于3的整数,待处理日志用于记录对待处理数据进行更新的更新操作。发送单元802,用于在处理单元801确定待处理日志成功写入M个节点之后,向数据管理模块发送待处理日志;待处理日志用于数据管理模块控制多个数据执行模块中的N个数据执行模块根据待处理日志中记录的更新操作,对待处理数据进行更新;其中,N是大于或等于1的整数。例如,结合图5,处理单元801可以用于执行S104所对应的接收步骤,发送单元802可以用于执行S106。
可选的,分布式数据库***还包括多个日志执行模块。发送单元802还用于,向该多个日志执行模块中的M个日志执行模块分别发送待处理日志;待处理日志用于M个日志执行模块将待处理日志写入M个节点。例如,结合图5,处理单元801可以用于执行S103。
可选的,处理单元801还用于,在确定N个数据执行模块已对更新后的待处理数据进行同步之后,控制M个日志执行模块删除写入M个节点的待处理日志。
可选的,处理单元801具体用于:获取N个数据执行模块所记录的待处理数据的N个最新版本号中的最小版本号;其中,N个数据执行模块中的一个数据执行模块记录待处理数据的一个最新版本号;控制M个日志执行模块删除待处理数据的目标日志;目标日志对应的待处理数据的版本号小于或等于最小版本号;目标日志包括待处理日志。例如,结合图6,处理单元801可以用于执行S203所对应的接收步骤和S206。
可选的,发送单元802还可以用于,向数据管理模块发送查询命令,查询命令用于查询N个数据执行模块所记录的待处理数据的N个最新版本号。该装置80还可以包括接收单元803,用于接收数据管理模块返回的待处理数据的N个最新版本号。例如,结合图6,发送单元802可以用于执行S202。
可选的,M=3和/或N=3。
例如,结合图2,该装置80具体可以对应于图2中的SQL层102或存储层103。又如,结合图3,该装置80可以通过图3中的处理器201调用存储器203中的计算机程序来实现。
本实施例中相关内容的解释可参考上述方法实施例,此处不再赘述。
本申请实施例还提供了一种分布式数据库***,包括至少两个节点,该至少两个节点上部署有上文提供的日志管理模块(如上述装置80),另外还部署有数据管理模块和多个数据执行模块,以及还可以部署有日志执行模块等。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如SSD)等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (16)

1.一种分布式数据库***,其特征在于,包括多个节点,所述多个节点上部署有日志管理模块、数据管理模块和多个数据执行模块;
所述日志管理模块,用于在确定待处理日志成功写入所述多个节点中的M个节点之后,向所述数据管理模块发送所述待处理日志;其中,所述M是大于或等于3的整数,所述待处理日志用于记录对待处理数据进行更新的更新操作;
所述数据管理模块,用于向所述多个数据执行模块中的N个数据执行模块发送所述待处理日志;其中,所述N是大于或等于1的整数;
所述N个数据执行模块中的每个数据执行模块,用于根据所述待处理日志中记录的更新操作,对所述待处理数据进行更新。
2.根据权利要求1所述的分布式数据库***,其特征在于,
所述每个数据执行模块,还用于在执行所述更新操作之后,向所述数据管理模块返回数据写入成功指示信息;
所述数据管理模块,还用于在接收到所述N个数据执行模块中的一个数据执行模块返回的数据写入成功指示信息之后,向所述日志管理模块返回数据写入成功指示信息。
3.根据权利要求1或2所述的分布式数据库***,其特征在于,所述分布式数据库***还包括多个日志执行模块;
所述日志管理模块,还用于向所述多个日志执行模块中的M个日志执行模块分别发送所述待处理日志;
所述M个日志执行模块中的每个日志执行模块,用于将所述待处理日志写入一个节点。
4.根据权利要求3所述的分布式数据库***,其特征在于,
所述N个数据执行模块,还用于对更新后的所述待处理数据进行同步;
所述日志管理模块,还用于在确定所述N个数据执行模块已对更新后的所述待处理数据进行同步之后,控制所述M个日志执行模块删除写入所述M个节点的所述待处理日志。
5.根据权利要求4所述的分布式数据库***,其特征在于,所述N个数据执行模块中的每个数据执行模块均记录所述待处理数据的一个或多个版本,所述待处理数据的一个版本对应所述待处理数据的一个日志;所述日志管理模块具体用于:
获取所述N个数据执行模块所记录的所述待处理数据的N个最新版本号中的最小版本号;其中,所述N个数据执行模块中的一个数据执行模块记录所述待处理数据的一个最新版本号;
控制所述M个日志执行模块删除所述待处理数据的目标日志;所述目标日志对应的所述待处理数据的版本小于或等于所述最小版本号;所述目标日志包括所述待处理日志。
6.根据权利要求5所述的分布式数据库***,其特征在于,
所述日志管理模块还用于,向所述数据管理模块发送查询命令;所述查询命令用于查询所述N个数据执行模块所记录的所述待处理数据的N个最新版本号;
所述数据管理模块还用于,向所述N个数据执行模块分别发送所述查询命令;
所述N个数据执行模块中的每个数据执行模块还用于,向所述数据管理模块返回自身所记录的所述待处理日志的最新版本号;
所述数据管理模块还用于,将所述N个数据执行模块返回的所述待处理数据的N个最新版本号返回给所述日志管理模块。
7.根据权利要求1至6任一项所述的分布式数据库***,其特征在于,M=3和/或N=3。
8.一种数据处理方法,其特征在于,应用于分布式数据库***,所述分布式数据库***包括多个节点,所述多个节点上部署有日志管理模块、数据管理模块和多个数据执行模块;所述方法包括:
所述日志管理模块确定待处理日志成功写入所述多个节点中的M个节点;其中,所述M是大于或等于3的整数,所述待处理日志用于记录对待处理数据进行更新的更新操作;
所述日志管理模块在确定所述待处理日志成功写入所述M个节点之后,向所述数据管理模块发送所述待处理日志;所述待处理日志用于所述数据管理模块控制所述多个数据执行模块中的N个数据执行模块根据所述待处理日志中记录的更新操作,对所述待处理数据进行更新;其中,所述N是大于或等于1的整数。
9.根据权利要求8所述的方法,其特征在于,所述分布式数据库***还包括多个日志执行模块;所述方法还包括:
所述日志管理模块向所述多个日志执行模块中的M个日志执行模块分别发送所述待处理日志;所述待处理日志用于所述M个日志执行模块将所述待处理日志写入所述M个节点。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述日志管理模块在确定所述N个数据执行模块已对更新后的所述待处理数据进行同步之后,控制所述M个日志执行模块删除写入所述M个节点的所述待处理日志。
11.根据权利要求10所述的方法,其特征在于,所述日志管理模块在确定所述N个数据执行模块已对更新后的所述待处理数据进行同步之后,控制所述M个日志执行模块删除写入所述M个节点的所述待处理日志,包括:
获取所述N个数据执行模块所记录的所述待处理数据的N个最新版本号中的最小版本号;其中,所述N个数据执行模块中的一个数据执行模块记录所述待处理数据的一个最新版本号;
控制所述M个日志执行模块删除所述待处理数据的目标日志;所述目标日志对应的所述待处理数据的版本号小于或等于所述最小版本号;所述目标日志包括所述待处理日志。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述日志管理模块向所述数据管理模块发送查询命令;所述查询命令用于查询所述N个数据执行模块所记录的所述待处理数据的N个最新版本号;
所述日志管理模块接收所述数据管理模块返回的所述待处理数据的N个最新版本号。
13.根据权利要求8至12任一项所述的方法,其特征在于,M=3或N=3;或者,M=3且N=3。
14.一种节点集群,其特征在于,包括至少一个节点,每个节点包括存储器和处理器,每个节点的存储器用于存储计算机程序,所述至少一个节点的处理器用于执行所述计算机程序,以执行权利要求8至13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在节点集群上运行时,所述节点集群执行权利要求8至13中任一项所述的方法。
16.一种计算设备程序产品,其特征在于,所述计算设备程序产品被节点集群执行时,所述节点集群执行权利要求8至13中任一项所述的方法。
CN201910282391.3A 2019-04-09 2019-04-09 数据处理方法、装置和分布式数据库*** Active CN111797062B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910282391.3A CN111797062B (zh) 2019-04-09 2019-04-09 数据处理方法、装置和分布式数据库***
PCT/CN2020/070576 WO2020207078A1 (zh) 2019-04-09 2020-01-07 数据处理方法、装置和分布式数据库***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910282391.3A CN111797062B (zh) 2019-04-09 2019-04-09 数据处理方法、装置和分布式数据库***

Publications (2)

Publication Number Publication Date
CN111797062A CN111797062A (zh) 2020-10-20
CN111797062B true CN111797062B (zh) 2023-10-27

Family

ID=72751519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910282391.3A Active CN111797062B (zh) 2019-04-09 2019-04-09 数据处理方法、装置和分布式数据库***

Country Status (2)

Country Link
CN (1) CN111797062B (zh)
WO (1) WO2020207078A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105324770A (zh) * 2013-04-30 2016-02-10 亚马逊科技公司 有效读出副本
CN106464714A (zh) * 2014-03-10 2017-02-22 思飞信智能电网公司 分布式智能电网处理
CN107818120A (zh) * 2016-09-14 2018-03-20 博雅网络游戏开发(深圳)有限公司 基于大数据的数据处理方法和装置
CN108241555A (zh) * 2016-12-26 2018-07-03 阿里巴巴集团控股有限公司 一种分布式数据库的备份、恢复方法、装置和服务器
US10091297B1 (en) * 2016-05-18 2018-10-02 EMC IP Holding Company LLC Data processing and data movement in cloud computing environment

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9514007B2 (en) * 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
CN106228263A (zh) * 2016-07-19 2016-12-14 成都镜杰科技有限责任公司 基于大数据的物流信息化方法
CN106210123A (zh) * 2016-08-03 2016-12-07 付宏伟 一个多节点的软件定义网络控制器***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105324770A (zh) * 2013-04-30 2016-02-10 亚马逊科技公司 有效读出副本
CN106464714A (zh) * 2014-03-10 2017-02-22 思飞信智能电网公司 分布式智能电网处理
US10091297B1 (en) * 2016-05-18 2018-10-02 EMC IP Holding Company LLC Data processing and data movement in cloud computing environment
CN107818120A (zh) * 2016-09-14 2018-03-20 博雅网络游戏开发(深圳)有限公司 基于大数据的数据处理方法和装置
CN108241555A (zh) * 2016-12-26 2018-07-03 阿里巴巴集团控股有限公司 一种分布式数据库的备份、恢复方法、装置和服务器

Also Published As

Publication number Publication date
WO2020207078A1 (zh) 2020-10-15
CN111797062A (zh) 2020-10-20

Similar Documents

Publication Publication Date Title
US11726984B2 (en) Data redistribution method and apparatus, and database cluster
US11321291B2 (en) Persistent version control for data transfer between heterogeneous data stores
CN108509462B (zh) 一种同步活动事务表的方法及装置
CN111614733B (zh) 一种分布式多分片集群的部署方法、装置及存储介质
CN109325016B (zh) 数据迁移方法、装置、介质及电子设备
CN111049928B (zh) 数据同步方法、***、电子设备及计算机可读存储介质
US20120278429A1 (en) Cluster system, synchronization controlling method, server, and synchronization controlling program
US11720593B2 (en) Managing identifiers for multinodal master systems of unknown or changing size
US7069270B1 (en) Automated method and mechanism for converting a single instance application to a multiple instance application
CN113760847A (zh) 日志数据处理方法、装置、设备及存储介质
CN111104250B (zh) 用于数据处理的方法、设备和计算机可读介质
CN112015591A (zh) 一种日志管理方法、服务器和数据库***
CN111459913B (zh) 分布式数据库的容量扩展方法、装置及电子设备
CN110298031B (zh) 一种词典服务***及模型版本一致性配送方法
CN111752892B (zh) 分布式文件***及其实现方法、管理***、设备及介质
CN112000850A (zh) 进行数据处理的方法、装置、***及设备
CN111797062B (zh) 数据处理方法、装置和分布式数据库***
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
CN109992447B (zh) 数据复制方法、装置及存储介质
CN115599295A (zh) 一种存储***的节点扩容方法和装置
CN115587141A (zh) 一种数据库同步方法和装置
US20210248108A1 (en) Asynchronous data synchronization and reconciliation
CN117075823B (zh) 对象查找方法、***、电子设备及存储介质
CN116662290B (zh) 有状态的服务器无感知函数的读优化方法和装置
CN114268540B (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
TA01 Transfer of patent application right

Effective date of registration: 20220217

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant