CN113468080A - 一种全闪元数据的缓存方法、系统及相关装置 - Google Patents
一种全闪元数据的缓存方法、系统及相关装置 Download PDFInfo
- Publication number
- CN113468080A CN113468080A CN202110650032.6A CN202110650032A CN113468080A CN 113468080 A CN113468080 A CN 113468080A CN 202110650032 A CN202110650032 A CN 202110650032A CN 113468080 A CN113468080 A CN 113468080A
- Authority
- CN
- China
- Prior art keywords
- metadata
- full flash
- flash metadata
- skip list
- full
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000003780 insertion Methods 0.000 claims abstract description 27
- 230000037431 insertion Effects 0.000 claims abstract description 27
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012217 deletion Methods 0.000 abstract description 7
- 230000037430 deletion Effects 0.000 abstract description 7
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供一种全闪元数据的缓存方法,包括:获取所述全闪元数据;将所述全闪元数据按照键值大小进行排序,得到元数据顺序;根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。本实施基于跳表结构提高了全闪元数据的插入、删除、查询等操作的操作效率,同时由于缓存跳表中的全闪元数据按顺序排列,有助于落盘时与盘上B+树合并,提高落盘效率。本申请还提供一种全闪元数据的缓存系统、计算机可读存储介质和服务器,具有上述有益效果。
Description
技术领域
本申请涉及计算机存储领域,特别涉及一种全闪元数据的缓存方法、系统及相关装置。
背景技术
全闪存储系统中,元数据量非常大,可能达到几TB甚至几十TB,通常采用写缓存来加速元数据的写盘操作。
然后全闪存储系统的元数据通常是大量的K-V(key-value,键值)对,并且需要落盘,而盘上通常采用B+树等数据结构,传统的哈希方法不太适用于元数据的写缓存。而内存中使用B+树做缓存,通常需要做节点的分裂、合并等操作效率较低,不利于元数据落盘,影响数据存储效率。
发明内容
本申请的目的是提供一种全闪元数据的缓存方法、缓存系统、计算机可读存储介质和服务器,通过采用缓存跳表提高元数据操作效率。
为解决上述技术问题,本申请提供一种全闪元数据的缓存方法,具体技术方案如下:
获取所述全闪元数据;
将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
可选的,若所述数据间隔为固定间隔,根据所述全闪元数据的数量确定数据间隔和对应的跳表级数包括:
将所述全闪元数据的数量代入幂公式确定对应的跳表级数;
其中,所述幂公式为M≤AB,M为所述全闪元数据的数量,A为所述数据间隔,B为所述跳表级数且为满足所述幂公式的最小正整数。
可选的,当新全闪元数据插入时,还包括:
确定所述新全闪元数据在所述元数据顺序中的第一目标位置;
按照所述第一目标位置将所述新全闪元数据插入至所述缓存跳表,并根据所述第一目标位置对应的数据间隔计算上层节点的插入概率;
当命中所述插入概率时,在所述新全闪元数据的上一节点层添加所述新全闪元数据对应的新节点。
可选的,当删除所述缓存跳表中的目标全闪元数据时,还包括:
确定所述目标全闪元数据在所述元数据顺序中的第二目标位置;
删除所述第二目标位置处的目标全闪元数据,并判断所述目标全闪元数据是否存在对应的节点;
若是,删除所有所述目标全闪元数据对应的节点。
可选的,删除所有所述目标全闪元数据对应的节点之后,还包括:
基于所述目标全闪元数据的一个相邻元数据建立相应的上层节点。
可选的,所述缓存跳表中的所述全闪元数据落盘至B+树时,还包括:
根据全闪元数据确定其对应的B+树的节点;
构建包含父节点指针的链表;
将所述全闪元数据按照键值大小顺序插入所述链表;
以所述父节点作为连接点,将所述链表作为节点添加至所述B+树,完成所述全闪元数据的落盘。
本申请还提供一种全闪元数据的缓存系统,包括:
数据获取模块,用于获取所述全闪元数据;
排序模块,用于将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
跳表属性确定模块,用于根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
跳表缓存模块,用于以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
可选的,还包括:
落盘模块,用于所述缓存跳表中的所述全闪元数据落盘至B+树时,根据全闪元数据确定其对应的B+树的节点;构建包含父节点指针的链表;将所述全闪元数据按照键值大小顺序插入所述链表;以所述父节点作为连接点,将所述链表作为节点添加至所述B+树,完成所述全闪元数据的落盘。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请还提供一种服务器,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
本申请提供一种全闪元数据的缓存方法,包括:获取所述全闪元数据;将所述全闪元数据按照键值大小进行排序,得到元数据顺序;根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
本实施例通过对全闪元数据进行排序,并根据实际的全闪元数据数量制定相应缓存跳表的数据间隔和跳表级数,从而生成相应的缓存跳表实现全闪元数据的缓存,基于跳表结构提高了全闪元数据的插入、删除、查询等操作的操作效率,同时由于缓存跳表中的全闪元数据按顺序排列,有助于落盘时与盘上B+树合并,提高落盘效率。
本申请还提供一种全闪元数据的缓存系统、计算机可读存储介质和服务器,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种全闪元数据的缓存方法的流程图;
图2为本申请实施例所提供的一种跳表结构示意图;
图3为本申请实施例提供的缓存跳表落盘前示意图;
图4为本申请实施例提供的缓存跳表落盘时节点插入示意图;
图5为本申请实施例提供的缓存跳表落盘时刷表过程示意图;
图6为本申请实施例提供的缓存跳表落盘后示意图;
图7为本申请实施例所提供的一种全闪元数据的缓存系统结构示意图;
图8为本申请实施例所提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种全闪元数据的缓存方法的流程图,本申请实施例提供一种全闪元数据的缓存方法,包括:
S101:获取所述全闪元数据;
S102:将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
本步骤旨在对全闪元数据进行排序,通常按照键值从小到大的顺序进行排序。当然本领域技术人员还可以自行设定其他排序方式,在此不一一举例限定。
S103:根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
本步骤旨在根据全闪元数据的数量确定数据间隔,以及跳表级数。跳表是一种链表,是一种有序的链表结构。跳表通过使用一个多层级的结构,维持链表有序的插入、删除、查询操作都能达到O(log n)的时间复杂度。跳表数据结构如图2所示,图2为本申请实施例所提供的一种跳表结构示意图。跳表通过维护多级有序链表,达到类似二分查找的效率。以图2为例,对于查询操作,比如查询78,首先从第一级链表遍历,发现78应该在[19,+∞]之间,则从19节点到第二层,第二层从19往后找,发现78应该在[45,+∞]之间,则从45节点到第三层,第三层从45往后找到78,查找结束,这种二分查找策略,具有O(log2 n)的时间复杂度,当数据量很大时,比如106(百万)级别,查询一个数据,只需要大约20次查询即可。
图2所示跳表的数据间隔为2,跳表级数为3。而在本实施例的实际应用中,数据间隔和对应的跳表级数均可以根据实际的全闪元数据的数量进行设定。通常可以将数据间隔设为固定值,以便直接计算得到相应的跳表级数。
若数据间隔为固定间隔,根据全闪元数据的数量确定数据间隔和对应的跳表级数包括:
将全闪元数据的数量代入幂公式确定对应的跳表级数;
其中,幂公式为M≤AB,M为全闪元数据的数量,A为数据间隔,B为跳表级数且为满足幂公式的最小正整数。
举例而言,若数据间隔为固定值2,当M等于1000即有1000个全闪元数据时,则可以根据上述幂公式确定1000小于2的10次幂1024,即A=2,B=10,此时可以设定数据间隔为2,跳表级数为10。
需要说明的是,同一缓存跳表可以包含不同的数据间隔。若考虑元数据热度,可以针对热度较高的元数据配置较小的数据间隔,而热度较低的元数据配置较大的数据间隔,以整体提高元数据的访问操作效率。
S104:以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
在确认跳表级数和数据间隔后,即可将其作为跳表数据性,并得到相应的缓存跳表。此后可直接将全闪元数据按照元数据顺序填入至缓存跳表,即可实现利用缓存跳表存储全闪元数据。由于全闪系统中,元数据一般是大量的K-V对,数据量达到TB甚至几十TB级别,最终需要落盘,而盘上一般采用B+树存储,为了提高元数据插入、删除、查询的性能,通常在内存中缓存一定量的K-V对,达到一定量级后统一落盘,提高效率。写缓存中存储的是最新插入且没有落盘的元数据,如果有查询操作,需要先查写缓存,所以对查询、插入、删除操作性能要求都很高。缓存跳表所具备的跳表结构在增、删、查方面都具有非常好的性能,非常适合用于内存中写缓存的组织结构。
本实施例通过对全闪元数据进行排序,并根据实际的全闪元数据数量制定相应缓存跳表的数据间隔和跳表级数,从而生成相应的缓存跳表实现全闪元数据的缓存,基于跳表结构提高了全闪元数据的插入、删除、查询等操作的操作效率,同时由于缓存跳表中的全闪元数据按顺序排列,有助于落盘时与盘上B+树合并,提高落盘效率。
其次,还需要说明的是,在本申请的其他实施例中,步骤S103和S102的执行顺序可以相互颠倒,即先执行根据所述全闪元数据的数量确定数据间隔和对应的跳表级数的过程,再执行将所述全闪元数据按照键值大小进行排序,得到元数据顺序的过程,并不会对本申请的实施效果有任何影响。
基于上述实施例,作为优选的实施例,本实施例为在上一实施例得到缓存跳表之后,当新全闪元数据插入时,还可以包括如下步骤:
S201:确定新全闪元数据在元数据顺序中的第一目标位置;
S202:按照第一目标位置将新全闪元数据插入至缓存跳表,并根据第一目标位置对应的数据间隔计算上层节点插入概率;
S203:当命中插入概率时,在新全闪元数据的上一节点层添加新全闪元数据对应的新节点。
当存在新全闪元数据插入至缓存跳表时,确认其与缓存跳表中的各全闪元数据的大小关系,以便得到其对应的第一目标位置。由于缓存跳表中全闪元数据已经排序完毕,则第一目标位置唯一存在。其应在某一全闪元数据之后,或在某一全闪元数据之前。
则在第一目标位置确定后,将新全闪元数据插入至第一目标位置,即在缓存跳表的最底层插入该目标全闪元数据。此后可以计算上层节点插入概率。在此对于如何计算上层节点插入概率不作限定,优选的,可以设上层节点插入概率与数据间隔的乘积为1,例如若数据间隔为2,则上层节点的插入概率为1/2。若数据间隔为3,则上层节点的插入概率为1/3。
若命中插入概率,则在缓存跳表的上层节点中插入新全闪元数据对应的节点。
此外,还可以在更上一层节点中在此计算节点插入概率,此时应考虑层数,对应的插入概率计算公式可以如下:
An·S=1
其中,A为数据间隔,n为层数,S为插入概率。
同理,若命中插入概率,则在缓存跳表的该层节点中插入新全闪元数据对应的节点。
基于上述实施例,作为优选的实施例,本实施例为在上述实施例得到缓存跳表之后,删除所述缓存跳表中的目标全闪元数据时,还可以包括如下步骤:
S301:确定所述目标全闪元数据在所述元数据顺序中的第二目标位置;
S302:删除所述第二目标位置处的目标全闪元数据,并判断所述目标全闪元数据是否存在对应的节点;若是,进入S303;
S303:删除所有所述目标全闪元数据对应的节点。
当缓存跳表中存在目标全闪元数据需要删除时,确定该目标全闪元数据的第二目标位置,此时可以直接删除该目标全闪元数据,即在缓存跳表的最底层删除该目标全闪元数据。同时需要判断缓存跳表中是否存在目标全闪元数据对应的节点,若存在,需要删除缓存跳表中所有目标全闪元数据对应的节点,以避免后续查找错误。
更进一步的,在上一实施例的基础上,删除所有所述目标全闪元数据对应的节点之后,还可以基于目标全闪元数据的一个相邻元数据建立相应的上层节点。若目标全闪元数据存在对应的节点,则在删除节点后,将导致上一层的数据间隔变大,影响查找效率,此时可以新建对应的上层节点,可以选择目标全闪元数据的一个相邻元数据进行上层节点的建立。需要注意的是,每删除一个目标全闪元数据对应的节点,则需要相对应的建立一个新的节点,且并非仅仅针对于目标全闪元数据的上一层,而可以为包含目标全闪元数据对应节点的跳表层。
还需要说明的是,得到缓存跳表之后,本实施例中描述的全闪元数据删除过程和上一实施例所描述的全闪元数据的插入过程相互独立,即二者可以同时执行,也可以按照一定的先后顺序执行,二者的过程互不影响。
此外,删除过程若与全闪元数据的插入过程相结合,可以实现全闪元数据的替换过程,可以先删除再插入,也可以先插入再删除,均可以实现全闪元数据的替换,在此不作重复说明。
基于上述各实施例,作为优选的实施例,下文针对以缓存跳表结构的全闪元数据落盘进行描述,当所述缓存跳表中的所述全闪元数据落盘至B+树时,可以包括如下步骤:
S401:根据全闪元数据确定其对应的B+树的节点;
S402:构建包含父节点指针的链表;
S403:将所述全闪元数据按照键值大小顺序插入所述链表;
S404:以所述父节点作为连接点,将所述链表作为节点添加至所述B+树,完成所述全闪元数据的落盘。
如图3所示,图3为本申请实施例提供的缓存跳表落盘前示意图,当前盘上B+树disk BPtree如图3中右上所示,此时构造一种带父节点指针的链表即可实现刷盘。
具体的,参见图4,图4为本申请实施例提供的缓存跳表落盘时节点插入示意图,当存在全闪元数据22、55和66需要落盘时,为了插入全闪元数据22,依次从B+树的根节点往下找,找到了A,C,G三个节点,然后将全闪元数据22插入节点G,因为采用追加写的方式,节点G改变时会找一个新的位置写入这块数据,而节点C记了节点G的地址,所以节点C需要同步更新,同理节点A需要更新。
当处理全闪元数据55时,全闪元数据55一定在全闪元数据22的后面,所以只需要从已构建的需要落盘的结构第一层往下查即可,比如A’中发现全闪元数据55比13大,往下找到下一层的最后一个节点C’,发现全闪元数据55比全闪元数据29大,则需要读另一个叶子节点H。
即,每次要插入的新全闪元数据,肯定比已构建出来的子树的最后一个新全闪元数据的键值大,使用一个包含父节点指针的多层链表来存储,每次只需要比较每层的尾节点即可,而无需再从B+树的根节点依次往下找一遍。当所有节点插入完成后,按层依次刷盘,参见图5,图5为本申请实施例提供的缓存跳表落盘时刷表过程示意图。最终落盘后得到的B+树如图6所示,图6为本申请实施例提供的缓存跳表落盘后示意图。
下面对本申请实施例提供的一种全闪元数据的缓存系统进行介绍,下文描述的缓存系统与上文描述的全闪元数据的缓存方法可相互对应参照。
参见图7,图7为本申请实施例所提供的一种全闪元数据的缓存系统结构示意图,本申请还提供一种全闪元数据的缓存系统,包括:
数据获取模块100,用于获取所述全闪元数据;
排序模块200,用于将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
跳表属性确定模块300,用于根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
跳表缓存模块400,用于以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
基于上述实施例,作为优选的实施例,若所述数据间隔为固定间隔,跳表属性确定模块300为用于将所述全闪元数据的数量代入幂公式确定对应的跳表级数的模块;
其中,所述幂公式为M≤AB,M为所述全闪元数据的数量,A为所述数据间隔,B为所述跳表级数且为满足所述幂公式的最小正整数。
基于上述实施例,作为优选的实施例,还包括:
插入模块,用于当新全闪元数据插入时,确定所述新全闪元数据在所述元数据顺序中的第一目标位置;按照所述第一目标位置将所述新全闪元数据插入至所述缓存跳表,并根据所述第一目标位置对应的数据间隔计算上层节点的插入概率;当命中所述插入概率时,在所述新全闪元数据的上一节点层添加所述新全闪元数据对应的新节点。
基于上述实施例,作为优选的实施例,还包括:
删除模块,用于当删除所述缓存跳表中的目标全闪元数据时,确定所述目标全闪元数据在所述元数据顺序中的第二目标位置;删除所述第二目标位置处的目标全闪元数据,并判断所述目标全闪元数据是否存在对应的节点;若是,删除所有所述目标全闪元数据对应的节点。
基于上述实施例,作为优选的实施例,还包括:
节点新建模块,用于在删除所有所述目标全闪元数据对应的节点之后,基于所述目标全闪元数据的一个相邻元数据建立相应的上层节点。
基于上述实施例,作为优选的实施例,还包括:
落盘模块,用于所述缓存跳表中的所述全闪元数据落盘至B+树时,根据全闪元数据确定其对应的B+树的节点;构建包含父节点指针的链表;将所述全闪元数据按照键值大小顺序插入所述链表;以所述父节点作为连接点,将所述链表作为节点添加至所述B+树,完成所述全闪元数据的落盘。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
该计算机可读存储介质中的计算机程序至少可以实现如下步骤:
获取所述全闪元数据;
将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
本申请还提供了一种服务器,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述服务器还可以包括各种网络接口,电源等组件。请参见图8,图8为本申请实施例所提供的一种服务器的结构示意图,本实施例的服务器可以包括:处理器2101和存储器2102。
可选的,该服务器还可以包括通信接口2103、输入单元2104和显示器2105和通信总线2106。
处理器2101、存储器2102、通信接口2103、输入单元2104、显示器2105、均通过通信总线2106完成相互间的通信。
在本申请实施例中,该处理器2101,可以为中央处理器(Central ProcessingUnit,CPU),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。
该处理器可以调用存储器2102中存储的程序。具体的,处理器可以执行上文的实施例中服务器所执行的操作。
存储器2102中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:
获取所述全闪元数据;
将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
在一种可能的实现方式中,该存储器2102可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以及至少一个功能所需的应用程序等;存储数据区可存储根据计算机的使用过程中所创建的数据。
此外,存储器2102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
该通信接口2103可以为通信模块的接口,如GSM模块的接口。
本申请还可以包括显示器2105和输入单元2104等等。
图8所示的服务器的结构并不构成对本申请实施例中服务器的限定,在实际应用中服务器可以包括比图8所示的更多或更少的部件,或者组合某些部件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种全闪元数据的缓存方法,其特征在于,包括:
获取所述全闪元数据;
将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
2.根据权利要求1所述的缓存方法,其特征在于,若所述数据间隔为固定间隔,根据所述全闪元数据的数量确定数据间隔和对应的跳表级数包括:
将所述全闪元数据的数量代入幂公式确定对应的跳表级数;
其中,所述幂公式为M≤AB,M为所述全闪元数据的数量,A为所述数据间隔,B为所述跳表级数且为满足所述幂公式的最小正整数。
3.根据权利要求1所述的缓存方法,其特征在于,当新全闪元数据插入时,还包括:
确定所述新全闪元数据在所述元数据顺序中的第一目标位置;
按照所述第一目标位置将所述新全闪元数据插入至所述缓存跳表,并根据所述第一目标位置对应的数据间隔计算上层节点的插入概率;
当命中所述插入概率时,在所述新全闪元数据的上一节点层添加所述新全闪元数据对应的新节点。
4.根据权利要求1所述的缓存方法,其特征在于,当删除所述缓存跳表中的目标全闪元数据时,还包括:
确定所述目标全闪元数据在所述元数据顺序中的第二目标位置;
删除所述第二目标位置处的目标全闪元数据,并判断所述目标全闪元数据是否存在对应的节点;
若是,删除所有所述目标全闪元数据对应的节点。
5.根据权利要求4所述的缓存方法,其特征在于,删除所有所述目标全闪元数据对应的节点之后,还包括:
基于所述目标全闪元数据的一个相邻元数据建立相应的上层节点。
6.根据权利要求1-5任一项所述的缓存方法,其特征在于,所述缓存跳表中的所述全闪元数据落盘至B+树时,还包括:
根据全闪元数据确定其对应的B+树的节点;
构建包含父节点指针的链表;
将所述全闪元数据按照键值大小顺序插入所述链表;
以所述父节点作为连接点,将所述链表作为节点添加至所述B+树,完成所述全闪元数据的落盘。
7.一种全闪元数据的缓存系统,其特征在于,包括:
数据获取模块,用于获取所述全闪元数据;
排序模块,用于将所述全闪元数据按照键值大小进行排序,得到元数据顺序;
跳表属性确定模块,用于根据所述全闪元数据的数量确定数据间隔和对应的跳表级数;
跳表缓存模块,用于以所述跳表级数和所述数据间隔作为跳表属性,按照所述元数据顺序得到所述全闪元数据的缓存跳表,并以所述缓存跳表缓存所述全闪元数据。
8.根据权利要求7所述的缓存系统,其特征在于,还包括:
落盘模块,用于所述缓存跳表中的所述全闪元数据落盘至B+树时,根据全闪元数据确定其对应的B+树的节点;构建包含父节点指针的链表;将所述全闪元数据按照键值大小顺序插入所述链表;以所述父节点作为连接点,将所述链表作为节点添加至所述B+树,完成所述全闪元数据的落盘。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述的全闪元数据的缓存方法的步骤。
10.一种服务器,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1-6任一项所述的全闪元数据的缓存方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110650032.6A CN113468080B (zh) | 2021-06-10 | 2021-06-10 | 一种全闪元数据的缓存方法、系统及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110650032.6A CN113468080B (zh) | 2021-06-10 | 2021-06-10 | 一种全闪元数据的缓存方法、系统及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113468080A true CN113468080A (zh) | 2021-10-01 |
CN113468080B CN113468080B (zh) | 2024-02-09 |
Family
ID=77869624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110650032.6A Active CN113468080B (zh) | 2021-06-10 | 2021-06-10 | 一种全闪元数据的缓存方法、系统及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468080B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069267A (zh) * | 2023-04-06 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种raid卡的写缓存方法、系统、设备及存储介质 |
CN116303586A (zh) * | 2022-12-09 | 2023-06-23 | 中电云数智科技有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260810A1 (en) * | 2006-05-03 | 2007-11-08 | Yi-Hsien Chuang | System and method for caching sequential programs |
CN103970795A (zh) * | 2013-01-31 | 2014-08-06 | 杭州勒卡斯广告策划有限公司 | 一种数据处理方法、装置及系统 |
CN105515776A (zh) * | 2010-03-05 | 2016-04-20 | 交互数字专利控股公司 | 给设备提供安全性的方法和装置 |
CN107678680A (zh) * | 2017-07-27 | 2018-02-09 | 深圳市云舒网络技术有限公司 | 分布式块存储系统中纠删码并发io的方法及存储装置 |
CN108319602A (zh) * | 2017-01-17 | 2018-07-24 | 广州市动景计算机科技有限公司 | 数据库管理方法及数据库系统 |
US20200042358A1 (en) * | 2017-08-07 | 2020-02-06 | Huawei Technologies Co., Ltd. | Memory allocation method and server |
CN110795042A (zh) * | 2019-10-29 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种全闪存储系统元数据写缓存刷盘方法及相关组件 |
CN111861743A (zh) * | 2020-06-29 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种基于逐笔数据重构市场行情的方法、装置及设备 |
CN111913801A (zh) * | 2020-07-15 | 2020-11-10 | 广州虎牙科技有限公司 | 数据处理方法和装置、代理服务器、存储系统及存储介质 |
-
2021
- 2021-06-10 CN CN202110650032.6A patent/CN113468080B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260810A1 (en) * | 2006-05-03 | 2007-11-08 | Yi-Hsien Chuang | System and method for caching sequential programs |
CN105515776A (zh) * | 2010-03-05 | 2016-04-20 | 交互数字专利控股公司 | 给设备提供安全性的方法和装置 |
CN103970795A (zh) * | 2013-01-31 | 2014-08-06 | 杭州勒卡斯广告策划有限公司 | 一种数据处理方法、装置及系统 |
CN108319602A (zh) * | 2017-01-17 | 2018-07-24 | 广州市动景计算机科技有限公司 | 数据库管理方法及数据库系统 |
CN107678680A (zh) * | 2017-07-27 | 2018-02-09 | 深圳市云舒网络技术有限公司 | 分布式块存储系统中纠删码并发io的方法及存储装置 |
US20200042358A1 (en) * | 2017-08-07 | 2020-02-06 | Huawei Technologies Co., Ltd. | Memory allocation method and server |
CN110795042A (zh) * | 2019-10-29 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种全闪存储系统元数据写缓存刷盘方法及相关组件 |
CN111861743A (zh) * | 2020-06-29 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种基于逐笔数据重构市场行情的方法、装置及设备 |
CN111913801A (zh) * | 2020-07-15 | 2020-11-10 | 广州虎牙科技有限公司 | 数据处理方法和装置、代理服务器、存储系统及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303586A (zh) * | 2022-12-09 | 2023-06-23 | 中电云数智科技有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
CN116303586B (zh) * | 2022-12-09 | 2024-01-30 | 中电云计算技术有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
CN116069267A (zh) * | 2023-04-06 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种raid卡的写缓存方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113468080B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
US20220413706A1 (en) | Data Storage Method, Apparatus and Storage System | |
CN110147204B (zh) | 一种元数据落盘方法、装置、系统及计算机可读存储介质 | |
US10783115B2 (en) | Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset | |
US10649959B2 (en) | Write-optimized nested trees | |
CN109522271B (zh) | 一种b+树节点的批量插入和删除方法及装置 | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN110168532B (zh) | 数据更新方法和存储装置 | |
US11093450B2 (en) | Auto-tuned write-optimized key-value store | |
CN113468080A (zh) | 一种全闪元数据的缓存方法、系统及相关装置 | |
CN113961514B (zh) | 数据查询方法及装置 | |
CN112148928A (zh) | 一种基于指纹家族的布谷鸟过滤器 | |
US20140324875A1 (en) | Index for fast batch updates of large data tables | |
CN115718819A (zh) | 一种索引构建方法、数据读取方法及索引构建装置 | |
CN111158601A (zh) | 一种缓存中的io数据下刷方法、系统及相关装置 | |
CN110597805B (zh) | 一种内存索引结构处理方法 | |
KR100859710B1 (ko) | 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 | |
CN116301656A (zh) | 基于日志结构合并树的数据存储方法、系统及设备 | |
KR102354343B1 (ko) | 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치 | |
CN114489481A (zh) | 硬盘存储数据并访问的方法及系统 | |
CN114385624A (zh) | 编码方法、编码查找方法、装置、电子设备及存储介质 | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 | |
CN113704260A (zh) | 一种基于改进lsm树结构的数据存储方法及系统 | |
US9824105B2 (en) | Adaptive probabilistic indexing with skip lists | |
CN115374127B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |