一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

KV存储设备的地址转换及其加速器的制作方法

2021-10-24 07:26:00 来源:中国专利 TAG:存储设备 加速器 转换 地址 kv

kv存储设备的地址转换及其加速器
技术领域
1.本技术涉及kv存储设备,具体涉及kv存储设备的地址转换及其加速器。


背景技术:

2.图1a是固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serial advanced technology attachment,串行高级技术附件)、scsi(small computer system interface,小型计算机系统接口)、sas(serial attached scsi,串行连接scsi)、ide(integrated drive electronics,集成驱动器电子)、usb(universal serial bus,通用串行总线)、pcie(peripheral component interconnect express,pcie,高速外围组件互联)、nvme(nvm express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm芯片105以及dram(dynamic random access memory,动态随机访问存储器)110。
3.nand闪存、相变存储器、feram(ferroelectric ram,铁电存储器)、mram(magnetic random access memory,磁阻存储器)、rram(resistive random access memory,阻变存储器)等是常见的nvm。
4.接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。
5.控制部件104用于控制在接口103、nvm芯片105以及dram 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field

programmable gate array,现场可编程门阵列)、asic(application specific integrated circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令。控制部件104还可以耦合到dram 110,并可访问dram 110的数据。在dram可存储ftl表和/或缓存的io命令的数据。
6.控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。已知的nvm芯片接口协议包括“toggle”、“onfi”等。
7.存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
8.在固态存储设备中,利用ftl(flash translation layer,闪存转换层)来维护从
逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
9.存储了从逻辑地址到物理地址的映射信息的表结构被称为ftl表。ftl表是固态存储设备中的重要元数据。通常ftl表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
10.ftl表包括多个ftl表条目(或称表项)。在一种情况下,每个ftl表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个ftl表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个ftl表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,ftl表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
11.支持key

value(键

数据,也简称为“kv”)存储模型的存储设备,提供基于键(key)的读操作(get(key))与写操作(put(key,value))。为执行写操作,主机向存储设备提供键(key)与数据(value),以将数据写入存储设备,并将键作为所写入的数据的索引。为执行读操作,主机向存储设备提供键,存储设备根据键找到数据,并将数据提供给主机。因而在kv存储系统中,键是用来访问数据的索引,而数据(value)是被访问的数据。一般地,键与数据的长度均不是定长。以及可选地,为了降低复杂性,键和/或数据的长度可具有指定范围。
12.图1b是现有技术的固态存储设备的地址转换系统的示意图。支持kv存储模型的固态存储设备的地址转换系统(也称为ftl表)提供从由到物理地址(例如,ppa,physical page address,物理页地址)的映射。可选地,除了物理页地址,ftl表中记录的物理地址可以是物理页内部的数据帧(data frame)的起始地址。数据帧是具有固定大小的数据单元,物理页包括1个或多个数据帧。
13.用键作为索引查询ftl表,得到对应的物理地址。ftl表可以由数组、链表、树等多种数据结构实现。可选地,将不定长的键进行哈希运算,得到定长的哈希键(例如,4字节/8字节),作为ftl表的索引。


技术实现要素:

14.根据本技术的第一方面,提供了根据本技术第一方面的第一kv存储设备,包括排序表和nvm存储介质,排序表包括多个条目,每个条目记录了键与同所述键对应的值地址列表。
15.根据本技术的第一方面的第一kv存储设备,提供了根据本技术第一方面的第二kv存储设备,排序表的多个条目按键的大小排序。
16.根据本技术的第一方面的第一或第二kv存储设备,提供了根据本技术第一方面的第三kv存储设备,值地址列表记录了0个、1个或多个同键对应的值的地址,根据每个地址可访问kv存储设备的nvm存储介质。
17.根据本技术的第一方面的第三kv存储设备,提供了根据本技术第一方面的第四kv存储设备,值地址列表记录的地址是逻辑地址。
18.根据本技术的第一方面的第三kv存储设备,提供了根据本技术第一方面的第五kv
存储设备,还包括ftl表,ftl表中记录了逻辑地址到nvm存储介质的物理地址的映射关系。
19.根据本技术的第一方面的第一至第五kv存储设备之一,提供了根据本技术第一方面的第六kv存储设备,排序表的值地址表中记录的地址是nvm存储介质的物理地址。
20.根据本技术的第一方面的第一至第六kv存储设备之一,提供了根据本技术第一方面的第七kv存储设备,值地址表的数据组织方式为数组、链表、哈希表、树中的一种或多种。
21.根据本技术的第一方面的第一至第七kv存储设备之一,提供了根据本技术第一方面的第八kv存储设备,通过哈希表记录键与值地址表的对应关系。
22.根据本技术的第一方面的第一至第八kv存储设备之一,提供了根据本技术第一方面的第九kv存储设备,用键查询排序表得到值地址列表,根据值地址列表中的各个地址获取数据,作为对读操作的响应。
23.根据本技术的第一方面的第一至第九kv存储设备之一,提供了根据本技术第一方面的第十kv存储设备,值地址表的每个节点还记录了所对应的值的长度或大小。
24.根据本技术的第一方面的第一至第十kv存储设备之一,提供了根据本技术第一方面的第十一kv存储设备,值地址表的每个节点还记录指向属于同一值地址表的下一个节点的指针或地址。
25.根据本技术的第一方面的第一至第十一kv存储设备之一,提供了根据本技术第一方面的第十二kv存储设备,值地址表的每个节点还记录扩展键。
26.根据本技术的第一方面的第十二kv存储设备,提供了根据本技术第一方面的第十三kv存储设备,扩展键用于唯一标识属于同一值地址表的多个节点。
27.根据本技术的第一方面的第十二或第十三kv存储设备,提供了根据本技术第一方面的第十四kv存储设备,用值地址表的节点对应的值的哈希值或依据指定校验算法得到的校验值作为扩展键。
28.根据本技术的第一方面的第十二至第十四kv存储设备之一,提供了根据本技术第一方面的第十五kv存储设备,在nvm存储介质中同值相关联地存储扩展键。
29.根据本技术的第一方面的第一至第十五kv存储设备之一,提供了根据本技术第一方面的第十六kv存储设备,排序表与值地址表被设置在内存中。
30.根据本技术的第一方面的第一至第十五kv存储设备之一,提供了根据本技术第一方面的第十七kv存储设备,排序表与值地址表的部分或全部被存储在nvm存储介质中。
31.根据本技术的第一方面的第一至第十七kv存储设备之一,提供了根据本技术第一方面的第十八kv存储设备,所述的kv存储设备处理包括读操作、写操作、删除操作、追加操作、覆盖写操作、替换写操作中的一种或多种操作。
32.根据本技术的第一方面的第十八kv存储设备,提供了根据本技术第一方面的第十九kv存储设备,响应于收到追加操作,其中追加操作指示了待追加的第一键与第一值,为第一值分配地址,将为第一值分配的地址追加记录在同第一键对应的值地址表中。
33.根据本技术的第一方面的第十九kv存储设备,提供了根据本技术第一方面的第二十kv存储设备,在同第一键对应的值地址表中增加节点,增加的节点指示为第一值分配的地址。
34.根据本技术的第一方面的第十九kv存储设备,提供了根据本技术第一方面的第二十一kv存储设备,若排序表中不存在以第一键为索引的条目,则向排序表中添加以第一键
为索引的第一条目。
35.根据本技术的第一方面的第二十一kv存储设备,提供了根据本技术第一方面的第二十二kv存储设备,在第一条目中记录指示第一条目的值地址表的指针,在第一条目的值地址表中添加节点,增加的节点指示为第一值分配的地址。
36.根据本技术的第一方面的第十八至第二十二kv存储设备之一,提供了根据本技术第一方面的第二十三kv存储设备,响应于收到覆盖写操作,在排序表以覆盖写操作所指示的第二键为索引的条目中记录指示第二值地址表的指针,第二值地址表中仅记录了单一节点,第二值地址表中记录的节点指示了覆盖写所对应的值的地址。
37.根据本技术的第一方面的第二十三kv存储设备,提供了根据本技术第一方面的第二十四kv存储设备,在排序表中之前记录的同第二键对应的值地址表被丢弃,被丢弃的值地址表中的各节点所记录的值被丢弃。
38.根据本技术的第一方面的第十八至第二十四kv存储设备之一,提供了根据本技术第一方面的第二十五kv存储设备,替换写操作指示了第三键、第三扩展键与第三值。
39.根据本技术的第一方面的第二十五kv存储设备,提供了根据本技术第一方面的第二十六kv存储设备,响应于收到替换写操作,在排序表中查找由第三键所指示的第三条目。
40.根据本技术的第一方面的第二十五或第二十六kv存储设备,提供了根据本技术第一方面的第二十七kv存储设备,在第三条目所指示的值地址表中,查找具有第三扩展键的节点,将找到的具有第三扩展键的节点的值地址更新为指示替换写操作所写入的第三值的地址。
41.根据本技术的第一方面的第二十七kv存储设备,提供了根据本技术第一方面的第二十八kv存储设备,还更新找到的具有第三扩展键的节点中记录的第三值的长度。
42.根据本技术的第一方面的第十八至第二十八kv存储设备之一,提供了根据本技术第一方面的第二十九kv存储设备,响应于收到删除操作,在排序表查找由第四键所指示的第四条目,其中所述删除操作指示第四键;将第四条目所指示的值地址表更新为空,以指示不存在同第四键对应的值地址表。
43.根据本技术的第一方面的第二十九kv存储设备,提供了根据本技术第一方面的第三十kv存储设备,在第四条目指示了值地址表,并在指示了值地址表的第四条目中指示值地址表中不存在任何有效节点。
44.根据本技术的第一方面的第十八至第二十八kv存储设备之一,提供了根据本技术第一方面的第三十一kv存储设备,删除操作指示了第五键与第五扩展键。
45.根据本技术的第一方面的第三十一kv存储设备,提供了根据本技术第一方面的第三十二kv存储设备,响应于收到删除操作,在排序表查找由第五键所指示的第五条目,在第五条目所指示的值地址表中,查找具有第五扩展键的节点,在第五条目所指示的值地址表中删除具有第五扩展键的节点。
46.根据本技术的第一方面的第一至第三十二kv存储设备之一,提供了根据本技术第一方面的第三十三kv存储设备,排序表为b 树结构,b 树的节点包括根节点、中间节点和叶节点。
47.根据本技术的第一方面的第三十三kv存储设备,提供了根据本技术第一方面的第三十四kv存储设备,根节点、中间节点与叶节点的每个包括多个键与指针对,其中指针指示
子树。
48.根据本技术的第一方面的第三十三或第三十四kv存储设备,提供了根据本技术第一方面的第三十五kv存储设备,根节点和中间节点内的多个键与指针对相邻地存储。
49.根据本技术的第一方面的第三十三至第三十五kv存储设备之一,提供了根据本技术第一方面的第三十六kv存储设备,根节点与中间节点的每个中的多个键与指针对,按照键的大小排序。
50.根据本技术的第一方面的第三十三至第三十六kv存储设备之一,提供了根据本技术第一方面的第三十七kv存储设备,每个键与指针对中的键是指针所示的子树的键的最小值,并且大于相邻的前一指针对的指针所示的子树的键的最大值或相邻的前一节点的所指示的子树的任何键。
51.根据本技术的第一方面的第三十三至第三十七kv存储设备之一,提供了根据本技术第一方面的第三十八kv存储设备,b 树的有n棵子树的节点中包括n个键,n为自然数。
52.根据本技术的第一方面的第三十三至第三十八kv存储设备之一,提供了根据本技术第一方面的第三十九kv存储设备,叶节点中记录了一个或多个排序表条目。
53.根据本技术的第一方面的第三十三至第三十九kv存储设备之一,提供了根据本技术第一方面的第四十kv存储设备,叶节点还包括指示与该叶节点相邻的叶节点的指针。
54.根据本技术的第一方面的第三十三至第四十kv存储设备之一,提供了根据本技术第一方面的第四十一kv存储设备,叶节点中的多个排序表条目,按照键的大小排序。
55.根据本技术的第一方面的第三十三至第四十一kv存储设备之一,提供了根据本技术第一方面的第四十二kv存储设备,b 树的所有叶节点所记录的所有排序表条目,是kv存储设备的排序表的所有条目。
56.根据本技术的第一方面的第三十三至第四十二kv存储设备之一,提供了根据本技术第一方面的第四十三kv存储设备,响应于被访问,kv存储设备根据被访问的键,遍历b 树以找到记录了该被访问的键的叶节点。
57.根据本技术的第一方面的第三十三至第四十三kv存储设备之一,提供了根据本技术第一方面的第四十四kv存储设备,包括用于遍历b 树的加速器。
58.根据本技术的第一方面的第四十四kv存储设备,提供了根据本技术第一方面的第四十五kv存储设备,加速器包括数据访问模块、b 树遍历模块与叶节点搜索模块。
59.根据本技术的第一方面的第四十五kv存储设备,提供了根据本技术第一方面的第四十六kv存储设备,数据访问模块用于根据与待访问的键对应的指针从存储器中获取b 树的节点。
60.根据本技术的第一方面的第四十五或第四十六kv存储设备,提供了根据本技术第一方面的第四十七kv存储设备,b 树遍历模块根据待访问的键访问b 树的根节点或中间节点,并确定下一个待遍历的节点。
61.根据本技术的第一方面的第四十五至第四十七kv存储设备之一,提供了根据本技术第一方面的第四十八kv存储设备,b 树遍历模块包括节点缓存。
62.根据本技术的第一方面的第四十五至第四十八kv存储设备之一,提供了根据本技术第一方面的第四十九kv存储设备,叶节点搜索模块根据待访问的键搜索叶节点,以得到同待访问的键对应的值地址表。
63.根据本技术的第一方面的第四十四至第四十九kv存储设备之一,提供了根据本技术第一方面的第五十kv存储设备,为遍历b 树,向加速器提供b 树的第一节点指针与待访问的第一键,其中第一节点指针指示b 树的第一节点;b 树遍历模块指示数据访问模块读取b 树的第一节点,数据访问模块读取b 树的第一节点;数据访问模块将读取的b 树的第一节点提供给b 树遍历模块;b 树遍历模块比较待访问的第一键与b 树的第一节点的“键

指针”对索引所指示的“键

指针”对的第二键,指示数据访问模块读取b 树的第二节点;数据访问模块将读取的叶节点提供给叶节点搜索模块。
64.根据本技术的第一方面的第五十kv存储设备,提供了根据本技术第一方面的第五十一kv存储设备,b 树遍历模块为存储在节点缓存的节点初始化第二索引,使第二索引指向存储在节点缓存的节点中的多个排序的“键

指针”对的第一个。
65.根据本技术的第一方面的第五十或第五十一kv存储设备,提供了根据本技术第一方面的第五十二kv存储设备,若第一键大于第二键,且第二索引指示的是当前节点的最后一个“键

指针”对,b 树遍历模块获取第二索引对应的“键

指针”对的第二指针,若第二指针指示叶节点,根据第二指针指示数据访问模块读取第二索引对应的“键

指针”对指示的叶节点。
66.根据本技术的第一方面的第五十二kv存储设备,提供了根据本技术第一方面的第五十三kv存储设备,数据访问模块将读取的叶节点提供给叶节点搜索模块。
67.根据本技术的第一方面的第五十三kv存储设备,提供了根据本技术第一方面的第五十四kv存储设备,叶节点搜索模块比较待查询的第一键与获取的叶节点中的第三键,并输出具有同第一键相同的第三键的排序表条目或其中的值地址列表。
68.根据本技术的第一方面的第五十三或第五十四kv存储设备,提供了根据本技术第一方面的第五十五kv存储设备,若在叶节点中找不到同具有第一键相同的第三键的排序表条目,叶节点搜索模块指示第一键查询失败。
69.根据本技术的第一方面的第五十二至第五十五kv存储设备之一,提供了根据本技术第一方面的第五十六kv存储设备,若b 树遍历模块获取第二索引对应的“键

指针”对的第二指针指示的是中间节点,则根据第二指针指示数据访问模块读取第二索引对应的“键

指针”对的第二指针指示的中间节点。
70.根据本技术的第一方面的第五十六kv存储设备,提供了根据本技术第一方面的第五十七kv存储设备,数据访问模块读取中间节点,数据访问模块将读取的中间节点提供给b 树遍历模块。
71.根据本技术的第一方面的第五十六kv存储设备,提供了根据本技术第一方面的第五十八kv存储设备,b 树遍历模块在节点缓存中存储所接收的中间节点。
72.根据本技术的第一方面的第五十六至第五十八kv存储设备,提供了根据本技术第一方面的第五十九kv存储设备,b 树遍历模块为新缓存的中间节点初始化第二索引,使之指向节点中的多个排序的“键

指针”对的第一个。
73.根据本技术的第一方面的第五十九kv存储设备,提供了根据本技术第一方面的第六十kv存储设备,若第一键大于第二键,且第二索引指示的不是当前节点的最后一个“键

指针”对,b 树遍历模块更新第二索引以获取当前节点的排序在后的下一个“键

指针”对。
74.根据本技术的第一方面的第五十一至第六十kv存储设备之一,提供了根据本技术
第一方面的第六十一kv存储设备,b 树遍历模块若识别出第一键等于第二键,b 树遍历模块获取第二索引对应的“键

指针”对的第二指针。
75.根据本技术的第一方面的第六十或第六十一kv存储设备,提供了根据本技术第一方面的第六十二kv存储设备,若该指针指示叶节点,并根据指针指示数据访问模块读取前索引对应的“键

指针”对指示的叶节点。
76.根据本技术的第一方面的第五十一至第六十二kv存储设备之一,提供了根据本技术第一方面的第六十三kv存储设备,若识别出第一键小于第二键,且第二索引指示的不是当前节点的首个“键

指针”对时,将第二索引更新为指示当前“键

指针”对的相邻的前一个“键

指针”对。
77.根据本技术的第一方面的第六十三kv存储设备,提供了根据本技术第一方面的第六十四kv存储设备,若第二索引指示的是当前节点的第一个“键

指针”对,则指示第一键查询失败。
78.根据本技术的第一方面的第四十五至六十四kv存储设备之一,提供了根据本技术第一方面的第六十五kv存储设备,b 树遍历模块与叶节点搜索模块维护多个上下文,每个上下文用于一次b 树查询。
79.根据本技术的第一方面的第六十五kv存储设备,提供了根据本技术第一方面的第六十六kv存储设备,上下文包括缓存的节点或叶节点,以及节点的“键

指针”对索引。
附图说明
80.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
81.图1a是固态存储设备的框图;
82.图1b是现有技术的固态存储设备的地址转换系统的示意图;
83.图2是根据本技术实施例的kv存储设备的示意图;
84.图3是根据本技术又一实施例的排序表的数据组织;
85.图4是根据本技术实施例的追加操作的示意图;
86.图5是根据本技术实施例的覆盖写操作的示意图;
87.图6是根据本技术实施例的替换写操作的示意图;
88.图7a是根据本技术实施例的删除操作的示意图;
89.图7b是根据本技术又一实施例的删除操作的示意图;
90.图8是根据本技术依然又一实施例的排序表的数据组织;
91.图9是根据本技术依然又一实施例的遍历b 树的加速器的框图;
92.图10是根据图9实施例的b 树遍历模块通过遍历b 树而搜索键(k)的流程图。
具体实施方式
93.下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明
中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
94.实施例一
95.图2是根据本技术实施例的kv存储设备的示意图。kv存储设备响应基于键的访问请求。
96.根据图2所示的实施例,kv存储设备维护排序表,排序表包括多个条目,每个条目记录了键与值地址列表的对应关系。排序表的多个条目按键排序。值地址列表记录了0个到多个同键对应的值的地址,根据每个地址可访问kv存储设备的nvm存储介质。例如,每个地址是逻辑地址,kv存储设备还维护ftl表,其中记录了逻辑地址到物理地址的映射关系。排序表的值地址表的地址也可以是nvm存储介质的物理地址。值地址表可以采用数组、链表、哈希表、树等多种数据组织方式,在排序表的条目中同键相关联地记录了例如值地址表的指针或索引。
97.可选地,在kv存储设备中通过哈希表记录键与值地址表的对应关系。
98.根据图2的实施例的kv存储设备,同kv存储设备耦合的例如主机,通过键访问kv存储设备。例如,主机向kv存储设备发出的读操作(get(key))中指示要读取的key为键。kv存储设备接收键,用键查询排序表得到值地址列表,根据值地址列表中的各个地址获取数据,作为对读操作(get(key))的响应。
99.实施例二
100.图3是根据本技术又一实施例的排序表的数据组织。
101.图3的实施例的排序表展示了4个条目,分别具有键1、键2、键3与键4作为索引,各条目中同键相关联地记录了指向链表形式的值地址表的指针。
102.指针1所指示的值地址表记录了两个节点,分别指示值1的存储地址与值1

1的存储地址,值地址表的每个节点还记录了所对应的值的长度或大小(例如以字节为单位)。值地址表的每个节点还记录指向属于同一值地址表的下一个节点的指针(地址),或者指示值地址的结束标志(该节点是链表的尾节点)。指针2指示的值地址表有1个节点,指针3与指针4指示的值地址表各有2个节点。可以理解的,值地址表可具有任意数量的节点。
103.依然可选地,值地址表的每个节点(未示出)还记录扩展键(exkey),扩展键用于唯一标识属于同一值地址表的多个节点。例如,用值地址表的节点对应的值的哈希值或依据指定校验算法得到的校验值作为扩展键。依然可选地,在nvm存储介质中同值相关联地存储扩展键。
104.可选地,排序表与值地址表被设置在内存中,以便于低延迟地从排序表与值地址表获取数据。依然可选地,排序表与值地址表的部分或全部被存储在nvm存储介质中,以节省对存储设备的内存占用。
105.根据本技术实施例的kv存储设备,除了向主机提供同现有技术的kv存储设备类似的操作接口(例如,读操作(get(key))、写操作(put(key,value))和/或删除操作(delete(key)),还提供追加操作(append(key,value))、覆盖写操作(overwrite(key,value))、替换写操作(replace(key,exkey,value))。
106.图4是根据本技术实施例的追加操作(append(key,value))的示意图。
107.如图4所示,响应于收到追加操作(append(key,value)),根据本技术实施例的kv
存储设备将值(value)的地址追加记录在同键(key)对应的值地址表中。例如,参看图4,同键(key)对应的值地址表中已经有1个节点,则在该值地址表中增加一个节点,该节点指示了指向追加操作写入kv存储设备的值的地址。若排序表中不存在以该键(key)为索引的条目,则以同写操作相同的方式处理该追加操作。包括在排序表中添加以键(key)为索引的条目,在条目中记录指示值地址表的指针,在值地址表中添加一个节点,节点中记录了存储追加操作所对应的值的地址。
108.图5是根据本技术实施例的覆盖写操作(overwrite(key,value))的示意图。
109.如图5所示,响应于收到覆盖写操作(overwrite(key,value)),根据本技术实施例的kv存储设备在排序表以覆盖写操作所指示的键(key)为索引的条目中记录指示值地址表的指针,该值地址表中仅记录了单一节点,该节点指示了覆盖写所对应的值的地址。而在排序表中之前记录的同该键(key)对应的值地址表被丢弃,其中各节点所记录的值被丢弃。
110.图6是根据本技术实施例的替换写操作(replace(key,exkey,value))的示意图。
111.如图6所示,替换写操作(replace(key,exkey,value))指示了键(key)、扩展键(exkey)与值。响应于收到替换写操作,根据本技术实施例的kv存储设备在排序表查找由键(key)所指示的条目,在条目所指示的值地址表中,查找具有扩展键(exkey)的节点,将找到的节点的值地址更新为指示替换写操作所写入的值的地址。可选地,还更新找到的节点中记录的值的长度。
112.图7a是根据本技术实施例的删除操作(delete(key))的示意图。
113.如图7a所示,响应于收到删除操作(delete(key)),根据本技术实施例的kv存储设备在排序表查找由键(key)所指示的条目,将该条目所指示的值地址表更新为空,以指示不存在同该键(key)对应的值地址表。可选地,在该条目指示了值地址表,并在该值地址表的第一个条目中指示值地址表中不存在任何有效节点。
114.图7b是根据本技术又一实施例的删除操作(delete(key,exkey))的示意图。
115.如图7b所示,删除操作(delete(key,exkey))指示了键(key)与扩展键(exkey)。响应于收到删除操作,根据本技术实施例的kv存储设备在排序表查找由键(key)所指示的条目,在条目所指示的值地址表中,查找具有扩展键(exkey)的节点,在值地址表中删除具有扩展键(exkey)的节点。可选地,还调整值地址表,使被删除节点之前的节点的指针指向被删除节点之后的节点。
116.实施例三
117.图8是根据本技术依然又一实施例的排序表的数据组织。
118.图8展示的排序表被组织为b 树结构,包括根节点810、中间节点(820、822与824)与叶节点(830、832、834、836、838
……
)。根节点、中间节点与叶节点的每个包括多个键与指针对。节点内的多个键与指针对相邻地存储。以根节点810为例,其中“5”为键,“p1”为指针,指针“p1”指示了中间节点820。“键5”为由指针“p1”所指示的子树中的最小键。在根节点810中,与“5

p1”对相邻的“28

p2”对中,“28”为键,而“p2”指向另一中间节点822(作为另一子树的根节点),键“28”大于由中间节点820(与中间节点822相邻,并且排序在前)所指示的子树的任何键。对于中间节点(例如822),其中记录的一个键与指针对,例如“35

p8”对,其键“35”是指针“p8”所指示的子树的键的最小值,而在中间节点822中与“35

p8”对相邻且排序在后的“56

p9”对的键“56”是指针“p9”所指示的子树的键的最小值,并且键“56”大于指针

p8”所指示的子树的键的最大值。根节点与中间节点的每个中的多个键与指针对,按照键的大小排序。
119.b 树的有n棵子树的节点中包括n个键,n为自然数。没有指向任何子树的节点为叶节点。
120.叶节点中记录了kv存储设备的一个或多个排序表条目。排序表条目包括键与指示值地址列表的指针(未示出)。图8中,叶节点830记录了3个排序表条目,分别由键k1(5)、k2(8)与k3(9)所指示,其中括号内的数字为键本身,括号外的数字指示键的序号。可选地,叶节点还包括指针q,指示与该叶节点相邻的叶节点的地址。叶节点中的多个排序表条目,按照键的大小排序。b 树的所有叶节点所记录的所有排序表条目,是kv存储设备的排序表的所有条目。
121.响应于被访问,kv存储设备根据被访问的键,遍历b 树以找到记录了该键的叶节点。
122.图9是根据本技术依然又一实施例的遍历b 树的加速器的框图。图10是根据图9实施例的b 树遍历模块通过遍历b 树而搜索键(k)的流程图。
123.加速器包括数据访问模块、b 树遍历模块与叶节点搜索模块。数据访问模块用于根据指针从存储器中获取b 树的节点(根节点、中间节点和/或叶节点)。加速器的b 树遍历模块,根据待访问的键访问b 树的根节点或中间节点,并确定下一个待遍历的节点。叶节点搜索模块根据待访问的键搜索叶节点,以得到同待访问的值对应的值地址表。
124.为遍历b 树,向加速器提供b 树的根节点指针与待查询的键(k)(1010)(由

所指示)。b 树遍历模块指示数据访问模块读取根节点。数据访问模块读取根节点(由

所指示)。数据访问模块将读取的根节点提供给b 树遍历模块(由

所指示)。b 树遍历模块在节点缓存中存储所接收的根节点。
125.对于新写入节点缓存的节点,b 树遍历模块为其初始化“键

指针”对索引,使之指向节点中的多个排序的“键

指针”对的第一个。
126.b 树遍历模块比较待查询的键(k)与“键

指针”对索引所指示的“键

指针”对的键(记为kt)。读取当前索引指示的“键(kt)

指针”对(1020)。若键(k)大于键(kt)(1100)且索引指示的是当前节点的最后一个“键

指针”对(1200),b 树遍历模块获取当前索引对应的“键

指针”对的指针。若该指针指示叶节点(1300),根据指针指示数据访问模块读取当前索引对应的“键

指针”对指示的叶节点(1030)(由

所指示)。数据访问模块将读取的叶节点提供给叶节点搜索模块(由

所指示)。叶节点搜索模块比较待查询的键(k)与获取的叶节点中的键(记为kl),并输出具有同键(k)相同的键(kl)的排序表条目(或其中的值地址列表)。若在叶节点中找不到同具有键(k)相同的键(kl)的排序表条目,叶节点搜索模块指示键(k)查询失败,其意味着在b 树(排序表)中不存在同键(k)对应的条目。若b 树遍历模块获取当前索引对应的“键

指针”对的指针指示的是中间节点,则根据该指针指示数据访问模块读取当前索引对应的“键

指针”对的指针指示的中间节点。数据访问模块读取中间节点(由

所指示)。数据访问模块将读取的中间节点提供给b 树遍历模块(由

所指示)。b 树遍历模块在节点缓存中存储所接收的中间节点。b 树遍历模块为新缓存的中间节点初始化“键

指针”对索引,使之指向节点中的多个排序的“键

指针”对的第一个。
127.下面继续描述b 树遍历模块。若键(k)大于键(kt)且索引指示的不是当前节点的
最后一个“键

指针”对,b 树遍历模块更新索引以获取当前节点的排序在后的下一个“键

指针”对(1050)。并继续比较键(k)与更新后的索引所指示的“键

指针”对的键(记为kt)。
128.b 树遍历模块若识别出键(k)等于键(kt)(1400),b 树遍历模块获取当前索引对应的“键

指针”对的指针。若该指针指示叶节点(1300),并根据指针指示数据访问模块读取前索引对应的“键

指针”对指示的叶节点(1030)(由

所指示)。数据访问模块将读取的叶节点提供给叶节点搜索模块(由

所指示)。叶节点搜索模块比较待查询的键(k)与获取的叶节点中的键(记为kl),并输出具有同键(k)相同的键(kl)的排序表条目(或其中的值地址列表)。若b 树遍历模块获取当前索引对应的“键

指针”对的指针指示的是中间节点,则根据该指针指示数据访问模块读取当前索引对应的“键

指针”对的指针指示的中间节点(1040)。数据访问模块读取的中间节点(由

所指示)。数据访问模块将读取的中间节点提供给b 树遍历模块(由

所指示)。b 树遍历模块在节点缓存中存储所接收的中间节点。b 树遍历模块为新缓存的中间节点初始化“键

指针”对索引,使之指向节点中的多个排序的“键

指针”对的第一个。
129.b 树遍历模块若识别出键(k)小于键(kt)(1500),且当前索引指示的不是当前节点的首个“键

指针”对时(1600),将索引更新为指示当前“键

指针”对的相邻的前一个“键

指针”对(1060),b 树遍历模块获取当前索引对应的“键

指针”对的指针,若该指针指示叶节点,根据指针指示数据访问模块读取当前索引对应的“键

指针”对指示的叶节点(由

所指示)。数据访问模块将读取的叶节点提供给叶节点搜索模块(由

所指示)。叶节点搜索模块比较待查询的键(k)与获取的叶节点中的键(记为kl),并输出具有同键(k)相同的键(kl)的排序表条目(或其中的值地址列表)。若b 树遍历模块获取当前索引对应的“键

指针”对的指针指示的是中间节点,则根据该指针指示数据访问模块读取当前索引对应的“键

指针”对的指针指示的中间节点。数据访问模块读取的中间节点(由

所指示)。数据访问模块将读取的中间节点提供给b 树遍历模块(由

所指示)。b 树遍历模块在节点缓存中存储所接收的中间节点。b 树遍历模块为新缓存的中间节点初始化“键

指针”对索引,使之指向节点中的多个排序的“键

指针”对的第一个。
130.b 树遍历模块若识别出键(k)小于键(kt),若当前索引指示的是当前节点的第一个“键

指针”对,则指示键(k)查询失败(1070),其意味着在b 树(排序表)中不存在同键(k)对应的条目。
131.可选地,b 树遍历模块与叶节点搜索模块维护多个上下文,每个上下文用于一次b 树查询。上下文包括缓存的节点或叶节点,以及节点的“键

指针”对索引。从而加速器能够并发处理多个b 树查询。
132.下面以图8所示的b 树,待搜索的键(26)为例,描述图9的加速器根据图10所示的流程图的搜索过程。
133.(1)根据b 树的根节点指针获取b 树的根节点810(也参看图8),读取的根节点被缓存在b 树遍历模块的节点缓存中。表1展示了节点缓存中的根节点。索引被初始化,以指示根节点的第一个“键

指针”对(表1中的“5

p1”);
134.表1
135.52865p1p2p3
136.(2)比较键(k=26)与当前索引指示的“键

指针”对的键(kt=5),k>kt;
137.(3)当前索引指示的“键

指针”对(“5

p1”)不是当前节点(根节点810)的最后“键

指针”对;
138.(4)更新当前索引,指向下一“键

指针”对(“28

p2”);
139.(5)根据当前索引得到键kt=28,比较k(=26)与kt,k<kt;
140.(6)当前索引指示的“键

指针”不是当前节点(根节点810)的首个“键

指针”对;
141.(7)更新当前索引,指示上一个“键

指针”对(“5

p1”);
142.(8)当前索引指示的“键

指针”对(“5

p1”)的指针(p1)指示的非叶节点;
143.(9)读取(p1)指示的b 树节点820;表2展示了节点缓存中的节点820。索引被初始化,以指示节点820的第一个“键

指针”对(表2中的“5

p4”);
144.表2
145.51020p4p5p6
146.(10)比较键(k=26)与当前索引指示的“键

指针”对的键(kt=5),k>kt;
147.(11)当前索引指示的“键

指针”对(“5

p4)不是当前节点(节点820)的最后“键

指针”对;
148.(12)更新当前索引,指向下一“键

指针”对(“10

p5”);
149.(13)比较键(k=26)与当前索引指示的“键

指针”对的键(kt=10),k>kt;
150.(14)当前索引指示的“键

指针”对(“10

p5)不是当前节点(节点820)的最后“键

指针”对;
151.(15)更新当前索引,指向下一“键

指针”对(“20

p6”);
152.(16)比较键(k=26)与当前索引指示的“键

指针”对的键(kt=20),k>kt;
153.(17)当前索引指示的“键

指针”对(“20

p6)是当前节点(节点820)的最后“键

指针”对;
154.(18)当前索引指示的“键

指针”对(“20

p6”)的指针(p1)指示的是叶节点830;
155.(19)获取叶节点830,遍历叶节点830,得到键k3(26)同待搜索的键(26)相同,从键k3所在的排序表条目获取值地址列表。
156.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