KVS树制造技术

技术编号:22174500 阅读:68 留言:0更新日期:2019-09-21 15:09
在本文中描述KVS树及其上的操作。接收键值集kvset以存储于至少一个机器可读媒体上的键值数据结构中。所述kvset包含唯一键到值的映射,其中所述kvset的所述键及所述值为不可变的。所述键值数据结构经组织为树,其中所述树的节点包含时间上经定序的kvset序列。一旦接收所述kvset便将所述kvset写入到所述树的根节点的kvset序列。

KVS tree

【技术实现步骤摘要】
【国外来华专利技术】KVS树优先权申请案本申请案主张2017年2月9日提出申请的第15/428,877号美国申请案的优先权权益,所述美国申请案以其全文引用方式并入本文中。
本文中所描述的实施例一般来说涉及一种键值数据存储,且更具体来说涉及实施KVS树。
技术介绍
数据结构为准许用各种方式与存储于其中的数据相互作用的数据组织。数据结构可经设计以尤其准许(例如)在二进制搜索树中对数据进行高效搜索,准许(例如)利用链接列表对稀疏数据进行高效存储,或准许(例如)利用B树对可搜索数据进行高效存储。键值数据结构接受键值对且经配置以对对键的查询做出响应。键值数据结构可包含例如字典(例如,映射、散列映射等)的结构,其中键存储于链接(或含有)相应值的列表中。虽然这些结构在内存中(例如,在与存储区相对的主要或系统状态存储器中)是可用的,但这些结构在持久存储区中(例如,在磁盘上)的存储表示可为低效的。因此,已引入一类基于日志的存储结构。实例为日志结构化合并树(LSM树)。已存在各种LSM树实施方案,但许多LSM树实施方案符合其中将键值对接受到经键排序的内存中结构中的设计。当所述内存中结构填满时,数据分配在若干子节点当中。所述分配使得子节点中的键在子节点自身内而且在子节点之间经定序。举例来说,在具有三个子节点的第一树层级处,最左子节点内的最大键小于来自中间子节点的最小键且中间子节点中的最大键小于来自最右子节点的最小键。此结构准许对数据结构中的键以及键范围两者进行高效搜索。附图说明在图式(其未必按比例绘制)中,相似编号可在不同视图中描述类似组件。具有不同字母后缀的相似编号可表示类似组件的不同例子。图式一般以实例方式而非以限制方式图解说明本文件中所论述的各种实施例。图1图解说明根据实施例的KVS树的实例。图2是根据实施例的图解说明对多流存储装置的写入的实例的框图。图3图解说明根据实施例的用以促进对多流存储装置进行写入的方法的实例。图4是根据实施例的图解说明用于键及值的存储组织的实例的框图。图5是根据实施例的图解说明键块及值块的配置的实例的框图。图6图解说明根据实施例的KB树的实例。图7是根据实施例的图解说明KVS树引入的框图。图8图解说明根据实施例的用于KVS树引入的方法的实例。图9是根据实施例的图解说明键压缩的框图。图10图解说明根据实施例的用于键压缩的方法的实例。图11是根据实施例的图解说明键值压缩的框图。图12图解说明根据实施例的用于键值压缩的方法的实例。图13图解说明根据实施例的溢出值及其与树的关系的实例。图14图解说明根据实施例的用于溢出值函数的方法的实例。图15是根据实施例的图解说明溢出压缩的框图。图16图解说明根据实施例的用于溢出压缩的方法的实例。图17是根据实施例的图解说明提升压缩的框图。图18图解说明根据实施例的用于提升压缩的方法的实例。图19图解说明根据实施例的用于对KVS树执行维护的方法的实例。图20图解说明根据实施例的用于修改KVS树操作的方法的实例。图21是根据实施例的图解说明键搜索的框图。图22图解说明根据实施例的用于执行键搜索的方法的实例。图23是根据实施例的图解说明键扫描的框图。图24是根据实施例的图解说明键扫描的框图。图25是根据实施例的图解说明前缀扫描的框图。图26是图解说明机器的实例的框图,可在所述机器上实施一或多个实施例。具体实施方式LSM树已成为数据的受欢迎存储结构,其中预期高容量写入而且预期对数据的高效存取。为支持这些特征,LSM的若干部分针对上面保持有所述部分的媒体经调谐且后台进程一般解决使数据在不同部分之间移动(例如,从内存中部分到磁盘上部分)。在本文中,内存中是指随机存取且字节可寻址装置(例如,静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)),且磁盘上是指块可寻址装置(例如,硬盘驱动器、光盘、数字多功能光盘或固态驱动器(SSD),例如基于快闪存储器的装置),其还称为媒体装置或存储装置。LSM树利用由内存中装置提供的就绪存取来将传入数据按键排序,以提供对对应值的就绪存取。当将数据合并到磁盘上部分上时,驻存于磁盘上数据与新数据合并且以块形式回写到磁盘。虽然LSM树已成为构成若干个数据库与容量存储(例如,云存储)设计的基础的受欢迎结构,但其确实具有一些缺点。首先,新数据与旧数据不断合并以使内部结构保持按键排序会引起显著写入放大率。写入放大率为由给定存储技术强加的最小数据写入次数的增加。举例来说,为存储数据,将数据写入到磁盘至少一次。此可(举例来说)通过仅仅将最新数据片附加到已经写入数据的末尾上而完成。然而,此结构的搜索速度缓慢(例如,其随数据量而线性增长),且可在改变或删除数据时引起低效。LSM树增加写入放大率,因为其从磁盘读取将与新数据合并的数据且接着将所述数据往回重写到磁盘。写入放大率问题可在包含存储装置活动(例如对硬盘驱动器进行碎片整理或SSD的无用单元收集)时加剧。SSD上的写入放大率可为尤其有害的,因为这些装置可随着若干次写入而“耗损”。也就是说,SSD具有以写入来测量的有限寿命。因此,关于SSD的写入放大率使得缩短基础硬件的可用寿命。关于LSM树的第二问题包含在执行合并时可消耗的大量空间。LSM树确保将磁盘上部分按键排序。如果驻存于磁盘上的数据量太大,那么可消耗大量临时或暂存空间来执行合并。此可通过将磁盘上部分划分成非重叠结构以准许对数据子集的合并来得到稍微缓解,但可难以实现结构开销与性能之间的平衡。关于LSM树的第三问题包含可能有限的写入吞吐量。此问题起源于LSM数据的全部的基本上始终经排序本质。因此,压倒内存中部分的大容量写入必须等待直到利用可能耗时合并操作清除内存中部分为止。为解决此问题,已提议写入缓冲器(WB)树,其中操纵较小数据插入以在此情景中避免合并问题。具体来说,WB树对传入键进行散列以散布数据,且将键散列与值组合存储于较小摄入集中。这些集可在各种时间处经合并或基于键散列值而写入到子节点。此避免LSM树的昂贵合并操作同时在查找特定键时为高性能的。然而,按键散列排序的WB树引起昂贵整树扫描以对未直接由键散列引用的值进行定位,例如发生在对键范围进行搜索时。为解决上文所述的问题,在本文中描述KVS树及对应操作。KVS树为树数据结构,所述树数据结构包含基于键的预定导出而非树的内容而在母节点与子节点之间具有连接的节点。所述节点包含时间上经定序的键值集(kvset)序列。所述kvset含有在经键排序结构中的键值对。Kvset一旦经写入便也为不可变的。KVS树实现WB树的写入吞吐量同时通过维护节点中的kvset而对WB树搜索进行改进以提供对kvset的高效搜索,所述kvset包含经排序键以及(在实例中)键指标(例如布隆过滤器、最小键及最大键等)。在许多实例中,KVS树可通过将键与值分隔且合并较小kvset集合而对LSM树的临时存储问题进行改进。另外,所描述KVS树可通过对kvset的各种维护操作来降低写入放大率。此外,当节点中的kvset为不可变的时,例如SSD上的写入耗损的问题可由数据结构管理,从而减少装置自身的无用单元收集活动。此具有如下额外益处:释放内部装置资源(例如,总线带宽、处理循环等)从而引起更佳外部驱动性能(例如,读取或写入速度)。在下文描述KV本文档来自技高网...

