CN109977111A - 采用基于散列和基于树的键-值数据结构的数据管理系统 - Google Patents
采用基于散列和基于树的键-值数据结构的数据管理系统 Download PDFInfo
- Publication number
- CN109977111A CN109977111A CN201811433028.9A CN201811433028A CN109977111A CN 109977111 A CN109977111 A CN 109977111A CN 201811433028 A CN201811433028 A CN 201811433028A CN 109977111 A CN109977111 A CN 109977111A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- data structure
- inquiry
- index
- 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
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/2255—Hash tables
-
- 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/21—Design, administration or maintenance of databases
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
所公开的是一种采用基于散列和基于树的键‑值数据结构的数据管理系统,所述数据管理系统被配置成提供键‑值数据结构架构以供存储设备使用。所述键‑值数据结构包括具有基于树的索引的逻辑树以及具有基于散列的索引的散列表。对于“扫描”(或范围查询)操作,数据管理系统扫描基于树的索引来确定哪些键存在于基于树的索引中的两个搜索键之间。对于“得到”(例如值请求)操作,数据管理系统将散列函数应用到所提供的键来确定散列表中的索引,通过所述索引来检索与所提供的键相对应的值。其它操作(例如“放置”、“更新”、“删除”)可以包括更新基于树的索引与基于散列的索引二者。逻辑树存储键,并且在每一个键的情况下存储零字节大小的值,用以限制逻辑树的大小。
Description
技术领域
本公开内容涉及用于改善数据结构的搜索和访问速度的技术。
背景技术
常规的键-值数据结构提供快速读取/写入能力或快速扫描能力,但是不提供这二者。例如,基于散列的键-值系统比基于树的键-值系统更快地读取和写入数据,然而,基于散列的键-值系统低效地(相对缓慢)支持扫描操作。基于散列的键-值系统在针对特定数据(例如键)进行扫描方面是低效的,因为散列表索引(即散列键)不通过键被分类,并且代替地通过键的散列值来被分类。因此,基于散列的键-值系统必须扫描其整个索引空间来支持扫描操作,并且整个索引空间的扫描导致极低的扫描吞吐量。
附图说明
所要求保护的主题的特征和优点从与其一致的实施例的以下详细描述中将是显而易见的,所述描述应当参考附图来被考虑,其中:
图1图示了数据管理系统的功能框图,所述数据管理系统包括与本公开内容的若干实施例一致的键-值数据结构;
图2图示了与本公开内容的若干实施例一致的数据管理系统;
图3是用于与本公开内容的若干实施例一致的键-值数据结构架构的数据管理逻辑的操作的过程的流程图;以及
图4是用于与本公开内容的若干实施例一致的键-值数据结构架构的数据管理逻辑的操作的过程的流程图图解。
尽管以下详细描述将参考说明性实施例而进行,但是对于本领域技术人员而言,许多可替换方案、修改及其变型将是显而易见的。
具体实施方式
在本文中公开了针对一种数据管理系统的系统、装置和/或方法,所述数据管理系统被配置成提供键-值数据结构架构。所述键-值数据结构包括两个数据结构。键-值数据结构的所述两个数据结构包括具有基于树的索引的逻辑树,并且包括具有基于散列的索引的散列表。对于“扫描”(或范围查询)操作,数据管理系统扫描基于树的索引来确定哪些键(如果有任何的话)存在于基于树的索引中的两个搜索键之间。对于“得到”(例如值请求)操作,数据管理系统将散列函数应用到所提供的键来确定散列表中的索引,通过所述索引来检索与所提供的键相对应的值。其它操作(例如“放置”、“更新”、“删除”)可以包括更新基于树的索引与基于散列的索引二者。逻辑树存储键并且存储空值、零字节大小的值、或在大小上小于4-10字节的值作为在每一个键的情况下的值,使得表的大小大体上受限于键的大小以及键的关系。键-值数据结构可以被用作数据库或文件系统。
所公开的数据管理系统包括键-值数据结构架构,所述键-值数据结构架构是基于逻辑树(例如包括树索引)以及基于散列表(例如包括基于散列的索引)的数据结构的混合。所公开的键-值数据结构架构相比现有数据管理系统、框架和/或架构提供许多益处。所公开的数据管理系统的一个优点是可以用恒定的时间(O(1))从键-值数据结构中检索值,因为利用散列表来执行值检索。所公开的数据管理系统的另一优点是能够快速地扫描键的范围,因为通过使用逻辑树来执行范围查询(即“扫描”操作)。在一个实现方式中,通过将键-值数据结构的至少部分维护在易失性存储器中,并且通过规律地将备份拷贝存储到非易失性存储器,所公开的数据管理系统提供比其它技术更快的操作。所公开的数据管理系统支持对基于散列的索引以及基于树的索引的同步和异步更新二者。在一个实现方式中,所公开的数据管理系统可以整个在易失性存储器中运行,或可以在非易失性存储器中运行,并且不需要单独地从易失性存储器中操作基于树的索引。键-值数据结构的所公开的逻辑树可以通过使用多个逻辑树结构(例如B树、B+树、Bɛ树、日志结构合并(“LSM”)树等等)中的任一个来被实现。与现有基于LSM的数据结构相比,所公开的数据管理系统提供更低的读取放大(“RA”)和写入放大(“WA”)二者。因而,如与现有基于LSM的数据结构相比,所公开的数据管理系统可以导致更好的总体系统性能、耐久性以及成本。如与单独的散列表成对照,所公开的键-值数据结构和数据管理系统支持基于键的扫描。这些和其它优点使得所公开的数据管理系统区别于传统或现有的数据结构架构。
图1图示了数据管理系统100的功能框图,所述数据管理系统100包括与本公开内容的若干实施例一致的键-值(“KV”)数据结构。数据管理系统100包括主机设备102和存储设备104。存储设备104可以耦合到主机设备102和/或被包括在主机设备102中。主机设备102被配置成将命令106提供到存储设备104。所述命令可以包括但不限于“放置”(键,值)、“得到”(键)、“删除”(键,值)、“更新”(键,值)、以及“扫描”(键1,键2)。根据一个实施例,“放置”命令将键-值对写入到KV数据结构,“得到”命令从KV数据结构读取与键相关联的值,“删除”命令从KV数据结构中删除键或键-值对,“更新”命令更新与KV数据结构中的键相关联的值,并且“扫描”命令在KV数据结构内读取/检索具有在第一键(例如键1)与第二键(例如键2)之间的值的键。每个键(例如Bob、Alice、Fred等等)相关联于对应的值(例如波斯顿、马萨诸塞州;奥兰多、佛罗里达;圣地亚哥、加利福尼亚,或文件1位置;文件2位置;文件3位置等等)。命令106可以被发送到存储设备104,其经由主机接口,通过使用标准总线命令,例如SCSI(小型计算机系统接口)、SAS(串行附连的SCSI)、PCIe(快速外围组件互连)、NVMe(快速非易失性存储器)、SATA(串行ATA(高级技术附件))等等。在传输之前,命令106可以被变换或转化成一个或多个总线命令或协议。根据一个实施例,作为示例,对于NVMe协议,“得到”命令可以被转化成NVMe读取命令,并且“放置”命令可以被转化成NVMe写入命令。可以在主机设备102与存储设备104之间传输数据108。数据108可以包括一个或多个键-值对。
主机设备102可以包括但不限于:移动电话,所述移动电话包括但不限于智能电话(例如iPhone®、基于Android®的电话、 Blackberry®、基于Symbian®的电话、基于Palm®的电话等等);可穿戴设备(例如可穿戴计算机、“智能”手表、智能眼镜、智能衣着等等)和/或系统;物联网(IoT)联网的设备,包括但不限于传感器系统(例如环境的、定位、运动等等)和/或传感器网络(有线和/或无线的);计算系统(例如服务器、工作站计算机、台式计算机、膝上型计算机、平板计算机(例如iPad®、GalaxyTab®等等)、超便携计算机、超移动计算机、上网本计算机和/或次笔记本型计算机;等等。主机设备102包括主机处理器电路110、主机存储器电路112和主机通信电路114。例如,主机处理器电路110可以对应于单核或多核通用处理器,诸如Intel®公司提供的那些等等。主机设备102可以此外包括操作系统(OS)116以及一个或多个应用,例如应用118。主机设备102可以此外包括数据管理逻辑120。数据管理逻辑120可以耦合到OS 116和/或应用118和/或被包括在OS 116中和/或应用118中。在一个非限制性示例中,数据管理逻辑120可以包括键-值应用编程接口(API),并且可以由OS116和/或应用118用于传输命令106和/或数据108。
存储设备104可以包括但不限于固态驱动器(SSD)、硬盘驱动器(HDD)、网络附连的存储(NAS)系统、存储区域网络(SAN)和/或独立盘冗余阵列(RAID)系统等等。存储设备104包括设备处理器电路122和非易失性存储器(NVM)电路126。存储设备104可以此外包括设备存储逻辑128。设备存储逻辑128可以包括数据管理逻辑120的全部或部分。设备处理器电路122和设备存储逻辑128可以一起构成用于存储设备104的存储器控制器电路。存储设备104可以此外包括设备通信接口电路130。设备通信接口电路130可以包括例如主机接口。存储设备104可以此外包括易失性缓冲器电路132。易失性缓冲器电路132可以包括易失性随机访问存储器,例如动态随机访问存储器(DRAM)和/或静态随机访问存储器(SRAM)等等。存储器设备通常是指易失性存储器技术。易失性存储器是如果中断给设备的电力则其状态(并且因此存储在其中的数据)是不确定的存储器。非易失性存储器是指即使中断给设备的电力其状态也是确定的存储器。动态易失性存储器需要刷新被存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机访问存储器)、或某种变体,诸如同步DRAM(SDRAM)。如本文中所述的存储器子系统可以与多种存储器技术兼容,诸如DDR3(双数据速率版本3,其由JEDEC(联合电子设备工程会议)于2007年6月27日最初发布),DDR4(DDR版本4,由JEDEC于2012年9月公布的初始规范),DDR4E(DDR版本4),LPDDR3(低功率DDR版本3,JESD209-3B,2013年8月通过JEDEC),LPDDR4(LPDDR版本4,JESD209-4,最初由JEDEC于2014年8月公布),WIO2(宽输入/输出版本2,JESD229-2,最初由JEDEC于2014年8月公布),HBM(高带宽存储器,JESD325,最初由JEDEC于2013年10月公布),DDR5(DDR版本5,其当前在JEDEC的讨论中),LPDDR5(其当前在JEDEC的讨论中),HBM2(HBM版本2)、当前在JEDEC的讨论中,或其它存储器技术或存储器技术的组合,以及基于这样的规范的衍生物或扩展的技术。JEDEC标准可以在www(dot)jedec(dot)org.处可得到。
非易失性存储器电路126可以至少部分地被配置为非易失性缓冲器电路。非易失性存储器电路126的非易失性缓冲器电路部分可以包括字节可寻址的就地写入存储器以及其它未来类型的字节可寻址的就地写入存储器。非易失性缓冲器电路还可以包括未来世代的非易失性设备,诸如三维交叉点存储器设备,或其它字节可寻址的、就地写入的非易失性存储器设备。在一个实施例中,非易失性缓冲器电路可以是或可以包括使用硫族化物玻璃的存储器设备、多阈值层级NAND闪速存储器、NOR闪速存储器、单层级或多层级相变存储器(PCM)、电阻性存储器、纳米线存储器、铁电晶体管随机访问存储器(FeTRAM)、反铁电存储器、磁阻性随机访问存储器(MRAM)、并入了忆阻器技术的存储器、包括金属氧化物基底、氧空位基底的电阻性存储器、以及导电桥随机访问存储器(CB-RAM)、或自旋转移矩(STT)-MRAM、基于自旋电子学磁性结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、或者以上各项中任何的组合、或其它存储器。存储器设备可以是指管芯本身和/或是指经封装的存储器产品。
设备处理器电路122可以包括但不限于微控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)、复杂PLD等等。易失性缓冲器电路132可以被配置成存储KV数据结构136的全部或部分,如本文中所述。非易失性存储器电路126可以被配置成存储KV数据结构136的全部或部分。
非易失性存储器电路126包括如下存储介质:所述存储介质不需要电力来维持被存储在存储介质中的数据的状态。非易失性存储器电路126可以包括块可寻址的、读取-修改-写入型非易失性存储器。非易失性存储器电路126可以包括但不限于NAND闪速存储器(例如三层级单元(TLC)NAND或任何其它类型的NAND(例如单层级单元(SLC)、多层级单元(MLC)、四层级单元(QLC)等等))、NOR存储器、固态存储器(例如,平面或三维(3D)NAND闪速存储器或NOR闪速存储器)、使用硫族化物相变材料(例如硫族化物玻璃)的存储设备、字节可寻址的非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如铁电聚合物存储器)、字节可寻址的随机可访问的3D XPointTM存储器(或其它3D交叉点存储器架构)、铁电晶体管随机访问存储器(Fe-TRAM)、磁阻性随机访问存储器(MRAM)、相变存储器(PCM、PRAM)、电阻性存储器、铁电存储器(F-RAM、FeRAM)、自旋转移矩存储器(STT)、热辅助的交换存储器(TAS)、千足虫存储器、浮动结栅存储器(FJG RAM)、磁性隧道结(MTJ)存储器、电化学电池(ECM)存储器、二进制氧化物细丝单元存储器、界面交换存储器、电池支持的RAM、奥氏存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)等等。在一些实施例中,字节可寻址的随机可访问的3D XPointTM存储器可以包括无晶体管、可堆叠的交叉点架构,其中存储器单元位于字线和位线的交叉处,并且单独可寻址,并且其中位存储基于体电阻中的改变。
在操作中,主机设备102被配置成向/从存储设备104存储、更新、搜索和检索数据108。数据108可以包括键、值和/或键-值对,并且可以通过OS 116和/或应用118、经由数据管理逻辑120而被写入到存储设备104或从存储设备104读取。在一个示例中,数据108可以相关联于应用118的执行。在另一示例中,数据108可以相关联于OS 116的操作。OS 116和/或应用118可以被配置成为数据管理逻辑120提供如下指示:即存在要被存储在存储设备104中的数据。
存储设备104被配置成支持键-值(KV)接口,并且是对象设备。KV接口包括“放置”(键,值)、“得到”(键)、“删除”(键,值)、“更新”(键,值)、以及“扫描”(键1,键2)命令。“放置”(键,值)命令将值与键存储在存储设备104中。“得到”(键)命令发送键以便从存储设备104中检索与该键相关联的值。“删除”(键,值)命令从KV数据结构136中删除键与其对应的值(如果存在一个值的话)。“更新”(键,值)命令将与键相关联的值更新成利用命令传输的新值。“扫描”(键1,键2)命令请求被存储在KV数据结构136中的、在键1串与键2串之间的任何键(零个,一个,或更多)。键和值可以具有任意长度的串和/或数字,其由主机设备102、例如数据管理逻辑120指定。主机设备102可以经由协议扩展将这些命令发布给存储设备104,例如经由NVMe(快速非易失性存储器)或NVMe over Fabric扩展,或者可以通过使用现有协议来发布这些命令,所述现有协议诸如S3(亚马逊简单存储设备)、Swift(Swift通用编程语言)和/或Kinetic(Seagate Kinetic开放存储平台)。
在主机设备102与存储设备104之间的物理接口可以遵从一个或多个接口协议和/或与一个或多个接口协议相兼容,所述一个或多个接口协议包括但不限于PCIe(快速外围组件互连)、NVMe(快速非易失性存储器)、SCSI(小型计算机系统接口)、AHCI(高级主机控制器接口)、SATA(串行ATA(高级技术附件))和/或PATA(并行ATA)等等。易失性缓冲器电路132被配置成促进在主机设备102与存储设备104之间的数据传输。非易失性存储器电路126被配置成将数据108作为键和值而存储在KV数据结构136中。
KV数据结构136包括逻辑树138和散列表140,用于管理被存储在KV数据结构136中的数据108。逻辑树138以可分类的数据结构来维护键142,所述可分类的数据结构便于范围查询(例如数据扫描)。根据一个实施例,范围查询或“扫描”命令搜索逻辑树138用于得到在第一键(例如键1)与第二键(例如键2)之间的键,并且返回所述在第一键和第二键之间的键。逻辑树138的典型使用是存储值与键,其受逻辑树138管理。然而,根据本公开内容,在键142的情况下存储空值、零字节值、一些非继发性的值、无值、或大小被定成小于10字节的值。通过仅仅存储键142,逻辑树138占据存储设备104中的较少空间,而同时为与KV数据结构136相关联的所有键提供可分类的结构。由逻辑树138所采用的可分类的数据结构可以包括任何树索引结构,诸如但不限于B树、B+树、Bɛ树、LSM树等等。
散列表140维护键142以及与键142相关联的值144,二者被存储为键-值对146。在散列表140中、通过散列键索引148来对键-值对146编索引。如果从主机设备102到存储设备104的命令106是包括已知键的命令,则散列表140为键提供非常高效的值检索,因为键的散列值是对散列表140中的槽(slot)或桶(bucket)的索引。然而,由于散列表140的索引通过键142的散列值而被分类,所以散列表140与使用逻辑树138相比将会是用于扫描键范围(例如用于执行范围查询)的不太高效的工具。
逻辑树138与散列表140的组合使得KV数据结构136是如下的混合数据结构:所述混合数据结构除了快速范围查询(通过逻辑树138)之外还提供恒定阶、例如O(1)的数据检索(在已知键的情况下)。维护全键-值散列表以及全键-值逻辑树二者将会几乎使存储设备104内所消耗的空间量加倍。因此,如所讨论的,逻辑树138通过在没有值144的情况下存储键142而被限制大小,并且散列表140在键-值对146中包括键142与值144二者。
图2图示了可以在图1的数据管理系统100内操作的KV数据管理系统200。KV数据管理系统200包括数据管理应用、(图1的)数据管理逻辑120、以及图1的KV数据结构136的说明性简化示例。数据管理应用202可以是数据库应用、社交媒体应用,或管理大量数据(例如用于向数百、数千、或数百万用户提供服务)的多个应用中的任一个。数据管理应用202向数据管理逻辑120提供命令106和数据108。数据管理应用202可以从数据管理逻辑120接收数据108(例如在从KV数据结构136检索了数据106之后)。数据管理逻辑120包括数据管理引擎204并且可以包括KV数据结构136。
数据管理引擎204从数据管理应用202接收命令106,并且取决于所接收的命令,从/向数据管理应用202接收或提供数据108。数据管理引擎204处理命令106以确定如何与KV数据结构136交互。在数据管理引擎204内的操作208处,数据管理引擎204确定命令类型,用以确定如何更新或以其它方式维护KV数据结构136。如果例如命令类型是“得到”命令,则数据管理引擎204在KV数据结构136内的散列表210上执行数据检索操作。然而,如果命令类型是“扫描”命令,则数据管理引擎204执行逻辑树216的至少部分的搜索或扫描。显而易见地,如果命令是“得到”命令,则数据管理引擎204在散列表210上执行一个或多个操作,并且不在逻辑树216上执行操作。然而,如果命令是“扫描”命令,则数据管理引擎204在逻辑树216上、而不是散列表210上执行一个或多个操作。根据一个实施例,散列表210是数据管理逻辑120内和/或KV数据结构136内的基于散列的KV子系统。根据一个实施例,逻辑树216是数据管理逻辑120内和/或KV数据结构136内的基于树的KV子系统。
数据管理引擎204也响应于其它命令。数据管理引擎204与逻辑树216以及散列表210二者交互,以用于“放置”、“更新”和“删除”命令。数据管理引擎204或数据管理逻辑120的其它部分响应于“放置”、“更新”和“删除”命令可以同步或异步地更新逻辑树216和散列表210。对于同步更新,可以同时更新针对散列表210的基于散列的索引以及逻辑树216的基于树的索引二者。对于示例,在用于将KV对写入到KV数据结构136的“放置”命令期间,键的表示和值数据的表示二者都被写入到散列表210。对于逻辑树216,被存储在散列表210中的值不被写入到节点,然而,利用被写入到散列表210的新键来更新逻辑树216。这引起同步、基于树的索引更新,但是不劣化/更新已经被写入到KV数据结构136内的散列表210的现有值数据。该模式不引起数据不一致性问题,但是同时更新两个索引可能具有影响性能的可能性。对于异步更新,数据管理逻辑120在不同的时间、或偶尔在处理便利时异步地更新基于散列的索引以及基于树的索引二者。在实践中,首先更新散列表210,并且其次更新逻辑树216,或反之亦然,这基于所实现的设计或策略。作为示例,如果散列表210位于非易失性存储器(例如英特尔3D XpointTM)中并且逻辑树位于易失性存储器中,则响应于“放置”命令,散列表210可以首先被更新,并且逻辑树216可以其次在某个其它时间被更新,以至少部分地掩蔽与更新两个数据结构相关联的等待时间延迟。
散列表210是图1的散列表140的说明性简化示例。散列表210包括索引212和槽214。索引212是键142(图1中所示)的散列值。数据管理引擎204可以将多个散列算法中的一个应用到键142以产生索引112。一般地,散列函数是将键的范围变换成数组索引的范围的函数。换言之,散列函数是将任意长度和值的键映射到索引——其例如针对数组——的有限范围中的函数。所图示的索引范围自0, 1, 2, ..., N,其中N可以是以数千、数百万、数十亿、数万亿等等的数目。槽214包括对值144(图1中所示)的引用。每个键(例如Bob、Alice、Fred、Adam等等)相关联于对应的值(例如波斯顿、马萨诸塞州;奥兰多、佛罗里达;圣地亚哥、加利福尼亚;波特兰、俄勒冈州等等)。根据一个实施例,槽214可以包括与每个键或与每个散列键相对应的值。根据一个实施例,针对与每个散列键相对应的值中的每一个,槽214可以包括对存储器中值的位置的引用(例如指针)。当数据管理引擎204接收到“得到”命令时,数据管理引擎204将散列函数应用到键,并且从相关的槽214中检索针对键的值或针对键的值的地址偏移和长度。数据管理引擎204然后可以从存储器中检索实际值,这通过使用从散列表210中的一个或多个槽214中检索的值位置信息。对于“放置”命令,数据管理引擎204使键散列化,并且将针对值的地址偏移(存储器中的)以及长度存储在槽214中,所述槽214与被计算为键散列的索引相关联。对于“更新”命令,数据管理引擎204基于键的索引来更新表,并且对于“删除”命令,数据管理引擎204从散列表210的索引中删除键的散列。在散列表210的一个实现方式中,每个槽214包括键-值对146中的单一一个。在散列表210的一个实现方式中,槽214存储键-值对146的散列版本。在散列表210的一个实现方式中,键-值对146被存储在槽124中,所述槽214具有键以及对存储键值的存储器中位置的指针。在一个实现方式中,为了管理冲突,槽214中的一个或多个是链表,其可以持有多个指针,所述多个指针针对与散列到相同索引数的键相关联的值。
逻辑树216是图1的逻辑树138的说明性简化示例。逻辑树216包括存储键142的多个节点218。节点218存储的键(例如Bob、Alice、Fred、Adam等等)被维护在散列表210中。当数据管理引擎204接收到不能利用散列表210被高效执行的“扫描”命令时,数据管理引擎204使用逻辑树216来检索扫描的结果(例如范围查询)。逻辑树216包括所述多个节点218,所述多个节点218被逻辑地组织成存储键142的叶节点的分层次的层或层级220a、220b、220c等等(共同为层级220)。多种类型的逻辑树中的任一个可以用于实现逻辑树216。
图3是用于图1和2的键-值数据结构架构的数据管理逻辑120的操作的过程300的流程图。尽管图示和描述了步骤的特定顺序,但是根据各种其它实施例,所图示和描述的步骤中的一个或多个可以用一个或多个其它顺序被执行。
在操作302处,过程300开始。操作302可以继续进行到操作304。
在操作304处,过程300发布一个或多个键-值命令。键-值命令的示例包括“扫描”、“得到”、“放置”、“更新”、“删除”等等。操作304可以继续进行到操作306。
在操作306处,过程300确定键-值命令类型。如果键-值命令类型是“扫描”命令,则过程300可以继续进行到操作308。如果键-值命令类型是“得到”命令,则过程300可以继续进行到操作314。如果键-值命令是“放置”或“更新”,则过程300可以继续进行到操作318。如果键-值命令是“删除”,则过程300可以继续进行到操作320。
在操作308处,过程300使用基于树的KV子系统(例如逻辑树)来扫描利用键-值命令所接收的键的范围(例如在第一键和第二键之间)。操作308可以继续进行到操作310。
在操作310处,过程300可以返回扫描数据结果,所述扫描数据结果包括在第一键和第二键的范围内的一个或多个键。操作310可以继续进行到操作312,在该处过程300结束。
在操作314处,过程300使用基于散列的KV子系统(例如散列表)来返回与利用“得到”命令所提供的键相关联的值。操作314可以继续进行到操作316。
在操作316处,过程300返回“得到”数据结果,其可以包括键-值对,可以包括与在“得到”命令期间所提供的键相关联的值,或可以包括存储器中的地址偏移以及将从存储器中检索的值的长度。操作316可以继续进行到操作312,在该处过程300结束。
在操作318处,过程300将键和第一值数据写入到基于散列的KV子系统。也就是说,根据一个实施例,键的散列被计算为针对散列表的散列索引的新索引,值被存储在存储器中,并且值的偏移地址(存储器中的)以及值的大小被存储在散列表中。操作318可以继续进行到操作319。
在操作319处,过程300将键和第二值数据写入到基于树的KV子系统。第二值数据小于第一值数据,用于保持基于树的KV子系统的总体大小在存储器中相对小。根据一个实施例,第一值数据是将与特定键相关联的原始值或实际值,并且其将在“得到”命令的情况下利用键来被检索。第二值数据是假值、空(NULL)值、零字节值等等。根据各种实施例,可以在操作319之前执行操作318,可以在操作319之后执行操作318,或可以与操作319同时地执行操作318。操作319可以继续进行到操作312,在该处过程300结束。
在操作320处,过程300从基于树的KV子系统和基于散列的KV子系统二者中删除键。操作320继续进行到操作312,在该处过程结束。
因而,数据管理逻辑120同时利用基于散列编索引以及基于树编索引的益处,用以混合图1的KV数据结构136的操作。
图4是用于键-值数据结构架构的数据管理逻辑的操作的过程400的流程图。在操作402处,过程400开始。操作402继续进行到操作404。
在操作404处,过程400包括维护:具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键、第二值。操作404继续进行到操作406。
在操作406处,过程400包括接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。操作406继续进行到操作408。
在操作408处,过程400结束。
虽然图3和4的流程图图示了根据各种实施例的操作,但是要理解的是,不是图3和4中所描绘的所有操作对于其它实施例而言都是必要的。另外,在本文中充分设想的是,在本公开内容的其它实施例中,图3和4中描绘的操作和/或本文中所述的其它操作可以用没有在任何附图中特别示出的方式被组合,并且这样的实施例可以包括比图3和4中所图示的更少或更多的操作。因而,指向没有在一个附图或表中确切示出的特征和/或操作的权利要求被视为在本公开内容的范围和内容内。
如在本文中任何实施例中所使用的,术语“逻辑”可以是指被配置成执行先前提及的操作中任一个的应用、软件、固件和/或电路。软件可以被具体化为软件包、代码、指令、指令集和/或数据,其被记录在非暂时性计算机可读存储介质上。固件可以被具体化为代码、指令或指令集和/或数据,其在存储器设备中被硬编码(例如非易失性)。
“电路”,如本文中任何实施例中所使用的,可以例如单个地或以任何组合地包括硬连线的电路、可编程电路、状态机电路、逻辑和/或固件,其存储由可编程电路所执行的指令。电路可以被具体化为集成电路,诸如集成电路芯片。在一些实施例中,电路可以至少部分地由处理器电路110、122形成,所述处理器电路110、122执行与本文中所述的功能性相对应的代码和/或指令集(例如软件、固件等等),因而将通用处理器变换成专用处理环境,用以执行本文中所述的操作中的一个或多个。在一些实施例中,存储器控制器电路或其它系统的各种组件和电路可以被组合在芯片上系统(SoC)架构中。
前文提供了示例系统架构和方法,然而,对本公开内容的修改是可能的。处理器可以包括一个或多个处理器核,并且可以被配置成执行系统软件。系统软件可以包括例如操作系统。设备存储器可以包括I/O存储器缓冲器,所述I/O存储器缓冲器被配置成存储一个或多个数据分组,所述数据分组将由网络接口传送或由网络接口接收。
操作系统(OS)116可以被配置成管理系统资源以及控制在例如主机设备102上运行的任务。例如,OS可以通过使用Microsoft® Windows®、HP-UX®、Linux®或UNIX®被实现,尽管可以使用其它操作系统。在另一示例中,OS可以通过使用AndroidTM、 iOS、WindowsPhone® 或BlackBerry®来被实现。在一些实施例中,OS可以被虚拟机监控器(或超级监督器)取代,所述虚拟机监控器可以将用于底层硬件的抽象层提供给在一个或多个处理单元上运行的各种操作系统(虚拟机)。操作系统和/或虚拟机可以实现协议栈。协议栈可以执行一个或多个程序以处理分组。协议栈的示例是TCP/IP(输送控制协议/因特网协议)协议栈,其包括一个或多个程序用于处置(例如处理或生成)分组,用以通过网络来传送和/或接收。
主机存储器电路112可以包括以下类型的存储器中的一个或多个:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机访问存储器、闪速存储器、磁盘存储器、和/或光学盘存储器。附加地或可替换地,存储器电路可以包括其它和/或稍后开发的类型的计算机可读存储器。
本文中所述的操作的实施例可以被实现在计算机可读存储设备中,所述计算机可读存储设备已经在其上存储了指令,所述指令当被一个或多个处理器执行的时候履行所述方法。处理器可以包括例如处理单元和/或可编程电路。计算机可读存储设备可以包括机器可读存储设备,其包括任何类型的有形、非暂时性存储设备,例如任何类型的盘,包括软盘、光学盘、光盘只读存储器(“CD-ROM”)、光盘可重写(“CD-RW”)、以及磁光盘、半导体设备、诸如只读存储器(“ROM”)、随机访问存储器(“RAM”)、诸如动态和静态RAM、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪速存储器、磁性或光学卡、或适合用于存储电子指令的任何类型的计算机可读存储设备。
数据管理逻辑120和设备存储逻辑128可以被配置成相应地提供和执行命令106,如本文中所述。命令106可以包括例如放置(键,值),得到(键),删除(键),更新(键,值),扫描(键1,键2)等等。数据管理逻辑120、设备存储逻辑128和/或命令106中的一个或多个可以遵从快速非易失性存储器(“NVM”)规范或与之兼容,所述快速非易失性存储器(“NVM”)规范有关于与存储设备的通信以及存储设备的操作。例如,数据管理逻辑120、设备存储逻辑128和/或命令106中的一个或多个可以遵从名为如下的快速NVM规范:NVM Express®,修订本1.2,由快速NVM工作组于2014年11月发布,和/或修订本1.2.1,其于2016年6月发布,和/或该规范的稍后和/或有关的版本,例如修订本1.3,发布于2017年5月。
在一些实施例中,硬件描述语言(“HDL”)可以用于指定针对本文中所述的各种逻辑和/或电路的电路和/或(多个)逻辑实现方式。例如,在一个实施例中,硬件描述语言可以遵从非常高速集成电路(“VHSIC”)硬件描述语言(“VHDL”)或与之兼容,所述非常高速集成电路(“VHSIC”)硬件描述语言(“VHDL”)可以使能实现本文中所述的一个或多个电路和/或逻辑的半导体制造。VHDL可以遵从以下各项或与之兼容:IEEE标准1076-1987、IEEE标准1076.2、IEEE 1076.1、VHDL-2006的IEEE草案3.0、VHDL-2008的IEEE草案4.0和/或IEEEVHDL标准的其它版本和/或其它硬件描述标准。
在一些实施例中,Verilog硬件描述语言(“HDL”)可以用于指定针对本文中所述的各种逻辑和/或电路的电路和/或(多个)逻辑实现方式。例如,在一个实施例中,HDL可以遵从以下各项或与之兼容:IEEE标准62530-2011:系统Verilog统一的硬件设计、规范和验证语言,日期为2011年7月07日;IEEE Std 1800TM-2012:针对系统Verilog统一的硬件设计、规范和验证语言的IEEE标准,发布于2013年2月21日;IEEE标准1364-2005:针对Verilog硬件描述语言的IEEE标准,其日期为2006年4月18日,和/或其它版本的Verilog HDL和/或系统Verilog标准。
示例
本公开内容的示例包括与减少存储器阵列中的程序干扰降级有关的主题、诸如存储器控制器、方法和系统,如以下所讨论的那样。
示例1. 根据该示例,提供有一种装置。所述装置可以包括:用于存储具有第一数据结构和第二数据结构的键-值数据结构的电路,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键和第二值;以及用于存储设备的控制器电路。所述控制器电路可以包括用于接收第一查询和第二查询的逻辑,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
示例2. 该示例包括示例1的元素,其中所述第一查询可以是“得到”命令,并且所述第二查询是“扫描”命令。
示例3. 该示例包括示例1的元素,其中所述第二值可以包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的总体字节大小的其它信息。
示例4. 该示例包括示例1的元素,其中所述逻辑可以包括数据管理逻辑,用以响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引二者,从而修改键-值数据结构。
示例5. 该示例包括示例1的元素,其中所述逻辑可以用于至少部分地在非易失性存储器电路中并且至少部分地在设备缓冲器电路中维护键-值数据结构。
示例6. 该示例包括示例1的元素,其中基于散列的索引可以包括作为键的散列的索引。
示例7. 该示例包括示例1的元素,其中所述控制器电路的逻辑可以用于响应于第一查询而将散列函数应用于键中的第一个,用以确定第一数据结构的基于散列的索引中的第一索引;将第一值中的第一个从通过第一数据结构中的第一索引所寻址的槽传递到第一位置;响应于第二查询,利用键中的第二个以及键中的第三个来搜索第二数据结构,用以标识在键中的第二个与键中的第三个之间的键中的第四个;以及将在键中的第二个与键中的第三个之间的键中的第四个传递到第一位置。
示例8. 该示例包括示例7的元素,其中所述第一位置可以是控制器电路中的高速缓存存储器,并且控制器电路可以是存储设备处理器电路,或者第一位置可以是用于存储设备电路的缓冲器电路。
示例9. 根据该示例,提供有一种存储设备。所述存储设备可以包括设备处理器电路;设备缓冲器电路;用于存储具有第一数据结构和第二数据结构的键-值数据结构的存储设备电路,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键和第二值;以及用于存储设备的控制器电路。所述包括逻辑的控制器电路可以用于接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
示例10. 该示例包括示例9的元素,其中所述第一查询可以是“得到”命令,并且所述第二查询是“扫描”命令。
示例11. 该示例包括示例9的元素,其中所述第二值可以包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
示例12. 该示例包括示例9的元素,其中所述逻辑可以包括数据管理逻辑,用以响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引二者,从而修改键-值数据结构。
示例13. 该示例包括示例9的元素,其中所述逻辑可以用于至少部分地在非易失性存储器电路中并且至少部分地在设备缓冲器电路中维护键-值数据结构。
示例14. 该示例包括示例9的元素,其中基于散列的索引可以包括作为键的散列的索引。
示例15. 该示例包括示例9的元素,其中所述控制器电路的逻辑可以用于响应于第一查询而将散列函数应用于键中的第一个,用以确定第一数据结构的基于散列的索引中的第一索引;将第一值中的第一个从通过第一数据结构中的第一索引所寻址的槽传递到第一位置;响应于第二查询,利用键中的第二个以及键中的第三个来搜索第二数据结构,用以标识在键中的第二个与键中的第三个之间的键中的第四个;以及将在键中的第二个与键中的第三个之间的键中的第四个传递到第一位置。
示例16. 该示例包括示例15的元素,其中所述第一位置可以是用于存储设备电路的缓冲器电路,或者所述第一位置可以是控制器电路中的高速缓存存储器,并且所述控制器电路是存储设备处理器电路。
示例17. 根据该示例,提供有一种已经在其上存储了指令的计算机可读存储设备,所述指令当被一个或多个处理器执行的时候导致操作。所述操作包括维护具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键与第二值;以及接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
示例18. 该示例包括示例17的元素,其中所述第一查询可以是“得到”命令,并且所述第二查询是“扫描”命令。
示例19. 该示例包括示例17的元素,其中所述第二值可以包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
示例20. 该示例包括示例17的元素,其中所述操作可以包括响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引,从而修改键-值数据结构。
示例21. 该示例包括示例17的元素,其中所述操作包括至少部分地在非易失性存储器电路中并且至少部分地在设备缓冲器电路中维护键-值数据结构。
示例22. 该示例包括示例17的元素,其中基于散列的索引包括作为键的散列的索引。
示例23. 该示例包括示例17的元素,其中所述操作包括响应于第一查询而将散列函数应用于键中的第一个,用以确定第一数据结构的基于散列的索引中的第一索引;将第一值中的第一个从通过第一数据结构中的第一索引所寻址的槽传递到第一位置;响应于第二查询,利用键中的第二个以及键中的第三个来搜索第二数据结构,用以标识在键中的第二个与键中的第三个之间的键中的第四个;以及将在键中的第二个与键中的第三个之间的键中的第四个传递到第一位置。
示例24. 该示例包括示例23的元素,其中所述第一位置可以是用于存储设备电路的缓冲器电路,或者所述第一位置可以是控制器电路中的高速缓存存储器,并且所述控制器电路是存储设备处理器电路。
示例25. 根据该示例,提供有一种方法。所述方法可以包括维护具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键与第二值;以及接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
示例26. 该示例包括示例25的元素,其中所述第一查询是“得到”命令,并且所述第二查询是“扫描”命令。
示例27. 该示例包括示例25的元素,其中所述第二值包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
示例28. 该示例包括示例25的元素,此外包括响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引,从而修改键-值数据结构。
示例29. 该示例包括示例25的元素,此外包括:至少部分地在非易失性存储器电路中并且至少部分地在设备缓冲器电路中维护键-值数据结构。
示例30. 该示例包括示例25的元素,其中基于散列的索引包括作为键的散列的索引。
示例31. 该示例包括示例25的元素,此外包括:响应于第一查询而将散列函数应用于键中的第一个,用以确定第一数据结构的基于散列的索引中的第一索引;将第一值中的第一个从通过第一数据结构中的第一索引所寻址的槽传递到第一位置;响应于第二查询,利用键中的第二个以及键中的第三个来搜索第二数据结构,用以标识在键中的第二个与键中的第三个之间的键中的第四个;以及将在键中的第二个与键中的第三个之间的键中的第四个传递到第一位置。
示例32. 该示例包括示例31的元素,其中所述第一位置是用于存储设备电路的缓冲器电路,或者所述第一位置是控制器电路中的高速缓存存储器,并且所述控制器电路是存储设备处理器电路。
示例33. 根据该示例,提供有一种存储器控制器。所述存储器控制器包括用于维护具有第一数据结构和第二数据结构的键-值数据结构的构件,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键与第二值;以及用于接收第一查询和第二查询的构件,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
示例34. 该示例包括示例33的元素,其中所述第一查询是“得到”命令,并且所述第二查询是“扫描”命令。
示例35. 该示例包括示例33的元素,其中所述第二值包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
示例36. 该示例包括示例33的元素,此外包括用于进行以下的构件:响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引从而修改键-值数据结构。
示例37. 根据该示例,提供有一种设备,其包括用于执行根据示例25到32中任一个所述的方法的构件。
示例38. 根据该示例,提供有一种已经在其上存储了指令的计算机可读存储设备,所述指令当被一个或多个处理器执行的时候导致操作,所述操作包括:根据示例25到32中任一个所述的方法。
在本文中已经采用的术语和表述被用作描述术语而不是限制术语,并且在这样的术语和表述的使用中没有任何意图排除所示出和所描述的特征(或其部分)的任何等同物,并且认识到,在权利要求的范围内,各种修改是可能的。因此,权利要求意图覆盖所有这样的等同物。
在本文中已经描述了各种特征、方面和实施例。如本领域技术人员将理解的,所述特征、方面和实施例易受彼此组合以及易受变型和修改。因此,本公开内容应当被视为包含这样的组合、变型和修改。
Claims (24)
1. 一种装置,包括:
存储设备电路,其用于存储具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键与第二值;以及
用于存储设备的控制器电路,所述控制器电路包括逻辑用以:
接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
2.根据权利要求1所述的装置,其中所述第一查询是“得到”命令,并且所述第二查询是“扫描”命令。
3.根据权利要求1所述的装置,其中所述第二值包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的总体字节大小的其它信息。
4.根据权利要求1所述的装置,其中所述逻辑包括数据管理逻辑,用以响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引二者,从而修改键-值数据结构。
5.根据权利要求1所述的装置,其中所述逻辑用于至少部分地在非易失性存储器电路中并且至少部分地在设备缓冲器电路中维护键-值数据结构。
6.根据权利要求1所述的装置,其中基于散列的索引包括作为键的散列的索引。
7.根据权利要求1所述的装置,其中所述控制器电路的逻辑用于:
响应于第一查询而将散列函数应用于键中的第一个,用以确定第一数据结构的基于散列的索引中的第一索引;
将第一值中的第一个从通过第一数据结构中的第一索引所寻址的槽传递到第一位置;
响应于第二查询,利用键中的第二个以及键中的第三个来搜索第二数据结构,用以标识在键中的第二个与键中的第三个之间的键中的第四个;以及
将在键中的第二个与键中的第三个之间的键中的第四个传递到第一位置。
8.根据权利要求7所述的装置,其中所述第一位置是控制器电路中的高速缓存存储器,并且控制器电路是存储设备处理器电路,或者第一位置是用于存储设备电路的缓冲器电路。
9.一种存储设备,其包括:
设备处理器电路;
设备缓冲器电路;
存储设备电路,其用于存储具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键与第二值;以及
用于存储设备的控制器电路,所述控制器电路包括逻辑用以:
接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
10.根据权利要求9所述的存储设备,其中所述第一查询是“得到”命令,并且所述第二查询是“扫描”命令。
11.根据权利要求9所述的存储设备,其中所述第二值包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
12.根据权利要求9所述的存储设备,其中所述逻辑包括数据管理逻辑,用以响应于“更新”、“删除”或“放置”命令而更新基于散列的索引与基于树的索引二者,从而修改键-值数据结构。
13.根据权利要求9所述的存储设备,其中所述逻辑用于至少部分地在非易失性存储器电路中并且至少部分地在设备缓冲器电路中维护键-值数据结构。
14.根据权利要求9所述的存储设备,其中基于散列的索引包括作为键的散列的索引。
15.根据权利要求9所述的存储设备,其中所述控制器电路的逻辑用于:
响应于第一查询而将散列函数应用于键中的第一个,用以确定第一数据结构的基于散列的索引中的第一索引;
将第一值中的第一个从通过第一数据结构中的第一索引所寻址的槽传递到第一位置;
响应于第二查询,利用键中的第二个以及键中的第三个来搜索第二数据结构,用以标识在键中的第二个与键中的第三个之间的键中的第四个;以及
将在键中的第二个与键中的第三个之间的键中的第四个传递到第一位置。
16.根据权利要求15所述的存储设备,其中所述第一位置是用于存储设备电路的缓冲器电路,或者所述第一位置是控制器电路中的高速缓存存储器,并且所述控制器电路是存储设备处理器电路。
17. 一种已经在其上存储了指令的计算机可读存储设备,所述指令当被一个或多个处理器执行的时候导致操作,包括:
维护具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键与第二值;以及
接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
18.根据权利要求17所述的计算机可读存储设备,其中所述第一查询是“得到”命令,并且所述第二查询是“扫描”命令。
19.根据权利要求17所述的计算机可读存储设备,其中所述第二值包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
20. 一种方法,包括:
维护具有第一数据结构和第二数据结构的键-值数据结构,所述第一数据结构具有基于散列的索引,所述第一数据结构用于在键-值对中存储键和第一值,所述第二数据结构具有基于树的索引,所述第二数据结构用于存储键、第二值;以及
接收第一查询和第二查询,所述第一查询包括键中的第一个,所述第一查询用于请求检索与键中的第一个相对应的第一值中的第一个,所述第二查询包括在键中第二个与键中第三个之间用于标识键中第四个的范围查询。
21.根据权利要求20所述的方法,其中所述第一查询是“得到”命令,并且所述第二查询是“扫描”命令。
22.根据权利要求20所述的方法,其中所述第二值包括空值、零字节大小的值、假值,或具有比第一值的总体字节大小更小的累积字节大小的其它值。
23.一种设备,其包括用于执行根据权利要求20到22中任一个所述的方法的构件。
24.一种已经在其上存储了指令的计算机可读存储设备,所述指令当被一个或多个处理器执行的时候导致操作,所述操作包括:根据权利要求20到22中任一个所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/856686 | 2017-12-28 | ||
US15/856,686 US20190034427A1 (en) | 2017-12-28 | 2017-12-28 | Data management system employing a hash-based and tree-based key-value data structure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109977111A true CN109977111A (zh) | 2019-07-05 |
Family
ID=64556834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811433028.9A Pending CN109977111A (zh) | 2017-12-28 | 2018-11-28 | 采用基于散列和基于树的键-值数据结构的数据管理系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190034427A1 (zh) |
EP (1) | EP3506119A1 (zh) |
CN (1) | CN109977111A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888886A (zh) * | 2019-11-29 | 2020-03-17 | 华中科技大学 | 一种索引结构及构建方法、键值存储系统及请求处理方法 |
CN113868243A (zh) * | 2020-06-30 | 2021-12-31 | 慧与发展有限责任合伙企业 | 具有节点缓冲器的键-值索引 |
WO2022063059A1 (zh) * | 2020-09-23 | 2022-03-31 | 华为云计算技术有限公司 | 键值存储系统的数据管理方法及其装置 |
CN114296630A (zh) * | 2020-10-07 | 2022-04-08 | 慧与发展有限责任合伙企业 | 缓存存储器中重复数据删除指纹索引的更新 |
CN114296630B (zh) * | 2020-10-07 | 2024-07-02 | 慧与发展有限责任合伙企业 | 机器可读存储介质、数据存储系统和数据存储系统的方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10719495B2 (en) | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10649969B2 (en) * | 2017-06-13 | 2020-05-12 | Western Digital Technologies, Inc. | Memory efficient persistent key-value store for non-volatile memories |
US20190034427A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
US11032252B2 (en) * | 2018-01-03 | 2021-06-08 | Syccure, Inc. | Distributed authentication between network nodes |
US10691693B2 (en) | 2018-01-30 | 2020-06-23 | Salesforce.Com, Inc. | Cache for efficient record lookups in an LSM data structure |
WO2019222516A1 (en) * | 2018-05-16 | 2019-11-21 | Lg Electronics, Inc. | Systems and methods for efficient key management in a vehicular intranet |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US10852978B2 (en) | 2018-12-14 | 2020-12-01 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
CN109902092B (zh) * | 2019-02-22 | 2020-05-05 | 广州荔支网络技术有限公司 | 一种数据存储系统的操作方法、装置和移动终端 |
CN109947775B (zh) * | 2019-03-13 | 2021-03-23 | 北京微步在线科技有限公司 | 数据处理方法、装置、电子设备及计算机可读介质 |
US11520738B2 (en) * | 2019-09-20 | 2022-12-06 | Samsung Electronics Co., Ltd. | Internal key hash directory in table |
KR20210068699A (ko) | 2019-12-02 | 2021-06-10 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
WO2020098819A2 (en) * | 2019-12-05 | 2020-05-22 | Alipay (Hangzhou) Information Technology Co., Ltd. | Performing map iterations in a blockchain-based system |
AU2019378667C1 (en) | 2019-12-05 | 2021-04-15 | Alipay (Hangzhou) Information Technology Co., Ltd. | Performing map iterations in blockchain-based system |
CN111241108B (zh) * | 2020-01-16 | 2023-12-26 | 北京百度网讯科技有限公司 | 基于键值对kv系统的索引方法、装置、电子设备和介质 |
US11449257B2 (en) * | 2020-02-21 | 2022-09-20 | EMC IP Holding Company LLC | Host device with efficient automated seamless migration of logical storage devices across multiple access protocols |
US11308030B2 (en) * | 2020-03-05 | 2022-04-19 | International Business Machines Corporation | Log-structured merge-tree with blockchain properties |
CN111399777B (zh) * | 2020-03-16 | 2023-05-16 | 平凯星辰(北京)科技有限公司 | 一种基于数据值分类的差异化键值数据存储方法 |
CN111988140B (zh) * | 2020-08-20 | 2023-04-18 | 四川爱联科技股份有限公司 | 物联网模组的密钥管理方法、系统及终端 |
US11956348B2 (en) | 2020-10-09 | 2024-04-09 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for security key management for I/O devices |
CN114969069B (zh) * | 2022-05-30 | 2024-06-18 | 华侨大学 | 一种应用于键值存储系统的热度感知本地更新方法 |
CN117762324A (zh) * | 2022-09-24 | 2024-03-26 | 华为技术有限公司 | 一种数据访问方法、系统以及节点 |
CN116483886B (zh) * | 2023-04-10 | 2024-04-02 | 上海沄熹科技有限公司 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5603843B2 (ja) * | 2011-08-22 | 2014-10-08 | 日本電信電話株式会社 | データベースの負荷分散装置 |
US8782100B2 (en) * | 2011-12-22 | 2014-07-15 | Sap Ag | Hybrid database table stored as both row and column store |
CN103577158B (zh) * | 2012-07-18 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 数据处理方法与装置 |
US9826067B2 (en) * | 2013-02-28 | 2017-11-21 | Texas Instruments Incorporated | Packet processing match and action unit with configurable bit allocation |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US10248677B1 (en) * | 2014-12-30 | 2019-04-02 | EMC IP Holding Company LLC | Scaling an SSD index on a deduplicated storage system |
US20170139594A1 (en) * | 2015-11-17 | 2017-05-18 | Samsung Electronics Co., Ltd. | Key-value integrated translation layer |
DE102018113885A1 (de) * | 2017-06-13 | 2018-12-13 | Western Digital Technologies, Inc. | Speichereffizienter persistenter bzw. beständiger Schlüsselwertspeicher für nichtflüchtige Speicher |
CN107728937B (zh) * | 2017-09-15 | 2020-09-04 | 上海交通大学 | 一种使用非易失性内存介质的键值对持久存储方法及系统 |
CN109947669A (zh) * | 2017-12-21 | 2019-06-28 | 北京忆恒创源科技有限公司 | Kv存储设备的地址转换方法与系统 |
US20190034427A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
CN113505085A (zh) * | 2018-03-16 | 2021-10-15 | 北京忆芯科技有限公司 | Kv存储设备的地址转换及其加速器 |
US11481391B1 (en) * | 2019-11-25 | 2022-10-25 | Amazon Technologies, Inc. | Query language operations using a scalable key-item data store |
-
2017
- 2017-12-28 US US15/856,686 patent/US20190034427A1/en not_active Abandoned
-
2018
- 2018-11-28 EP EP18209009.2A patent/EP3506119A1/en not_active Ceased
- 2018-11-28 CN CN201811433028.9A patent/CN109977111A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888886A (zh) * | 2019-11-29 | 2020-03-17 | 华中科技大学 | 一种索引结构及构建方法、键值存储系统及请求处理方法 |
CN110888886B (zh) * | 2019-11-29 | 2022-11-11 | 华中科技大学 | 一种索引结构及构建方法、键值存储系统及请求处理方法 |
CN113868243A (zh) * | 2020-06-30 | 2021-12-31 | 慧与发展有限责任合伙企业 | 具有节点缓冲器的键-值索引 |
CN113868243B (zh) * | 2020-06-30 | 2023-06-20 | 慧与发展有限责任合伙企业 | 计算机实施的方法、非暂态机器可读介质以及存储系统 |
WO2022063059A1 (zh) * | 2020-09-23 | 2022-03-31 | 华为云计算技术有限公司 | 键值存储系统的数据管理方法及其装置 |
CN114296630A (zh) * | 2020-10-07 | 2022-04-08 | 慧与发展有限责任合伙企业 | 缓存存储器中重复数据删除指纹索引的更新 |
US11860840B2 (en) | 2020-10-07 | 2024-01-02 | Hewlett Packard Enterprise Development Lp | Update of deduplication fingerprint index in a cache memory |
CN114296630B (zh) * | 2020-10-07 | 2024-07-02 | 慧与发展有限责任合伙企业 | 机器可读存储介质、数据存储系统和数据存储系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190034427A1 (en) | 2019-01-31 |
EP3506119A1 (en) | 2019-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109977111A (zh) | 采用基于散列和基于树的键-值数据结构的数据管理系统 | |
US10289315B2 (en) | Managing I/O operations of large data objects in a cache memory device by dividing into chunks | |
KR102042904B1 (ko) | 비차단 제어 업데이트 동작을 수행하도록 구성되는 데이터 저장 디바이스 | |
US9594524B2 (en) | System and method for distributed computing in non-volatile memory | |
CN104881334B (zh) | 缓存数据的防掉电保护方法及系统 | |
US9092321B2 (en) | System and method for performing efficient searches and queries in a storage node | |
CN110008177A (zh) | 使能hadoop分布式文件系统的扩展的可扩展基于树的索引框架 | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
US20150032938A1 (en) | System and method for performing efficient processing of data stored in a storage node | |
KR102275563B1 (ko) | 호스트-관리 비휘발성 메모리 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
CN103229164B (zh) | 数据访问方法和装置 | |
US20170185354A1 (en) | Techniques for a Write Transaction at a Storage Device | |
US9336135B1 (en) | Systems and methods for performing search and complex pattern matching in a solid state drive | |
US8756198B2 (en) | Enhancing data store backup times | |
Yang et al. | Reducing relational database performance bottlenecks using 3D XPoint storage technology | |
US11010091B2 (en) | Multi-tier storage | |
US10089348B2 (en) | Computer device and storage device | |
US10445372B2 (en) | Method and device to access auxiliary mapping data for a data structure | |
US11200210B2 (en) | Method of efficient backup of distributed file system files with transparent data access | |
TW202203016A (zh) | 用於排序鍵的鍵值儲存裝置及方法 | |
US9336313B1 (en) | Systems and methods for performing single and multi threaded searches and complex pattern matching in a solid state drive | |
Lee et al. | Iterator Interface Extended LSM-tree-based KVSSD for Range Queries | |
US20230205440A1 (en) | Storage device including indirect access module, method of operating the same, and method of operating storage system including the same | |
Byun et al. | A column-aware index management using flash memory for read-intensive databases |
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 |