CN114880319A - 一种备份索引的方法及装置 - Google Patents
一种备份索引的方法及装置 Download PDFInfo
- Publication number
- CN114880319A CN114880319A CN202110163359.0A CN202110163359A CN114880319A CN 114880319 A CN114880319 A CN 114880319A CN 202110163359 A CN202110163359 A CN 202110163359A CN 114880319 A CN114880319 A CN 114880319A
- Authority
- CN
- China
- Prior art keywords
- index
- database
- record data
- memory database
- row record
- 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 127
- 238000003860 storage Methods 0.000 claims description 144
- 238000012545 processing Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000002085 persistent effect Effects 0.000 claims description 6
- 238000011084 recovery Methods 0.000 abstract description 11
- 238000004904 shortening Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 39
- 230000006870 function Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 21
- 238000004590 computer program Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 238000012986 modification Methods 0.000 description 12
- 230000004048 modification Effects 0.000 description 12
- 230000001960 triggered effect Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 10
- 238000009826 distribution Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种备份索引的方法及装置,涉及数据库技术领域,该方法能够在不影响内存数据库的查询速度的前提下实现该内存数据库索引的备份,从而缩短了内存数据库在故障恢复后的RTO。该方法包括:接收数据库层装置发送的行记录数据。根据接收到的行记录数据确定用于定位内存数据库中的行记录数据的目标索引。持久化存储该目标索引。其中,行记录数据是数据库层装置中内存数据库的行记录数据。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种备份索引的方法及装置。
背景技术
内存数据库,顾名思义是把数据直接存储于内部存储器的数据库。通常,内存数据库的访问速度,比存储于外部存储器(例如硬盘等存储器)的数据库的访问速度要快几个量级。内存数据库一般主要包括至少一个索引(index)和多行行记录数据(record)。其中,index用于在内存数据库中快速定位record。
通常,数据库层装置中的内存数据库在运行时,后台可以按照一定策略周期性的触发检查点(checkpoint)事件。其中,checkpoint事件可以用于在预设时刻点将内存数据库中的record备份于存储层装置中。而由于内存数据库中的index没有只读保护特性,因此checkpoint事件通常不对index进行备份。这样的话,当数据库层装置中发生故障的内存数据库在故障恢复后恢复数据时,该内存数据库的record可以根据checkpoint事件备份的record进行快速恢复,而该内存数据库的index则需要根据恢复出的全部record进行构建。如果该内存数据库的record数量很大,则数据库层装置构建该index所耗费的时间越长,即该内存数据库的恢复时间目标(recovery time objective,RTO)越长。
基于此,如何实现对数据库层装置中内存数据库的index的备份,是现有技术中亟待解决的技术问题。
发明内容
本申请提供了一种备份索引的方法及装置,能够在不影响内存数据库的查询速度的前提下实现该内存数据库索引的备份,从而缩短了内存数据库在故障恢复后的RTO。
为达上述目的,本申请提供如下技术方案:
第一方面,本申请提供了一种备份索引的方法,该方法包括:接收数据库层装置发送的行记录数据。根据接收到的行记录数据确定用于定位内存数据库中的行记录数据的目标索引。持久化存储该目标索引。其中,行记录数据是数据库层装置中内存数据库的行记录数据。
本申请提供的索引备份方法,通过将数据库层装置中内存数据库索引备份的过程下放至存储层装置执行,使得备份过程不会对数据库层装置中内存数据库的索引造成任何影响。这样,本申请所提供的方法即可在不影响数据库层装置在内存数据库中查询数据时查询速度的前提下,实现对该内存数据库索引的备份,从而缩短了RTO。
在一种可能的设计方式中,上述行记录数据包括内存数据库中的全量行记录数据。上述根据行记录数据确定目标索引包括:根据该全量行记录数据构建目标索引。
在另一种可能的设计方式中,在对上述内存数据库中的索引进行首次备份时,上述行记录数据包括内存数据库中的全量行记录数据。在对上述内存数据库中的索引进行非首次备份时,上述行记录数据包括内存数据库中的增量行记录数据。则在对内存数据库中的索引进行非首次备份时,上述根据行记录数据确定目标索引包括:根据该增量行记录数据,对基于该全量行记录数据所构建的索引进行更新,以得到目标索引。其中,该增量行记录数据包括在连续两次执行索引备份的时刻之间内存数据库中进行了更新操作的行记录数据。
在另一种可能的设计方式中,上述的更新操作包括增加、删除或修改中的任一种操作。
根据上述几种可能的实现方式,本申请提供的方法可以通过全量备份的行记录数据来构建每次执行索引备份流程时内存数据库的索引,也可以通过在首次执行备份索引流程时通过全量行记录数据来构建内存数据库的索引,然后在非首次执行备份索引流程时,对基于全量行记录数据构建的内存数据库的索引进行更新。这样,基于本申请提供的方法,在每次执行备份索引流程时,备份的索引均为开始执行本次索引备份流程时内存数据库的全量行记录数据对应的索引。
这样,在内存数据库故障恢复时,仅需获取距离故障时刻最接近的一次索引备份流程所备份的索引即可。这样,相比通过日志结构合并树(log structured merge tree,LSM)备份索引时,内存数据库在故障恢复时需要加载多个索引,本申请提供的方法能够缩短内存数据库故障恢复时的RTO。
在另一种可能的设计方式中,上述方法还包括:释放内存中用于确定上述目标索引的行记录数据。
通过该可能的实现方式,存储层装置在备份索引时,每执行完一次备份索引流程,就即释放/删除内存中用于确定目标索引的行记录数据,从而节省了存储层装置的资源。
在另一种可能的设计方式中,在上述根据行记录数据确定目标索引之前,上述方法还包括:接收数据库层装置发送的通知消息。该通知消息用于指示根据行记录数据确定目标索引。
在另一种可能的设计方式中,上述方法由与数据库层装置连接通信的存储层装置执行。
通过该可能实现方式可以看出,本申请提供的方法应用于存算分离的内存数据库架构中,并通过存储层装置来执行本申请提供的索引备份方法,从而使得备份过程不会对数据库层装置中内存数据库的索引造成任何影响。
第二方面,本申请提供了一种备份索引的装置。
在一种可能的设计方式中,该备份索引的装置用于执行上述第一方面提供的任一种方法。本申请可以根据上述第一方面提供的任一种方法,对该备份索引的装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。示例性的,本申请可以按照功能将该备份索引的装置划分为接收单元、处理单元以及存储控制单元等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第一方面或其相应的可能的设计提供的技术方案,此处不再赘述。
在另一种可能的设计中,该备份索引的装置包括:一个或多个处理器和传输接口,该一个或多个处理器通过该传输接口接收或发送数据,该一个或多个处理器被配置为调用存储在存储器中的程序指令,以使得备份索引的装置执行如第一方面及其任一种可能的设计方式提供的任一种方法。
第三方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质包括程序指令,当程序指令在计算机或处理器上运行时,使得计算机或处理器执行第一方面中的任一种可能的实现方式提供的任一种方法。
第四方面,本申请提供了一种计算机程序产品,当其在备份索引的装置上运行时,使得第一方面中的任一种可能的实现方式提供的任一种方法被执行。
第五方面,本申请提供了一种芯片系统,包括:处理器,处理器用于从存储器中调用并运行该存储器中存储的计算机程序,执行第一方面中的实现方式提供的任一种方法。
可以理解的是,上述提供的任一种装置、计算机存储介质、计算机程序产品或芯片系统等均可以应用于上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
在本申请中,上述备份索引的装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
图1为一种内存数据库的结构示意图;
图2为一种存算分离的内存数据库架构中数据库层装置和存储层装置之间交互的示意图;
图3为根据LSM实现索引备份的方法示意图;
图4为本申请实施例提供的一种计算设备的硬件结构示意图;
图5为本申请实施例提供的一种备份索引的方法的流程示意图;
图6为本申请实施例提供的一种增量record的示意图;
图7为本申请实施例提供的索引备份方法的一种示意图;
图8为本申请实施例提供的索引备份方法的另一种示意图;
图9为本申请实施例提供的一种内存数据库恢复的方法流程示意图;
图10为本申请实施例提供的一种备份索引的装置的结构示意图;
图11为本申请实施例提供的一种芯片系统的结构示意图;
图12为本申请实施例提供的处理器的一种硬件架构图;
图13为本申请实施例提供的用于承载计算机程序产品的信号承载介质的结构示意图。
具体实施方式
为了更清楚的理解本申请实施例,下面对本申请实施例中涉及的部分术语或技术进行说明:
1)内存数据库
内存数据库一般包括至少一个index和多行record。其中,该至少一个index中的任一个index是基于内存数据库中数据的某种属性构建的index。可以理解,index用于在内存数据库中快速定位record。该多行record中的数据即为内存数据库中的数据内容,该多行record的每行record分配有唯一的行号(row identity,rowid),即一个rowid标识一行record。
为了支持高并发的数据处理能力,通常采用多版本并发控制(multi-versionconcurrency control,MVCC)的方式访问内存数据库中的数据。因此,在对内存数据库中的任一个record进行修改时,会基于该任一个record生成一个新版本的record,该新版本的record即为该任一个record被修改后的record。
这样,对于一个rowid标识的一行record中,通常包括有多个版本的record,而该多个版本的record中的任一版本record,即为对该任一版本record之前一个版本record进行修改时所生成的新版本record。
其中,包括有多个版本record的一行record,可以称为一条record版本链。可以看出,一个rowid标识一条record版本链。
以内存数据库包括2个索引和3条record版本链为例,参考图1,图1示出了一种内存数据库的结构示意图。
如图1所示,内存数据库10包括不同rowid标识的3条record版本链,分别为rowid1标识的record版本链1011、rowid 2标识的record版本链1012、以及rowid 3标识的record版本链1013。其中,record版本链1011中包括3个版本的record,分别为record v1.1、record v1.2和record v1.3。record版本链1012中包括1个版本的record,即record v2.1。record版本链1013中包括2个版本的record,分别为record v3.1和record v3.2。
如图1所示,内存数据库10还包括2个索引,分别为索引1021和索引1022。索引1021和索引1022中均包括用于标识内存数据库10全部record版本链的rowid。其中,索引1021和索引1022可以分别是基于内存数据库10中数据的不同属性所构建的索引。以索引的结构是树结构为例,如果内存数据库10是学生的成绩表,则索引1021可以是基于成绩表中学生姓名的首字母构建的索引树,索引1022可以是基于成绩表中的某一科成绩的分布范围构建的索引树。
如图1所示,内存数据库10还可以包括行地图103(rowmap),rowmap 103用于指示内存数据库10中每个rowid所标识的record版本链中最新版本record的物理地址。
这样,当在内存数据库10中查询record时,可以根据索引1021或索引1022确定目标record所在record版本链的rowid,并基于rowmap 103确定该rowid标识的record版本链中最新版本的record的物理地址。这样,即实现了在内存数据库10中查询record的目的。
应理解,在图1所示的内存数据库10中,如果在该内存数据库10中新增(即插入)或删除record版本链时,内存数据库10中的索引将同步更新。
作为示例,以索引的结构是树形结构为例,这种情况下,索引树中的叶子节点即包括内存数据库10中标识record版本链的rowid。当在该内存数据库10中新增(即插入)record版本链时,索引树中即同步增加对应的叶子节点。当在该内存数据库10中删除record版本链时,索引树中即同步删除对应的叶子节点。
应理解,图1所示的内存数据库10中也可以不包括rowmap 103。这种情况下,索引1021和索引1022中除包括用于标识内存数据库10的全部record版本链的rowid外,还包括存储每个record版本链中最新版本record的物理地址。这样的话,当在内存数据库10中新增(即插入)或删除record版本链时,或者在更新内存数据库10中的record版本链时,同步更新内存数据库10中的索引。
作为示例,以索引的结构是树形结构为例,这种情况下,索引树中的叶子节点即包括内存数据库10中标识record版本链的rowid、以及存储该record版本链中最新版本record的物理地址。当在该内存数据库10中新增(即插入)record版本链时,索引树中即同步增加对应的叶子节点。当在该内存数据库10中删除record版本链时,索引树中即同步删除对应的叶子节点。当更新该内存数据库10中的record版本链时,即该record版本链中有新版本的record生成,则更新索引树中与该record版本链对应的叶子节点中的存储最新版本record存储的物理地址。
2)其他术语
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的实施例中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在存算分离的内存数据库架构中,一般包括数据库层装置和存储层装置。
其中,数据库层装置的内存中存储有内存数据库,并且,数据库层装置可以根据接收到的业务逻辑请求查询内存数据库,以及对内存数据库执行更新操作。这里,该内存数据库可以参考上文描述的内存数据库,这里不予赘述。
示例性的,如果该业务逻辑请求是从A账户向B账户转账x元的请求。这种情况下,数据库层装置基于该请求,可以在内存数据库中查询到表示A账户的record A以及表示B账户的record B,并将record A中的存款金额修改为减去转账金额后的金额,以及将recordB中的存款金额修改为加上转账金额后的金额。
存储层装置,用于存储数据库层装置对内存数据库执行更新操作的更新日志(例如redo log),以及用于在数据库层装置触发checkpoint事件后,存储内存数据库中的备份数据。可以理解,该更新日志中的每一条日志,可以包括数据库层装置对内存数据库中执行更新操作的record的位置(例如可以用rowid表示),以及包括执行更新操作后得到的record。
其中,上述的更新操作可以包括新增record版本链,删除record版本链或修改record版本链中record中的至少一种操作。
参考图2,图2示出了一种存算分离的内存数据库架构中数据库层装置和存储层装置之间交互的示意图。
如图2所示,数据库层装置21中存储有如图1所述的内存数据库10。数据库层装置21根据业务逻辑请求对内存数据库每执行一次更新操作,则在存储层装置22中的更新日志中写入与该更新操作对应的日志。
此外,当数据库层装置21在某一时刻触发checkpoint事件,数据库层装置21可以将内存数据库10中每个record版本链中最新版本的record,写入存储层装置22中,从而实现内存数据库10中record的备份。
可以看出,如果数据库层装置21周期性的触发checkpoint事件,即可实现周期性的对内存数据库10中record的备份。
这样的话,当内存数据库10在时刻1发生故障,则数据库层装置21可以在内存数据库10的故障恢复后,通过从存储层装置22中获取在时刻1之前、且距离时刻1最近的时刻2触发的checkpoint事件备份的record,以及从存储层装置22获取时刻1到时刻2之间记录的更新日志。其中,内存数据库发生故障可以是由于数据库层装置断电或宕机导致的故障,或者是内存数据库本身出现故障,对此不作限定。
这样,数据库层装置21即可根据获取的时刻2备份的record,以及时刻2和时刻1之间的更新日志,快速的恢复出时刻1时内存数据库10中的全部record。
由于内存数据库中的索引会随着内存数据库被访问时record的更新而同步进行更新,因此内存数据库的索引不具备只读保护特性,从而导致内存数据库的索引不易备份。这样的话,在内存数据库的故障恢复后需要恢复该内存数据库时,数据库层装置需要根据内存数据库在故障恢复后所恢复出的全部record构建出与该全部record对应的索引。
然而,当record的数量比较大时,数据库层装置根据大量的record构建内存数据库的索引时耗时较长,即RTO较长。
为解决该问题,数据库层装置在通过触发checkpoint事件对record进行备份的同时,还可以通过日志结构合并树(log structured merge tree,LSM)实现对内存数据库索引的备份。
具体的,数据库层装置在触发checkpoint事件后,将当前使用的索引的属性设置为只读,并将该属性为只读的索引写入存储层装置,以作为内存数据库的索引的备份。应理解,将索引的属性设置为只读,即为禁止对该索引执行修改或更新操作。
同时,数据库层装置为内存数据库生成一个新的、且空白的索引,这里,该新生成的索引用于在执行本次触发checkpoint事件的时刻之后、且下一次触发checkpoint事件的时刻之前的时段1内,接受数据库层装置的修改操作,该修改操作与该内存数据库中record的修改或更新操作同步。
也就是说,在每一次触发checkpoint事件时,数据库层装置会为内存数据库生成一个新的索引,也即,内存数据库的索引的数量是触发checkpoint事件次数加1。
应理解,对于连续两次触发checkpoint事件而言,在后触发checkpoint事件所备份的索引,可以理解为在该连续两次执行checkpoint时刻之间的时段内的增量索引。
应理解,上述根据LSM实现索引备份的方法可以用于对包括有rowmap的内存数据库中索引进行备份。
这样,数据库层装置中的内存数据库的故障恢复后,通过从存储层装置获取备份的record和每个checkpoint时刻备份的多个索引,即可快速实现内存数据库的恢复。
以内存数据库的索引是树结构为例,参考图3,图3示出了根据LSM实现索引备份的方法示意图。
如图3所示,数据库层装置在时刻1触发checkpoint事件,即将当前使用的索引s1的属性设置为只读,并将s1写入存储层装置。同时,数据库层装置还生成索引s2接受在内存数据库中record更新时需要对索引执行的修改。
类似的,数据库层装置在时刻2触发checkpoint事件,即将当前使用的索引s2的属性设置为只读,并将s2写入存储层装置。同时,数据库层装置还生成索引s3接受在内存数据库中record更新时需要对索引执行的修改。
类似的,数据库层装置在时刻3触发checkpoint事件,即将当前使用的索引s3的属性设置为只读,并将s3写入存储层装置。同时,数据库层装置还生成索引s4接受在内存数据库中record更新时需要对索引执行的修改。
然而,在通过根据LSM实现内存数据库索引的备份时,内存数据库中会不停增加新的索引,即内存数据库中会包括多个索引。这样,当数据库层装置基于用户请求查询内存数据库中的数据时,需要将内存数据库中的多个索引先进性合并,然后才能准确并完整的查询到待查询的数据。这样,随着时间的增加,内存数据库的查询速度将持续下降。
基于此,本申请实施例提供了一种备份索引的方法,该方法通过将备份索引的过程从数据库层装置下放到存储层装置,从而可以在不影响数据库层装置中内存数据库查询速度的前提下,实现对内存数据库索引的备份,从而提高了数据库层装置中内存数据库的故障恢复后,该内存数据库的恢复速度,即缩短了RTO。
应理解,本申请实施例提供的方法可以应用于图2所示的存算分离的数据库架构中。
应理解,在该存算分离的数据库架构中,数据库层装置和存储层装置可以分别部署于不同的设备中。当然,数据库层装置和存储层装置也可以部署于同一台设备中。如果数据库层装置和存储层装置部署于同一台设备中,则该设备包括有多个通用中央处理单元(central processing unit,CPU)。并且,该设备中用于实现数据库层装置功能的CPU和存储器,与用于实现存储层装置功能的CPU和存储器,彼此之间隔离。
本申请实施例还提供了一种备份索引的装置,该备份索引的装置即为图2中所示的存储层装置。应理解,该索的备份装置可以是任意具有计算处理能力的计算设备。
示例性的,该计算设备可以是计算机、服务器等,对此不作限定。
为简单描述,本申请实施例在下文描述中,以图2所示的存储层装置代替本申请实施例提供的备份索引的装置。
参考图4,图4示出了本申请实施例中提供的一种计算设备的硬件结构示意图。如图4所示,计算机设备40包括处理器41、存储器42、通信接口43、总线44。处理器41、存储器42以及通信接口43之间可以通过总线44连接。
处理器41是计算机设备40的控制中心,可以是一个CPU,也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为一个示例,处理器41可以包括一个或多个CPU,例如图4中所示的CPU 0和CPU1。
存储器42可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
一种可能的实现方式中,存储器42可以独立于处理器41存在。存储器42可以通过总线44与处理器41相连接,用于存储数据、指令或者程序代码。处理器41调用并执行存储器42中存储的指令或程序代码时,能够实现本申请实施例提供的备份索引的方法。
另一种可能的实现方式中,存储器42也可以和处理器41集成在一起。
通信接口43,用于计算机设备40与其他设备(如公有云中的网络节点等)通过通信网络连接,所述通信网络可以是以太网,无线接入网(radio access network,RAN),无线局域网(wireless local area networks,WLAN)等。通信接口43可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。
总线44,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图4中示出的结构并不构成对计算设备40的限定,除图4所示部件之外,该计算设备40可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合附图,对本申请实施例提供的备份索引的方法予以说明。
参考图5,图5示出了本申请实施例提供的备份索引的方法的流程示意图。该方法可以应用于存算分离的内存数据库架构中,例如图2所示的存算分离的内存数据库架构中。在存算分离的内存数据库架构中,存储层装置和数据库层装置连接通信。该方法可以包括以下步骤:
S101、数据库层装置向存储层装置发送内存数据库中的record。
应理解,在数据库层装置向存储层装置发送内存数据库的record时,发送的是该内存数据库中每个record版本链里最新版本的record。其中,record版本链的描述,可以参考上文描述,这里不再赘述。
例如,参考图1,如果在当前时刻,图1中的record v1.3是record链1011中最新版本的record,record v2.1是record链1012中最新版本的record,record v3.2是record链1013中最新版本的record,则数据库层装置在当前时刻向存储层装置发送内存数据库的record时,发送的record包括record v1.3、record v2.1以及record v3.2。
具体的,数据库层装置可以在触发checkpoint事件时,向存储层装置发送内存数据库中的record。其中,本申请实施例对数据库层装置触发checkpoint事件的具体实现方式不作具体限定。
可选的,数据库层装置可以以预设时长为周期,周期性的触发checkpoint事件。这样,数据库层装置即可以以预设时长为周期,周期性向存储层装置发送内存数据库中的record。
可选的,数据库层装置还可以按照预设策略在预设时刻触发checkpoint事件。这样,数据库层装置即可在预设时刻向存储层装置发送内存数据库中的record。其中,该预设策略用于指示数据库层装置触发checkpoint事件的预设时刻。这里,本申请实施例对该预设策略不作具体限定。
作为示例,该预设策略可以用于指示将热点时段按照单位时长为m小时划分得到的多个时刻,确定为数据库层装置触发checkpoint事件的预设时刻。以及,该预设策略还可以用于指示将非热点时段按照单位时长为n小时划分得到的多个时刻,确定为数据库层装置触发checkpoint事件的预设时刻。其中,m和n均是大于0的数,例如1、1.5、2等。其中,热点时段例如可以是白天的工作时段,非热点时段例如可以是晚上的非工作时段等,对此不作限定。
可以看出,数据库层装置可以在时间轴上多次向存储层装置发送内存数据库中的record,以实现对内存数据库在不同时刻时的索引进行备份。在这一过程中,在数据库层装置可以通过以下任一种实现方式向存储层装置发送内存数据库的record:
在第一种可能的实现方式中,数据库层装置可以在每次向存储层装置发送内存数据库的record时,发送内存数据库中的全量record。
其中,内存数据库中的全量record,是指数据库层装置向存储层装置发送内存数据库中record时,该内存数据库中所有record版本链中的最新版本record。
作为响应,存储层装置每次接收到的来自数据库层装置的record,均包括数据库层装置中内存数据库的全量record。然后,存储层装置将每次接收到的全量record写入磁盘(disk),以实现对接收到的record的持久化存储。
在第二种可能的实现方式中,数据库层装置可以在首次向存储层装置发送内存数据库中的record时,发送内存数据库中的全量record。也即,数据库层装置在首次执行索引备份流程时,向存储层装置发送的record包括内存数据库中的全量record。
接着,数据库层装置可以在非首次向存储层装置发送内存数据库中的record时,发送内存数据库中的增量record。也即,数据库层装置在非首次执行索引备份流程时,向存储层装置发送的record包括内存数据库中的增量record。这里,非首次可以是第2次、第3次、…、等等,不作赘述。
其中,增量record包括在连续两次开始执行索引备份流程的时刻之间,内存数据库中进行了更新操作的record。这里,该更新操作包括增加、删除或修改中的任一种操作。
作为示例,请参考图2,数据库层装置第一次执行索引备份流程时,可以向存储层装置发送内存数据库10中的全量record,即向存储层装置发送内存数据库10中的recordv1.3、record v2.1以及record v3.2。
结合图1,参考图6,图6示出了一种增量record的示意图。
如果数据库层装置在第一次执行索引备份流程之后、以及在第二次执行索引备份流程之前,数据库层装置删除了内存数据库10中的record版本链1011,并新增(或插入)了record版本链1014,且record版本链1014中包括两个版本的record(即数据库层装置对record版本链1014的首个record(即record v4.1)执行过一次修改操作,因此生成了一个新版版的record(即record v4.2))。并且,数据库层装置在第一次执行索引备份流程之后、以及第二次执行索引备份流程之前,还对内存数据库10中的record版本链1013执行过一次修改操作,即生成了新版本的record(即record版本链1013中的record v3.3)。
因此,数据库层装置在第一次执行索引备份流程之后、以及在第二次执行索引备份流程之前,内存数据库10的增量record,即包括record版本链1014最新版本的recordv4.2,以及record版本链1013中最新版本的record v3.3。这样,数据库层装置在第二次执行索引备份之时,即向存储层装置发送record v4.2和record v3.3。
作为响应,存储层装置首次接收到的来自数据库层装置的record,即包括数据库层装置中内存数据库的全量record。存储层装置非首次接收到的来自数据库层装置的record,即包括数据库层装置中内存数据库的增量record。然后,存储层装置将非首次接收到的增量record写入磁盘(disk),以实现接收到的record的持久化存储。
可以看出,数据库层装置通过执行S101,即实现了通过触发checkpoint事件对内存数据库中的record备份的目的。
还应理解的是,数据库层装置还可通过向存储层装置发送内存数据库中的record对应的物理地址,来实现对内存数据库中record的备份。
其中,该record对应的物理地址,即为数据库层装置对内存数据库中的某个record执行更新操作时,向存储层装置写入的更新日志中所包括的更新后的record所存储的物理地址。不再赘述。
为简单描述,本申请实施例在下文中,以数据库层装置向存储层装置发送内存数据库中的record为例,来描述本申请实施例提供的备份索引的方法。
可选的,数据库层装置可以在每次向存储层装置发送内存数据库的record之后,还向存储层装置发送通知消息,该通知消息用于指示存储层装置基于从数据库层装置接收到的record确定目标索引。
作为响应,存储层装置即接收到数据库层装置发送的通知消息。
S102、存储层装置基于接收到的record确定目标索引,以及持久化存储该目标索引。
在一种可能的实现方式中,存储层装置可以在接收到数据库层装置发送的通知消息后,根据本次从数据库层装置接收到的record确定目标索引。
在另一种可能的实现方式中,存储层装置可以在接收到数据库层装置发送的record后的预设时长后,根据本次从数据库层装置接收到的record确定目标索引。其中,该预设时长小于连续两次执行索引备份流程的间隔时长。
应理解,在执行单次索引备份流程时,数据库层装置向存储层装置发送的record的数量一般都是多个。因此,数据库层装置可以将待发送的多个record打包封装后得到多个数据包以进行发送。这样,数据库层装置发送该多个数据包时即需要一定的时间。相应的,存储层装置接收该多个数据包也需要一定的时间。
因此,当存储装置在预设时长内没有再接收到来自数据库层装置的数据包时,则可以确定已完成本次索引备份流程对应的多个数据包的接收。这样,存储层装置即可根据本次从数据库层装置接收到的多个数据包中的record,确定目标索引。
具体的,在一方面,如果数据库层装置采用S101中第一种可能的实现方式向存储层装置发送record,即存储层装置每次从数据库层装置接收到的record包括数据库层装置中内存数据库的全量record。这样的话,存储层装置可以根据每次接收到的全量record,构建数据库层装置中内存数据库的目标索引。
其中,本申请实施例对存储层装置根据内存数据库的全量record构建该内存数据库的目标索引的具体方法不作限定,这里不予赘述。
然后,存储层装置将每次构建得到的目标索引写入磁盘,即实现对目标索引的持久化存储,进而实现了对数据库层装置中内存数据库索引的备份。
可选的,存储层装置可以在目标索引构建完成后,将内存中用于构建该目标索引的全量record释放或删除,以节省存储层装置的资源。
结合图2,参考图7,图7示出了本申请实施例提供的索引备份方法的一种示意图。存储层装置22接收到数据库层装置21发送的全量record后,即将该全量record通过索引构建模块,构建得到目标索引。应当理解,该索引构建模块为逻辑功能模块。
在另一方面,如果数据库层装置采用S101中第二种可能的实现方式向存储层装置发送record,即存储层装置首次从数据库层装置接收到的record包括数据库层装置中内存数据库的全量record,并且非首次从数据库层装置接收到的record包括数据库层装置中内存数据库的增量record。
这种情况下,在首次对内存数据库中的索引进行备份时,存储层装置可以根据首次接收到的全量record,构建数据库层装置中内存数据库的第一目标索引。该第一目标索引即为内存数据库在数据库层装置首次触发checkpoint事件对内存数据库中索引进行备份时,内存数据库中的索引。接着,存储层装置将第一目标索引写入磁盘,即实现了对第一目标索引的持久化存储,进而实现了对数据库层装置中内存数据库的索引的第一次备份。
然后,在非首次对内存数据库中的索引进行备份时,存储层装置可以根据非首次接收到的增量record,对第一目标索引进行更新,从而得到除首次外的每次对内存数据库中的索引进行备份时的目标索引。并且,在每次更新得到一个目标索引后,存储层装置即将该目标索引写入磁盘,即实现了对该目标索引的持久化存储,进而实现了对数据库层装置中内存数据库的索引的一次备份。
例如,在第二次对内存数据库中的索引进行备份时,存储层装置可以根据第二次接收到的增量record对第一目标索引进行更新,从而得到第二目标索引。该第二目标索引即为数据库层装置第二次触发checkpoint事件对内存数据库中索引进行备份时,内存数据库中的索引。
类似的,在第三次对内存数据库中的索引进行备份时,存储层装置可以根据第三次接收到的增量record对第二目标索引进行更新,从而得到第三目标索引。该第三目标索引即为数据库层装置第三次触发checkpoint事件对内存数据库中索引进行备份时,内存数据库中的索引。
以此类推,在第k(k是大于1的整数)次对内存数据库中的索引进行备份时,存储层装置可以根据第k次接收到的增量record对第k-1目标索引进行更新,从而得到第k目标索引。其中,该第k-1目标索引即为数据库层装置第k-1次触发checkpoint事件对内存数据库中索引进行备份时,内存数据库中的索引。该第k目标索引即为数据库层装置第k次触发checkpoint事件对内存数据库中索引进行备份时,内存数据库中的索引。不再赘述。
以目标索引的结构是树结构为例,应理解,根据第k次接收到的增量record对第k-1目标索引进行更新,即为根据第k次接收到的增量record,在第k-1目标索引中增加/删除/修改叶子结点,从而实现对第k-1目标索引的更新,从而得到第k目标索引。
其中,本申请实施例对根据第k次接收到的增量record对第k-1目标索引进行更新的具体方法不作限定,这里不予赘述。
作为示例,结合图7,参考图8,图8示出了本申请实施例提供的索引备份方法的另一种示意图。
如图8所示,当数据库层装置21第1次触发checkpoint事件后,存储层装置22可以接收到数据库层装置21发送的全量record。然后,数据库层装置21则根据该全量record,通过索引构建模块构建得到第一目标索引。
当数据库层装置21第2次触发checkpoint事件后,存储层装置22可以接收到数据库层装置21发送的增量record 1。然后,数据库层装置21则根据增量record 1,通过索引更新模块对第一目标索引进行更新,以得到第二目标索引。
当数据库层装置21第k次触发checkpoint事件后,存储层装置22可以接收到数据库层装置21发送的增量record k。然后,数据库层装置21则根据增量record k,通过索引更新模块对第k-1目标索引进行更新,以得到第k目标索引。
应当理解,上述的索引更新模块为逻辑功能模块。
由上述描述可以看出,在本申请实施例所提供的备份索引的方法中,数据库层装置每触发一次checkpoint事件,存储层装置可以确定得到一个目标索引,该目标索引即为数据库层装置在触发一次checkpoint事件的时刻,内存数据库中的索引。
并且,由于本申请实施例所提供方法每次在备份索引时,均是对基于当前索引备份流程的前一次备份流程所备份的索引进行更新,从而得到当前备份流程备份的索引。可见,当前备份流程备份的索引即为在开始执行当前备份流程时刻,内存数据库中的全量record对应索引。
这样的话,当数据库层装置触发多次checkpoint事件后,在存储层装置的磁盘中包括有该多个目标索引。其中,存储层装置的磁盘中最新写入的目标索引,即为数据库层装置最近一次触发checkpoint事件后,存储层装置确定得到的目标索引,且该目标索引是该最近一次触发checkpoint事件的时刻,内存数据库中的全量record对应索引。
因此可选的,存储层装置可以定期的对磁盘中所存储的多个目标索引里,除最新写入的目标索引之外的目标索引进行删除或释放,以节省磁盘空间。对此不作限定。
至此,本申请实施例提供的索引备份方法,通过将数据库层装置中内存数据库索引备份的过程下放至存储层装置执行,使得备份过程不会对数据库层装置中内存数据库的索引造成任何影响。这样,本申请实施例提供的方法即可在不影响数据库层装置在内存数据库中查询数据时查询速度的前提下,实现对该内存数据库索引的备份,从而缩短了RTO。
例如,以数据量为512GB的内存数据库进行试验,相比不对内存数据库中索引进行备份时对内存数据库进行恢复时的RTO,通过本申请实施例提供的备份索引的方法所备份的索引来对内存数据库进行恢复时的RTO缩短了50%。
此外,在内存数据库恢复时,数据库层装置只需获取通过在内存数据库故障时刻之前、且距离该故障时刻最近时刻所触发的checkpoint事件备份的索引即可,即本申请实施例在恢复内存数据库时,只需获取一个备份索引即可。相比需要通过获取如图3所示的多个备份索引来对内存数据库进行恢复时的RTO,本申请实施例所提供方法在恢复内存数据库时的RTO缩短了10%。
为加深对本申请实施例所提供方法带来的有益效果的理解,下面对根据本申请实施例提供方法备份的索引对数据库层装置中内存数据库的恢复过程予以描述。
参考图9,图9示出了本申请实施例提供的内存数据库恢复的方法流程示意图,该方法可以应用于图2所示的存算分离的内存数据库架构中。
具体的,以数据库层装置已分别通过在第一时刻和第二时刻触发的两次checkpoint事件,对数据库层装置中内存数据库中的record和索引进行了两次备份为例进行说明。
在第一种情况下,经两次备份后,存储层装置的磁盘中存储有数据库层装置中内存数据库在第一时刻备份的全量record和第一索引(对应于上文中的第一目标索引),以及,该内存数据库在第二时刻备份的全量record和第二索引(对应于上文中的第二目标索引)。
在第二种情况下,经两次备份后,存储层装置的磁盘中存储有数据库层装置中内存数据库在第一时刻备份的全量record和第一索引,以及,该内存数据库在第二时刻备份的增量record和第二索引。
其中,更新日志、全量record以及增量record的描述可以参考上文,这里不予赘述。
然后,当在第二时刻之后,且在数据库层装置下一次触发checkpoint事件之前的第三时刻,数据库层装置中的内存数据库故障,则在第三时刻之后的任意时刻,数据库层装置中的内存数据库的故障恢复后,数据库层装置和存储层装置可以通过执行下述步骤来恢复该内存数据库:
S201、数据库层装置向存储层装置发送内存数据库的恢复请求。
其中,在第一种情况下,该恢复请求用于请求获取存储层装置在第二时刻备份的全量record和第二索引,以及用于请求获取第二时刻和第三时刻之间,数据库层装置在存储层装置写入的更新日志。
作为响应,存储层装置接收到数据库层的恢复请求后,向数据库层装置发送在第二时刻备份的全量record和第二索引,以及第二时刻和第三时刻之间数据库层装置在存储层装置写入的更新日志。
在第二种情况下,该恢复请求用于请求获取存储层装置在第一时刻备份的全量record、第二时刻备份的增量record、第二索引、以及用于请求获取第二时刻和第三时刻之间,数据库层装置在存储层装置写入的更新日志。
作为响应,存储层装置接收到数据库层的恢复请求后,向数据库层装置发送第一时刻备份的全量record、第二时刻备份的增量record、第二索引、以及第二时刻和第三时刻之间数据库层装置在存储层装置写入的更新日志。
S202、数据库层装置接收存储层装置响应上述恢复请求后发送的record、索引以及更新日志,并根据接收到的record、索引以及更新日志恢复内存数据库。
在第一种情况下,数据库层装置可以根据接收到的第二时刻和第三时刻之间数据库层装置在存储层装置写入的更新日志,以及第一时刻备份的全量record,恢复出第三时刻内存数据库中的全量record。
以及,数据库层装置可以根据接收到的第二时刻和第三时刻之间数据库层装置在存储层装置写入的更新日志,对第二索引进行更新,从而恢复出第三时刻内存数据库中的索引。这样,数据库层装置即恢复出了内存数据库故障时刻时的内存数据库。
在第二种情况下,数据库层装置可以根据接收到的第二时刻和第三时刻之间数据库层装置在存储层装置写入的更新日志、第一时刻备份的全量record、以及第二时刻备份的增量record,恢复出第三时刻内存数据库中的全量record。
以及,数据库层装置可以根据接收到的第二时刻和第三时刻之间数据库层装置在存储层装置写入的更新日志,对第二索引进行更新,从而恢复出第三时刻内存数据库中的索引。
这样,数据库层装置即恢复出了内存数据库故障时刻时的内存数据库。
应理解,如果数据库层装置的内存数据库中还包括rowmap,则数据库层装置可以根据恢复出的第三时刻时内存数据库中的全量record,生成第三时刻时内存数据库中的rowmap。对此不作赘述。
综上,本申请实施例提供的索引备份方法,通过将数据库层装置中内存数据库索引备份的过程下放至存储层装置执行,使得备份过程不会对数据库层装置中内存数据库的索引造成任何影响。这样,本申请实施例提供的方法即可在不影响数据库层装置在内存数据库中查询数据时查询速度的前提下,实现对该内存数据库备份索引的,从而缩短了RTO。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对索引备份的装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图10所示,图10示出了本申请实施例提供的一种备份索引的装置100的结构示意图。备份索引的装置100可以用于执行上述索引备份的方法,例如用于执行图5所示的方法。其中,备份索引的装置100可以包括接收单元101、处理单元102以及存储控制单元103。
接收单元101,用于接收数据库层装置发送的行记录数据。其中,该行记录数据是数据库层装置中内存数据库的行记录数据。处理单元102,用于根据接收到的行记录数据确定用于定位内存数据库中的行记录数据的目标索引。存储控制单元103,用于控制持久化存储该目标索引。
作为示例,参考图5,接收单元101可以用于执行S101,处理单元102和存储控制单元103可以用于执行S102。
可选的,上述的行记录数据包括内存数据库中的全量行记录数据。处理单元102,具体用于根据该全量行记录数据构建目标索引。
作为示例,参考图5,处理单元102可以用于执行S102。
可选的,在对上述内存数据库中的索引进行首次备份时,上述行记录数据包括该内存数据库中的全量行记录数据。在对上述内存数据库中的索引进行非首次备份时,上述行记录数据包括内存数据库中的增量行记录数据。处理单元102,具体用于在对上述内存数据库中的索引进行非首次备份时,根据该增量行记录数据,对基于该全量行记录数据所构建的索引进行更新,以得到目标索引。其中,该增量行记录数据包括在连续两次执行索引备份的时刻之间上述内存数据库中进行了更新操作的行记录数据。
作为示例,参考图5,处理单元102可以用于执行S102。
可选的,上述的更新操作包括增加、删除或修改中的任一种操作。
可选的,存储控制单元103,还用于控制释放内存中用于确定上述目标索引的行记录数据。
作为示例,参考图5,存储控制单元103可以用于执行S102。
可选的,接收单元101,还用于在上述的根据行记录数据确定目标索引之前,接收数据库层装置发送的用于指示根据行记录数据确定目标索引的通知消息。
可选的,备份索引的装置100和上述的数据库层装置连接通信。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种备份索引的装置100的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
作为示例,结合图4,备份索引的装置100中的接收单元101所实现的功能可以通过图4中的通信接口43实现。处理单元102和存储控制单元103所实现的功能可以通过图4中的处理器41执行图4中的存储器42中的程序代码实现。
本申请实施例还提供一种芯片系统110,如图11所示,该芯片系统110包括至少一个处理器和至少一个接口电路。作为示例,当该芯片系统110包括一个处理器和一个接口电路时,则该一个处理器可以是图11中实线框所示的处理器111(或者是虚线框所示的处理器111),该一个接口电路可以是图11中实线框所示的接口电路112(或者是虚线框所示的接口电路112)。当该芯片系统110包括两个处理器和两个接口电路时,则该两个处理器包括图11中实线框所示的处理器111和虚线框所示的处理器111,该两个接口电路包括图11中实线框所示的接口电路112和虚线框所示的接口电路112。对此不作限定。
处理器111和接口电路112可通过线路互联。例如,接口电路112可用于接收信号(例如接收record等)。又例如,接口电路112可用于向其它装置(例如处理器111)发送信号。示例性的,接口电路112可读取存储器中存储的指令,并将该指令发送给处理器111。当该指令被处理器111执行时,可使得路由发布装置执行上述实施例中的各个步骤。当然,该芯片系统110还可以包含其他分立器件,本申请实施例对此不作具体限定。
参考图12,图12示出了处理器111的一种硬件架构图。
如图12所示,处理器111包括:至少一个CPU,存储器,存储器的类型例如可以包括SRAM和ROM,微控制器(Microcontroller Unit,MCU)、安全子系统、WLAN子系统、总线、传输接口等。虽然图11中未示出,该芯片系统110还可以包括应用处理器(ApplicationProcessor,AP),NPU等其他专用处理器,以及电源管理子系统、时钟管理子系统和功耗管理子系统等其他子系统。
芯片系统110的上述各个部分通过连接器相耦合,示例性的,连接器包括各类接口、传输线或总线等,这些接口通常是电性通信接口,但是也可能是机械接口或其它形式的接口,本实施例对此不做限定。
可选的,CPU可以是一个单核(single-CPU)处理器或多核(multi-CPU)处理器;可选的,CPU可以是多个处理器构成的处理器组,多个处理器之间通过一个或多个总线彼此耦合。在一种可选的情况中,CPU通过调用片上存储器或者片外存储器中存储的程序指令实现如前述方法实施例中的任一种无线投屏的方法。在一种可选的情况中,CPU和MCU共同实现如前述方法实施例中的任一种无线投屏的方法,例如CPU完成无线投屏的方法中的部分步骤,而MCU完成无线投屏的方法中的其他步骤。在一种可选的情况中,AP或者其他专用处理器通过调用片上存储器或者片外存储器中存储的程序指令实现如前述方法实施例中的任一种无线投屏的方法。
该传输接口可以为处理器芯片的接收和发送数据的接口,该传输接口通常包括多种接口,在一种可选的情况下,该传输接口可以包括内部整合电路(Inter-IntegratedCircuit,I2C)接口、串行外设接口(Serial Peripheral Interface,SPI)、通用异步收发机(Universal asynchronous receiver-transmitter,UART)接口、通用输入输出(General-purpose input/output,GPIO)接口等。应当理解,这些接口可以是通过复用相同的物理接口来实现不同的功能。
在一种可选的情况中,传输接口还可以包括高清晰度多媒体接口(HighDefinition Multimedia Interface,HDMI)、V-By-One接口、嵌入式显示端口(EmbeddedDisplay Port,eDP)、移动产业处理器接口(Mobile Industry Processor Interface,MIPI)或Display Port(DP)等。
在一种可选的情况中,上述各部分集成在同一个芯片上;在另一种可选的情况中,存储器可以是独立存在的芯片。
安全子系统可以用于实现对安全认证的相关加密算法。应当理解,与安全认证的相关加密算法通常是硬件实现的,从而可以进一步提升加密算法的安全性。
WLAN子系统例如可以包括RF电路和基带。
本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在路由发布装置上运行时,该路由发布装置执行上述方法实施例所示的方法流程中该路由发布装置执行的各个步骤。
在一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。
图13示出了本申请实施例提供的用于承载计算机程序产品的信号承载介质的结构示意图,该信号承载介质用于存储计算机程序产品或用于存储计算设备上执行计算机进程的计算机程序。
如图13所示,信号承载介质130可以包括一个或多个程序指令,其当被一个或多个处理器运行时可以提供以上针对图5描述的功能或者部分功能。因此,例如,参考图5中S101~S102的一个或多个特征可以由与信号承载介质130相关联的一个或多个指令来承担。此外,图13中的程序指令也描述示例指令。
在一些示例中,信号承载介质130可以包含计算机可读介质131,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。
在一些实施方式中,信号承载介质130可以包含计算机可记录介质132,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。
在一些实施方式中,信号承载介质130可以包含通信介质133,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。
信号承载介质130可以由无线形式的通信介质133(例如,遵守IEEE 1902.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令可以是,例如,计算机可执行指令或者逻辑实施指令。
在一些示例中,诸如针对图5描述的路由发布装置可以被配置为,响应于通过计算机可读介质131、计算机可记录介质132、和/或通信介质133中的一个或多个程序指令,提供各种操作、功能、或者动作。
应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种备份索引的方法,其特征在于,包括:
接收数据库层装置发送的行记录数据,所述行记录数据是所述数据库层装置中内存数据库的行记录数据;
根据所述行记录数据确定目标索引,所述目标索引用于定位所述内存数据库中的行记录数据;
持久化存储所述目标索引。
2.根据权利要求1所述的方法,其特征在于,所述行记录数据包括所述内存数据库中的全量行记录数据,所述根据所述行记录数据确定目标索引,包括:
根据所述全量行记录数据构建所述目标索引。
3.根据权利要求1所述的方法,其特征在于,在对所述内存数据库中的索引进行首次备份时,所述行记录数据包括所述内存数据库中的全量行记录数据;在对所述内存数据库中的索引进行非首次备份时,所述行记录数据包括所述内存数据库中的增量行记录数据,所述增量行记录数据包括在连续两次执行索引备份的时刻之间所述内存数据库中进行了更新操作的行记录数据;
则在对所述内存数据库中的索引进行非首次备份时,所述根据所述行记录数据确定目标索引,包括:
根据所述增量行记录数据,对基于所述全量行记录数据所构建的索引进行更新,以得到所述目标索引。
4.根据权利要求3所述的方法,其特征在于,所述更新操作包括增加、删除或修改中的任一种操作。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
释放内存中用于确定所述目标索引的行记录数据。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述根据所述行记录数据确定目标索引之前,所述方法还包括:
接收所述数据库层装置发送的通知消息,所述通知消息用于指示根据所述行记录数据确定所述目标索引。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法由存储层装置执行,所述存储层装置和所述数据库层装置连接通信。
8.一种备份索引的装置,其特征在于,包括:
接收单元,用于接收数据库层装置发送的行记录数据,所述行记录数据是所述数据库层装置中内存数据库的行记录数据;
处理单元,用于根据所述行记录数据确定目标索引,所述目标索引用于定位所述内存数据库中的行记录数据;
存储控制单元,用于控制持久化存储所述目标索引。
9.根据权利要求8所述的装置,其特征在于,所述行记录数据包括所述内存数据库中的全量行记录数据;
所述处理单元,具体用于根据所述全量行记录数据构建所述目标索引。
10.根据权利要求8所述的装置,其特征在于,在对所述内存数据库中的索引进行首次备份时,所述行记录数据包括所述内存数据库中的全量行记录数据;在对所述内存数据库中的索引进行非首次备份时,所述行记录数据包括所述内存数据库中的增量行记录数据,所述增量行记录数据包括在连续两次执行索引备份的时刻之间所述内存数据库中进行了更新操作的行记录数据;
所述处理单元,具体用于在对所述内存数据库中的索引进行非首次备份时,根据所述增量行记录数据,对基于所述全量行记录数据所构建的索引进行更新,以得到所述目标索引。
11.根据权利要求10所述的装置,其特征在于,所述更新操作包括增加、删除或修改中的任一种操作。
12.根据权利要求8-11中任一项所述的装置,其特征在于,
所述存储控制单元,还用于控制释放内存中用于确定所述目标索引的行记录数据。
13.根据权利要求8-12中任一项所述的装置,其特征在于,
所述接收单元,还用于在所述根据所述行记录数据确定目标索引之前,接收所述数据库层装置发送的通知消息,所述通知消息用于指示根据所述行记录数据确定所述目标索引。
14.根据权利要求8-13中任一项所述的装置,其特征在于,所述装置和所述数据库层装置连接通信。
15.一种备份索引的装置,其特征在于,所述装置包括:一个或多个处理器和传输接口,所述一个或多个处理器通过所述传输接口接收或发送数据,所述一个或多个处理器被配置为调用存储在存储器中的程序指令,以使得所述装置执行如权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括程序指令,当所述程序指令在计算机或处理器上运行时,使得所述计算机或所述处理器执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110163359.0A CN114880319A (zh) | 2021-02-05 | 2021-02-05 | 一种备份索引的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110163359.0A CN114880319A (zh) | 2021-02-05 | 2021-02-05 | 一种备份索引的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114880319A true CN114880319A (zh) | 2022-08-09 |
Family
ID=82667596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110163359.0A Pending CN114880319A (zh) | 2021-02-05 | 2021-02-05 | 一种备份索引的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880319A (zh) |
-
2021
- 2021-02-05 CN CN202110163359.0A patent/CN114880319A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
US9672244B2 (en) | Efficient undo-processing during data redistribution | |
US20150213100A1 (en) | Data synchronization method and system | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
US9229970B2 (en) | Methods to minimize communication in a cluster database system | |
US20070214334A1 (en) | Storage system | |
WO2019020081A1 (zh) | 分布式系统及其故障恢复方法、装置、产品和存储介质 | |
US11748215B2 (en) | Log management method, server, and database system | |
WO2014147085A2 (en) | Method and system for byzantine fault tolerant data replication | |
US11960442B2 (en) | Storing a point in time coherently for a distributed storage system | |
CN115421969A (zh) | 备份数据恢复方法及计算设备 | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN111651426A (zh) | 数据迁移方法、装置及计算机可读存储介质 | |
CN113297173B (zh) | 分布式数据库集群管理方法及装置、电子设备 | |
CN111404737B (zh) | 一种容灾处理方法以及相关装置 | |
CN111752892B (zh) | 分布式文件系统及其实现方法、管理系统、设备及介质 | |
CN114880319A (zh) | 一种备份索引的方法及装置 | |
CN102904946A (zh) | 集群内节点管理方法和装置 | |
CN115563221A (zh) | 数据同步方法、存储系统、设备及存储介质 | |
CN115470041A (zh) | 一种数据灾备管理方法及装置 | |
CN116821232A (zh) | 一种数据同步方法及相关装置 | |
WO2007028249A1 (en) | Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring | |
CN112559457A (zh) | 数据访问方法及装置 | |
CN107590286B (zh) | 在集群文件系统中事务信息的管理方法和装置 | |
CN115941486B (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 |