【技术保护点】
1.一种在至少一个机器可读媒体上经组织为树的键值数据结构,所述数据结构包括:多个节点,来自所述多个节点的节点包含:时间上经定序的不可变键值集kvset序列;及所述节点的kvset中的键值对到所述节点的任何一个子节点的确定性映射,所述键值对包含一个键及一个值,所述键在所述kvset中为唯一的。

【技术特征摘要】
【国外来华专利技术】2017.02.09 US 15/428,8771.一种在至少一个机器可读媒体上经组织为树的键值数据结构,所述数据结构包括:多个节点,来自所述多个节点的节点包含:时间上经定序的不可变键值集kvset序列;及所述节点的kvset中的键值对到所述节点的任何一个子节点的确定性映射,所述键值对包含一个键及一个值,所述键在所述kvset中为唯一的。2.根据权利要求1所述的数据结构,其中所述确定性映射包含所述键的一部分的散列的一部分。3.根据权利要求2所述的数据结构,其中所述散列包含多个非重叠部分,所述多个非重叠部分包含所述散列的所述部分。4.根据权利要求3所述的数据结构,其中所述多个非重叠部分中的每一者对应于所述树的层级。5.根据权利要求4所述的数据结构,其中由所述节点的层级依据所述多个非重叠部分确定所述散列的所述部分。6.根据权利要求5所述的数据结构,其中所述节点的最大子节点数目由所述散列的所述部分的大小定义。7.根据权利要求1所述的数据结构,其中所述kvset包含键树以存储所述kvset的键值对的键条目。8.根据权利要求1所述的数据结构,其中所述kvset的键条目存储于包含主要键块及零个或更多个扩展键块的键块集中,所述键块集的成员对应于存储媒体的媒体块,每一键块包含用以将其识别为键块的标头;且其中将值存储于值块集中,所述值块集的成员对应于所述存储媒体的媒体块,每一值块包含用以将其识别为值块的标头。9.根据权利要求8所述的数据结构,其中值块包含在值之间不具有间隔的一或多个值的存储区段。10.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的所述一或多个扩展键块的媒体块标识列表。11.根据权利要求8所述的数据结构,其中所述主要键块包含所述值块集中的值块的媒体块标识列表。12.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的键树中的最低键的副本,所述最低键通过所述树的预设定排序次序来确定。13.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的键树中的最高键的副本,所述最高键通过所述树的预设定排序次序来确定。14.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的键树的标头。15.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的键树的媒体块标识列表。16.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的布隆过滤器的布隆过滤器标头。17.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的布隆过滤器的媒体块标识列表。18.根据权利要求8所述的数据结构,其中所述主要键块包含所述kvset的指标集。19.一种系统,其包括用以进行以下操作的处理电路:接收键值集kvset以存储于至少一个机器可读媒体的经组织为树的键值数据结构中,所述kvset包含唯一键到值的映射,所述kvset的所述键及所述值为不可变的,所述树的节点包含时间上经定序的kvset序列;及将所述kvset写入到所述树的根节点的kvset序列。20.根据权利要求19所述的系统,其中所述处理电路经配置以:接收包含搜索键的搜索请求;遍历所述树直到发生以下情形中的至少一者为止:遍历所述整个树,或在所述树的节点的kvset中找到所述搜索键的第一例子,遍历所述树包含所述处理电路进一步经配置以:在所述树的根节点处开始;且针对经遍历的每一节点:从最新kvset到最旧kvset检查所述节点的kvset;当找到所述搜索键时传回找到指示且停止所述遍历;且当未找到所述搜索键时使所述遍历继续到子节点,所述子节点存在且由从所述搜索键导出的溢出值及经遍历的所述节点的树层级识别。21.根据权利要求20所述的系统,其中检查所述kvset包含:针对给定kvset,所述处理电路使用所述kvset的布隆过滤器来确定所述搜索键是否可能在所述kvset中。22.根据权利要求20所述的系统,其中检查所述kvset包含:针对给定kvset,所述处理电路确定所述搜索键小于或等于所述kvset的最大键值。23.至少一个机器可读媒体,其包含在由处理电路执行时致使机器执行包括以下各项的操作的指令:接收键值集kvset以存储于至少一个机器可读媒体的经组织为树的键值数据结构中,所述kvset包含唯一键到值的映射,所述kvset的所述键及所述值为不可变的,所述树的节点包含时间上经定序的kvset序列;及将所述kvset写入到所述树的根节点的kvset序列。24.根据权利要求23所述的至少一个机器可读媒体,其中所述操作包括:接收将存储于所述键值数据结构中的键及对应值;将所述键及所述值放置于初步kvset中,所述初步kvset为可变的;及在达到指标时将所述kvset写入到所述键值数据结构。25.根据权利要求23所述的至少一个机器可读媒体,其中所述操作包括:接收第二kvset;将所述第二kvset写入到所述根节点的所述kvset序列;及响应于写入所述第二kvset而响应于所述根节点的指标超过阈值对所述根节点执行溢出操作。26.根据权利要求25所述的至少一个机器可读媒体,其中所述溢出操作包含:选择所述kvset序列的子集,所述子集包含连续kvset,所述连续kvset包含最旧kvset;计算所述kvset子集的每一kvset中的每一键的子节点映射,所述子节点映射为基于特定键及母节点的树层级而从所述母节点到子节点的确定性映射;基于其中每一kvset集恰好映射到一个子节点的所述子节点映射而将键及对应值收集到kvset中;将所述kvset写入到相应子节点中的相应kvset序列中的最新位置;及从所述根节点移除所述kvset子集。27.根据权利要求26所述的至少一个机器可读媒体,其中计算所述子节点映射包含:提取键的一部分;从所述键的所述部分导出溢出值;及基于所述母节点的所述树层级而传回所述溢出值的一部分。28.根...

【专利技术属性】
技术研发人员:D·博尔斯J·M·格罗韦斯S·莫耶A·汤姆林森
申请(专利权)人:美光科技公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1