CN111857582A - 一种键值存储系统 - Google Patents
一种键值存储系统 Download PDFInfo
- Publication number
- CN111857582A CN111857582A CN202010654524.8A CN202010654524A CN111857582A CN 111857582 A CN111857582 A CN 111857582A CN 202010654524 A CN202010654524 A CN 202010654524A CN 111857582 A CN111857582 A CN 111857582A
- Authority
- CN
- China
- Prior art keywords
- nodes
- memory
- node
- index
- data
- 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
- 238000013500 data storage Methods 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 18
- 239000007787 solid Substances 0.000 description 18
- 238000000034 method Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种键值存储系统,所述系统采用索引结构背包树,所述索引结构背包树包含三种优先级依次降低的索引节点:中间节点、叶子结点和设于叶子结点下的背包节点,所述中间节点存储索引信息,叶子节点存储索引信息和小键值对,背包节点存储大键值对,将新增键值数据存储到叶子节点和/或背包节点中,相邻键值数据存储在同一叶子节点下;本发明消除了多层日志结构树给系统带来的性能波动和停顿延时问题,解决了传统基于LSM‑Tree的设计不能很好地适应新型存储介质Optane SSD特性的问题,同时保证中间节点常驻内存,提高了系统的读写性能。
Description
技术领域
本发明涉及数据存储领域,具体涉及一种键值存储系统。
背景技术
随着信息技术的高速发展和互联网的普及,数据量出现了飞跃式的增长,应用服务的数据存储规模和数据的访问量也随之增大,传统的关系型数据库无法满足需求,非关系型数据库应运而生。键值存储是非关系型数据库的一种典型的存储方式,键值存储系统中数据按照键值对的形式进行组织存储,由于其横向扩展的性能扩展方式,可以较好地应对现今大数据时代的需要,已经成为了现今存储行业的主流方式之一。
现今大部分键值存储系统都采用日志合并树(Log-Structured-Merge Tree,简称为LSM-Tree)存储模型,日志合并树架构提出了延迟更新和批量写入的算法,将随机写转换为批量顺序写,从而提升了系统的写入性能,但LSM-Tree由于多层结构存在严重的读写放大,并且需要维护盘上数据有序,导致系统存在性能波动、停顿延时以及高CPU占用等问题。随着Intel Optane系列产品的推出,研究人员发现新型存储介质傲腾固态硬盘Optane SSD具有高带宽、低时延、随机顺序性能相当的特点,而传统基于LSM-Tree的设计不能很好地适应新型存储介质的特性。
发明内容
本发明的主要目的在于提供一种键值存储系统,以解决传统基于LSM-Tree的设计不能很好适应新型存储介质Optane SSD特性的问题。
为了实现上述目的,根据本发明的第一方面,提供了一种键值存储系统,所述系统包括索引结构背包树,所述索引结构背包树包含三种优先级依次降低的索引节点:中间节点、叶子结点和设于叶子结点下的背包节点;
所述中间节点存储索引信息,所述叶子节点存储索引信息和小键值对,所述背包节点存储大键值对;将新增键值数据存储到叶子节点和/或背包节点中,相邻键值数据存储在同一叶子节点下。
可选地,所述系统还包括用于管理索引节点的内存缓存。
进一步地,当内存响应数据访问请求时,从内存缓存中读取所需数据;若所需数据不在内存中,则将所需数据从硬盘读入内存。
进一步地,所述将所需数据从硬盘读入内存,包括:
若内存充足,将所有索引节点中的数据都读入内存。
进一步地,若内存不足,按照缓存替换算法中的LRU算法将优先级较低的索引节点淘汰至硬盘,并将所需数据从硬盘读入内存。
可选地,所述中间节点存储索引信息包括:
所述中间节点存储其儿子节点的键值范围和盘上地址。
可选地,所述叶子节点中存储索引信息和小键值对包括:
所述叶子节点存储大键值对的索引信息和小键值对,所述大键值对的索引信息包括大键值对所在背包节点的盘上地址以及节点内的索引偏移;其中,所述小键值对为数据量小于预设阈值的键值对,所述大键值对为数据量大于或等于预设阈值的键值对。
可选地,所述背包节点存储大键值对包括:
每个叶子节点下设的背包节点存储该叶子节点对应的大键值对。
可选地,采用哈希算法将每个数据访问请求划分到独立的工作区间,每个工作区间包括独立的上下文信息、索引结构背包树和私有缓存。
根据本发明的第二方面,提供了一种数据存储系统,包括:硬盘和内存,所述硬盘和内存用于支持第一方面任一项所述的键值存储系统。
本发明的键值存储系统采用索引结构背包树,索引结构背包树包含三种优先级依次降低的索引节点:中间节点、叶子结点和设于叶子结点下的背包节点,然后在中间节点存储索引信息,叶子节点存储索引信息和小键值对,背包节点存储大键值对,将新增键值数据存储到叶子节点和/或背包节点中,相邻键值数据存储在同一叶子节点下;本发明消除了多层日志结构树给系统带来的性能波动和停顿延时问题,解决了传统基于LSM-Tree的设计不能很好适应新型存储介质Optane SSD特性的问题,同时保证中间节点常驻内存,提高了系统的读写性能。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的键值存储系统的系统框图;
图2为本发明实施例提供的键值存储系统的架构图;
图3为本发明实施例提供的索引结构背包树的结构图;
图4为本发明实施例提供的数据恢复的示意图;
图5为本发明实施例提供的LRU队列的结构图;
图6为本发明实施例提供的索引结构背包树中间节点的结构图;
图7为本发明实施例提供的索引结构背包树叶子节点的结构图;
图8为本发明实施例提供的索引结构背包树背包节点的结构图;
图9为本发明实施例提供的数据分区的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明中,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
对本发明实施例所涉及的技术术语解释如下:
动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),最为常见的系统内存。DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。
英特尔傲腾固态硬盘(Intel Optane Solid State Drive,简称为OptaneSSD),固态硬盘是用固态电子存储芯片阵列而制成的硬盘,英特尔傲腾固态硬盘与传统基于闪存的固态硬盘不同,该固态硬盘基于英特尔最新的3D XPoint技术实现,能够实现原地更新,较之传统固态硬盘有更高的带宽和更低的时延,且随机和顺序读写性能相当。
本发明实施例提供了一种键值存储系统,系统框图如图1所示,所述系统包括索引结构背包树,所述索引结构背包树包含三种优先级依次降低的索引节点:中间节点、叶子结点和设于叶子结点下的背包节点;
本发明实施例提供的键值存储系统的架构图如图2所示,该系统基于的硬件结构主要包括:DRAM内存和固态硬盘,所述固态硬盘为能够实现原地更新、有较高带宽和较低时延且随机和顺序读写性能相当的固态硬盘,该固态硬盘可以是本发明实施例中采用的英特尔傲腾固态硬盘OptaneSSD,也可以是具备上述性能的其他型号固态硬盘。具体的,在内存中响应键值存储系统的数据访问请求Key,并在内存中设置缓存Page cache,存储索引结构背包树BagTree的部分索引节点;固态硬盘用于持久化索引结构背包树的索引节点;内存中的所有索引节点与固态硬盘中的所有索引节点构成索引结构背包树;内存的读写性能高于固态硬盘,即内存的读写速度高于固态硬盘。
并且,在内存中采用哈希算法Hash将每个数据访问请求划分到独立的工作区间,例如划分出三个独立空间Partition1、Partition2、Partition3作为工作区间Worker1、Worker2、Worker3,每个工作区间包括独立的上下文信息、索引结构背包树和私有缓存。
本发明实施例提供的索引结构背包树的结构图如图3所示,所述索引结构背包树采用类似B+树的数据组织方式设计,其中间节点与B+树中间节点结构相同,所述中间节点存储索引信息,所述叶子节点存储索引信息和小键值对,所述背包节点存储大键值对;
例如,各中间节点分别存储索引信息Key1、Key2、Key3、Key4、Key5、Key6、Key7、Key8,各叶子节点分别存储索引信息Keys和小键值对Values,各背包节点分别存储大键值对Values。
将新增键值数据存储到叶子节点和/或背包节点中,相邻键值数据存储在同一叶子节点下。
具体的,确定新增键值数据的数据量,当叶子节点剩余存储空间充足时,将新增键值数据存储到叶子节点中;当叶子节点剩余存储空间不足时,从所述新增键值数据和叶子结点所存数据组成的集合中选择大键值对,将所述大键值对存储到背包节点中;当背包节点剩余存储空间不足时,增加背包节点的数量,相对地减少了叶子节点的数量,也相对地减少了中间节点的数量,通过叶子节点和背包节点的灵活配比控制中间节点的数量,保证中间节点常驻内存,提高系统的读写性能。相邻键值数据存储在同一叶子节点下,即通过背包节点将相邻键值数据聚集在同一叶子节点下,提高内存缓存的命中率,加速数据访问。
具体的,所述系统还包括用于管理索引节点的内存缓存。其中,所述内存缓存设置于内存中。通过设置内存缓存加速数据访问,内存缓存设计采用分层方式,为每个层次设置不同的优先级,将理论上访问频率更高的数据放置在优先级较高的层次,保证中间节点能够常驻内存。
内存缓存主要包括四个部分:存放中间节点的Internal Node部分;存放叶子节点和背包节点的Level Cache部分;连续的内存块Memory部分以及非连续的内存块Freelist;其中,Memory部分是系统启动时为私有缓存分配的连续内存块,Freelist部分存放的是在使用中被释放的空闲内存页,通过链表的方式进行管理。
具体的,当内存响应数据访问请求时,从内存缓存中读取所需数据,以提升存储引擎的效率;若所需数据不在内存中,则将所需数据从硬盘读入内存。所述硬盘为固态硬盘,所述固态硬盘为能够实现原地更新、有较高带宽和较低时延且随机和顺序读写性能相当的固态硬盘,该固态硬盘可以是本发明实施例中采用的英特尔傲腾固态硬盘OptaneSSD,也可以是具备上述性能的其他型号固态硬盘。
具体的,所述将所需数据从硬盘读入内存,包括:
若内存充足,将所有索引节点中的数据都读入内存。
若内存不足,按照缓存替换算法中的近期最少使用(Least Recently Used,简称为LRU)算法将优先级较低的索引节点淘汰至硬盘,并将所需数据从硬盘读入内存。
具体的,内存不足时,优先级较低的索引节点写入固态硬盘,即优先级较低的索引节点落盘,然后释放内存缓存,并将所需数据从硬盘读入内存;系统恢复时,读取索引根节点即可开始提供服务;系统掉电重启时,从硬盘中读取索引根节点,一边提供服务一边重建索引,而无需扫描所有的数据重构索引再开始提供服务,提升读写性能。
考虑到中间节点内存占比很小,访问频率很高,为了进一步提高系统性能,本发明实施例将中间节点常驻内存,不进行淘汰以提高数据的检索速度。但为了加快系统掉电重启的恢复速度,需要将索引节点落盘,在本发明实施例中,索引节点修改后都会实时同步,以此来保证数据的一致性,掉电重启时仅需读取根节点即可开始提供服务。
本发明实施例提供的数据恢复的示意图如图4所示。图中小于key3的键值对所在中间节点的页号为3,大于key3小于key6的键值对所在中间节点页号为4,其中页号为3的数据已经读到内存中,而页号为4的中间节点还没被读取过,数据在固态硬盘上。假设收到key1的数据访问请求,系统通过根节点找到小于key3的数据所在的儿子节点在页号为3的页面中,通过该页号在内部映射Internal Map中找到儿子节点在内存缓存中的页指针,再在该页中查找儿子节点的数据。而对于key4的访问请求,首先访问内部映射Internal Map查询到空指针,说明数据不在内存中,内部映射Internal Map仍然在该位置分配一个空闲内存页Memory Page,然后触发访盘操作将数据从固态硬盘页SSD page读入预先分配的空闲内存页中,并在该页中继续处理key4的请求。
每一种类型的索引节点都包含各自的缓存队列LRU队列,对于叶子节点和背包节点,由于访问频率相对较低且数量较多,放在优先淘汰的缓存队列LRU队列中。所有的缓存队列LRU队列共用一块内存池,需要内存页时,优先从层级更低的位置申请,如果需要在本层内部淘汰数据,使用LRU算法进行淘汰。这样可以动态调整不同层级所占的比例,当层数较高的缓存数据较少时,保证低层级的缓存有足够的空间可以使用,在内存不足且高层缓存需要数据时,又可以从低层缓存中淘汰内存页供高层使用,这样有利于将访问频率更高的中间节点保存在内存之中,保证性能相对稳定。
为不同优先级的索引节点设置不同的LRU队列,为了保证每个LRU队列都有内存页可用,每个LRU队列设置一个与内存页相关的阈值,当LRU队列占用的内存页数低于阈值时无法执行淘汰操作。
本发明实施例提供的LRU队列的结构图如图5所示,中间节点、叶子节点和背包节点构成索引结构背包树BagTree,中间节点的缓存队列LRU队列为LRU Queue 1,叶子节点的缓存队列LRU队列为LRU Queue 2,背包节点的缓存队列LRU队列为LRU Queue 3;中间节点优先级较高,叶子节点和背包节点优先级较低。
具体的,所述中间节点存储索引信息包括:
所述中间节点存储其儿子节点的键值范围和对应的盘上地址。
本发明实施例提供的索引结构背包树中间节点的结构图如图6所示,各中间节点只存储数据的索引信息如Key1、Key2、Key3、Key4、Key5、Key6、Key7、Key8,而不存储实际的数据,每一个中间节点都存放其儿子节点的键范围信息以及盘上地址,通过已知的键,在节点内部通过二分查找的方式快速定位到所需要的儿子节点地址,再根据该地址获取到儿子节点所在的页,循环此过程即可找到键所在的叶子节点如Leaf1、Leaf2、Leaf3。
具体的,所述叶子节点中存储索引信息和小键值对包括:
所述叶子节点存储大键值对的索引信息和小键值对,所述大键值对的索引信息包括大键值对所在背包节点的盘上地址以及节点内的索引偏移;其中,所述小键值对为数据量小于预设阈值的键值对,所述大键值对为数据量大于或等于预设阈值的键值对。具体的,所述预设阈值可根据实际需要设置,例如,将数据量的预设阈值设为1KB。
本发明实施例提供的索引结构背包树叶子节点的结构图如图7所示,为了保存变长值,叶子节点内部采用键值分离的方式进行存储,所有的键都存放在叶子节点中,指向值的偏移,对于小的值将其直接存放在叶子节点中,而对于大的值则将其存放在叶子节点下的背包节点中。叶子节点结构分为五个部分:Meta存放叶子节点的元数据信息,包含其余几个部分的偏移信息、键值对个数信息等元数据信息,读取叶子节点后,首先访问Meta了解叶子节点状态,再获取其它部分的信息;BlkIndex存放的是叶子节点对应背包节点的地址信息,通过该地址可找到对应的背包节点;Keys Index存放所有的键以及键对应值的索引信息,对于在叶子节点中的值,该索引信息记录的是值在叶子节点内的偏移,对于在背包节点中的值,该索引信息记录的是BlkIndex的偏移和背包节点内索引的偏移;Small Values存放的是小的值;Tmp并不是一个特定的空间而是一个水位,要求每一次数据写入背包节点后需要在其对应的叶子节点中留出Tmp大小的空闲区域,避免频繁的数据导入操作。
具体的,所述背包节点存储大键值对包括:
每个叶子节点下设的背包节点存储该叶子节点对应的大键值对。
本发明实施例提供的索引结构背包树背包节点的结构图如图8所示,背包节点作为叶子节点存储空间上的扩充,配合叶子节点使用,其结构包括Value Index和Big Values两部分,其中Value Index记录的是背包中各个值的偏移,存储每个值的索引信息,该字段可以使得更新操作时仅需要修改背包节点而无需修改其对应的叶子节点,减少了写次数,Big Values存储大键值对。
具体的,采用哈希算法将每个数据访问请求划分到独立的工作区间,每个工作区间包括独立的上下文信息、索引结构背包树和私有缓存。
具体的,设计的哈希算法保证每个独立工作区间的键值对数据相当,且各工作区间并行操作,互不干扰,实现负载均衡,减少背包树的深度,降低数据访问请求的I/O路径,提高系统的读性能。
本发明实施例提供的数据分区的示意图如图9所示,将负载线程Load Thread划分到三个独立的工作区间,每个工作区间包含各自独立的背包树BagTree和私有缓存PageCache,为每个工作区间分别设置前端请求队列Queue和处理线程Thread1、Thread2、Thread3,使得不同工作区间的请求能够并行处理,增加了系统的并行性,提高了系统的吞吐量。
本发明实施例还提供一种数据存储系统,包括:硬盘和内存,所述硬盘和内存用于支持上述任一项所述的键值存储系统。
从以上的描述中,可以看出,本发明实现了如下技术效果:
本发明所采用新型存储介质傲腾固态硬盘Optane SSD随机顺序性能相当,无需使用额外操作将随机写转化为顺序写,相比于多层日志结构树LSM-Tree,索引结构背包树消除了维护数据有序的合并操作,减少了多层日志结构树的写放大开销,降低了系统的性能波动、停顿延时以及CPU使用率,更充分地挖掘和适应新型存储介质的性能;本发明通过叶子节点和背包节点的灵活配比控制中间节点的个数,从而保证大部分中间节点常驻内存,在内存不足时,仍能提供较好的读写性能,同时索引节点落盘设计使得系统重启时仅读取根节点即可开始提供服务,加快了系统的恢复速度;提高内存缓存的命中率,加速数据访问,提升了系统的读写性能;每个独立的区间仅需要维护一部分键值数据,降低了数据的I/O路径,增加了系统的并行性,进一步提升了系统的读写性能。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种键值存储系统,其特征在于,所述系统包括索引结构背包树,所述索引结构背包树包含三种优先级依次降低的索引节点:中间节点、叶子结点和设于叶子结点下的背包节点;
所述中间节点存储索引信息,所述叶子节点存储索引信息和小键值对,所述背包节点存储大键值对;将新增键值数据存储到叶子节点和/或背包节点中,相邻键值数据存储在同一叶子节点下。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括用于管理索引节点的内存缓存。
3.根据权利要求2所述的系统,其特征在于,当内存响应数据访问请求时,从内存缓存中读取所需数据;若所需数据不在内存中,则将所需数据从硬盘读入内存。
4.根据权利要求3所述的系统,其特征在于,所述将所需数据从硬盘读入内存,包括:
若内存充足,将所有索引节点中的数据都读入内存。
5.根据权利要求4所述的系统,其特征在于,若内存不足,按照缓存替换算法中的LRU算法将优先级较低的索引节点淘汰至硬盘,并将所需数据从硬盘读入内存。
6.根据权利要求1所述的系统,其特征在于,所述中间节点存储索引信息包括:
所述中间节点存储其儿子节点的键值范围和盘上地址。
7.根据权利要求1所述的系统,其特征在于,所述叶子节点中存储索引信息和小键值对包括:
所述叶子节点存储大键值对的索引信息和小键值对,所述大键值对的索引信息包括大键值对所在背包节点的盘上地址以及节点内的索引偏移;其中,所述小键值对为数据量小于预设阈值的键值对,所述大键值对为数据量大于或等于预设阈值的键值对。
8.根据权利要求1所述的系统,其特征在于,所述背包节点存储大键值对包括:
每个叶子节点下设的背包节点存储该叶子节点对应的大键值对。
9.根据权利要求1所述的系统,其特征在于,采用哈希算法将每个数据访问请求划分到独立的工作区间,每个工作区间包括独立的上下文信息、索引结构背包树和私有缓存。
10.一种数据存储系统,其特征在于,包括:硬盘和内存,所述硬盘和内存用于支持权利要求1-9任一项所述的键值存储系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010654524.8A CN111857582B (zh) | 2020-07-08 | 2020-07-08 | 一种键值存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010654524.8A CN111857582B (zh) | 2020-07-08 | 2020-07-08 | 一种键值存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111857582A true CN111857582A (zh) | 2020-10-30 |
CN111857582B CN111857582B (zh) | 2024-04-05 |
Family
ID=73152627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010654524.8A Active CN111857582B (zh) | 2020-07-08 | 2020-07-08 | 一种键值存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111857582B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094372A (zh) * | 2021-04-16 | 2021-07-09 | 三星(中国)半导体有限公司 | 数据存取方法、数据存取控制装置及数据存取系统 |
CN113568908A (zh) * | 2021-07-16 | 2021-10-29 | 华中科技大学 | 一种键值请求并行调度方法及系统 |
CN113821477A (zh) * | 2021-11-19 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种元数据缓存方法、系统、设备以及介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510499B1 (en) * | 2010-08-30 | 2013-08-13 | Symantec Corporation | Solid state drive caching using memory structures to determine a storage space replacement candidate |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
US20150039575A1 (en) * | 2013-08-05 | 2015-02-05 | International Business Machines Corporation | Managing multiple locks for data set members in a data set index |
US20150262062A1 (en) * | 2014-03-17 | 2015-09-17 | Microsoft Corporation | Decision tree threshold coding |
CN105930280A (zh) * | 2016-05-27 | 2016-09-07 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
US20160335299A1 (en) * | 2015-05-11 | 2016-11-17 | Apple Inc. | Hierarchical Data Storage |
US20190042098A1 (en) * | 2018-06-08 | 2019-02-07 | Intel Corporation | Reduction of write amplification of ssd with integrated memory buffer |
CN109558084A (zh) * | 2018-11-29 | 2019-04-02 | 文华学院 | 一种数据处理方法以及相关设备 |
US20190235933A1 (en) * | 2018-01-31 | 2019-08-01 | Microsoft Technology Licensing, Llc | Index Structure Using Atomic Multiword Update Operations |
CN110168532A (zh) * | 2017-05-09 | 2019-08-23 | 华为技术有限公司 | 数据更新方法和存储装置 |
CN110347852A (zh) * | 2019-06-06 | 2019-10-18 | 华中科技大学 | 嵌入横向扩展键值存储系统的文件系统及文件管理方法 |
CN111309270A (zh) * | 2020-03-13 | 2020-06-19 | 清华大学 | 一种持久性内存键值存储系统 |
-
2020
- 2020-07-08 CN CN202010654524.8A patent/CN111857582B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510499B1 (en) * | 2010-08-30 | 2013-08-13 | Symantec Corporation | Solid state drive caching using memory structures to determine a storage space replacement candidate |
US20150039575A1 (en) * | 2013-08-05 | 2015-02-05 | International Business Machines Corporation | Managing multiple locks for data set members in a data set index |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
US20150262062A1 (en) * | 2014-03-17 | 2015-09-17 | Microsoft Corporation | Decision tree threshold coding |
US20160335299A1 (en) * | 2015-05-11 | 2016-11-17 | Apple Inc. | Hierarchical Data Storage |
CN105930280A (zh) * | 2016-05-27 | 2016-09-07 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
CN110168532A (zh) * | 2017-05-09 | 2019-08-23 | 华为技术有限公司 | 数据更新方法和存储装置 |
US20190235933A1 (en) * | 2018-01-31 | 2019-08-01 | Microsoft Technology Licensing, Llc | Index Structure Using Atomic Multiword Update Operations |
US20190042098A1 (en) * | 2018-06-08 | 2019-02-07 | Intel Corporation | Reduction of write amplification of ssd with integrated memory buffer |
CN109558084A (zh) * | 2018-11-29 | 2019-04-02 | 文华学院 | 一种数据处理方法以及相关设备 |
CN110347852A (zh) * | 2019-06-06 | 2019-10-18 | 华中科技大学 | 嵌入横向扩展键值存储系统的文件系统及文件管理方法 |
CN111309270A (zh) * | 2020-03-13 | 2020-06-19 | 清华大学 | 一种持久性内存键值存储系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094372A (zh) * | 2021-04-16 | 2021-07-09 | 三星(中国)半导体有限公司 | 数据存取方法、数据存取控制装置及数据存取系统 |
CN113568908A (zh) * | 2021-07-16 | 2021-10-29 | 华中科技大学 | 一种键值请求并行调度方法及系统 |
CN113821477A (zh) * | 2021-11-19 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种元数据缓存方法、系统、设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111857582B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109376156B (zh) | 读取具有存储感知的混合索引的方法 | |
CN111857582B (zh) | 一种键值存储系统 | |
EP2735978B1 (en) | Storage system and management method used for metadata of cluster file system | |
US9501550B2 (en) | OLAP query processing method oriented to database and HADOOP hybrid platform | |
CN105117415B (zh) | 一种优化的ssd数据更新方法 | |
US20130297613A1 (en) | Indexing based on key ranges | |
US20130013890A1 (en) | Database system | |
CN112000846B (zh) | 基于gpu分组lsm树索引的方法 | |
CN111475507A (zh) | 一种工作负载自适应单层lsmt的键值数据索引方法 | |
WO2022262381A1 (zh) | 一种数据压缩方法及装置 | |
Feng et al. | HQ-Tree: A distributed spatial index based on Hadoop | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及系统 | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 | |
Fu et al. | GPR-Tree: a global parallel index structure for multiattribute declustering on cluster of workstations | |
Zhang et al. | FlameDB: A key-value store with grouped level structure and heterogeneous Bloom filter | |
WO2022267508A1 (zh) | 元数据压缩方法及装置 | |
CN116955348A (zh) | 一种数据库索引构建方法及装置 | |
Fevgas et al. | HyR-tree: a spatial index for hybrid flash/3D XPoint storage | |
CN115470154A (zh) | 一种数据访问方法、管理设备、地址管理装置和存储系统 | |
US20240070135A1 (en) | Hash engine for conducting point queries | |
CN111309261A (zh) | 一种分布式存储系统中单节点上数据物理位置映射方法 | |
CN104657460B (zh) | 一种基于大规模文件系统负载特征关键字的文件搜索方法 | |
Ton That et al. | On lowering merge costs of an lsm tree | |
US20240004882A1 (en) | Handling null values in processing join operations during query execution | |
Omiecinski | Concurrent file reorganization: Clustering, conversion and maintenance |
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 |