CN112784120B - 一种基于范围分片方式的kv内存数据库存储管理方法 - Google Patents

一种基于范围分片方式的kv内存数据库存储管理方法 Download PDF

Info

Publication number
CN112784120B
CN112784120B CN202110095115.3A CN202110095115A CN112784120B CN 112784120 B CN112784120 B CN 112784120B CN 202110095115 A CN202110095115 A CN 202110095115A CN 112784120 B CN112784120 B CN 112784120B
Authority
CN
China
Prior art keywords
range
storage area
data
memory
range storage
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.)
Active
Application number
CN202110095115.3A
Other languages
English (en)
Other versions
CN112784120A (zh
Inventor
梁波
张晖
于暄
张炜刚
孙思清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202110095115.3A priority Critical patent/CN112784120B/zh
Publication of CN112784120A publication Critical patent/CN112784120A/zh
Application granted granted Critical
Publication of CN112784120B publication Critical patent/CN112784120B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于范围分片方式的KV内存数据库存储管理方法,属于内存数据库技术领域。本发明的基于范围分片方式的KV内存数据库存储管理方法包括以下步骤:S1、数据库启动时,创建第一个范围存储区,并启动一个后台线程,顺序从待处理队列中取出范围存储区,判断需要扩容、拆分或缩减,并调用相应的算法进行处理;S2、数据库***数据时,使用新KV数据***算法将数据***某个范围存储区后;S3、数据库删除数据时,使用KV数据删除算法将数据删除后,判断该范围存储区是否需要缩减。该发明的基于范围分片方式的KV内存数据库存储管理方法能够提升CPU缓存命中率,减少内存空间重构的次数,具有很好的推广应用价值。

Description

一种基于范围分片方式的KV内存数据库存储管理方法
技术领域
本发明涉及内存数据库技术领域,具体提供一种基于范围分片方式的KV内存数据库存储管理方法。
背景技术
近年来,随着动态随机存储器(DRAM)容量的上升和单位价格的下降,使大量数据在内存中的存储和处理成为可能。内存数据库(MMDB:Main Memory Database,也叫主存数据库),就是将数据全部或者大部分放在内存中进行操作的数据库管理***。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。KV内存数据库指存储KEY-VALUE类型数据的内存数据库。
现有内存数据库存储方式是将分配的空间内分页,每页内顺序写入,没有范围分区的概念和机制。为节省内存空间的开销,使用锁机制实现事务的隔离级别。锁机制将临界资源的并发访问变成串行顺序访问,从而降低访问性能。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种能够提升CPU缓存命中率,减少内存空间重构的次数,并能提升内存访问吞吐率的基于范围分片方式的KV内存数据库存储管理方法。
为实现上述目的,本发明提供了如下技术方案:
一种基于范围分片方式的KV内存数据库存储管理方法,包括以下步骤:
S1、数据库启动时,创建第一个范围存储区,并启动一个后台线程,顺序从待处理队列中取出范围存储区,判断需要扩容、拆分或缩减,并调用相应的算法进行处理;
S2、数据库***数据时,使用新KV数据***算法将数据***某个范围存储区后,判断该范围存储区是否需要扩容或拆解,若需要则将该范围存储区放入待处理队列中;
S3、数据库删除数据时,使用KV数据删除算法将数据删除后,判断该范围存储区是否需要缩减,若需要则将该范围存储区放入待处理队列中。
范围存储区为存储key值某个范围空间数据的内存空间区域,范围存储区空间分为四个部分:
1)Sorted KV:范围存储区拆解成两个或重构时,每个范围存储区分配的KV数据存放的空间;
2)Reserved KV:预留的内存空间,用于存储新***的KV数据;
3)KV list:KV数据指针列表,当reserved KV空间不足时,新***的数据在堆中分配空间,并将指针存入列表内;
4)Tmp KV list:临时数据指针列表,当范围存储区正在重构时,需要将这段期间新***的KV数据存放在该临时链表中,以便重构后处理这些数据。
其中,Sorted KV和Reserved KV的内存空间是连续的,是同一个内存空间,该内存空间的前部分存储Sorted KV,后部分存储新***的KV数据。
范围存储区具备的属性
(1)最大空间CURRENT_MEM_BLOCK_MAX_SIZE,每次创建范围存储区时计算生成。计算规则为:CURRENT_MEM_BLOCK_MAX_SIZE=Sorted KV空间大小×(1+MEM_BLOCK_KV_LIST_PER+MEM_BLOCK_RESERVED_PER)。
(2)内存块内存储的key键值的范围[START_KEY,END_KEY)。
(3)已存储的KV数据的数据量CURRENT_STORE_SIZE。
(4)标记删除的KV数据的数据量CURRENT_DEL_SIZE。
(5)状态STATUS,有以下几种状态:正常、扩容中、拆解中、缩减中。
范围存储区的空间最大阈值MEM_BLOCK_MAX_SIZE,每个范围存储区存储的KV数据数据量不能超过该值,超过则需要将范围存储区拆分成两个范围存储区。
范围存储区预留空间比例MEM_BLOCK_RESERVED_PER,Sorted KV空间与ReservedKV空间的比值。
范围存储区外部存储空间比例MEM_BLOCK_KV_LIST_PER,Sorted KV空间与KVpoint list空间的比值。
范围存储区重构阈值MEM_BLOCK_DELETED_PER(内存块中已删除的数据量占比)。
第一个范围存储区的范围为(MIN,MAX)。
MIN常量表示key值空间中最小的key,取值为0x00。
MAX常量表示key值空间中最大的key,取值为0xFF。
作为优选,所述新KV数据***算法包括以下过程:
1)根据KV数据中的key值,从跳表中快速检索出对应的范围存储区;
2)确认该范围存储区的状态是否为正常,若不正常则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入Tmp KV list中,然后退出;如果是正常状态,则进入下一步;
3)确认范围存储区空间是否足够,若足够,则新KV数据存入Reserved KV中;如果不够,则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入KV list中;
4)修改当前范围存储区存储的所有KV数据总量值,增加新KV数据的数据量。
跳表为一种内存索引结构,在本专利中用于快速检索key值对应的范围存储区。
作为优选,所述KV数据删除算法包括以下过程:
1)根据KV数据中的key值,从跳表中快速检索出对应的范围存储区;
2)确认该范围存储区的状态是否为正常,如果不是正常状态,则跳到第一步;如果正常则进入下一步;
3)将该KV数据的存储空间状态置为已删除,计算出该KV占用的存储空间,然后修改标记删除的KV数据的数据量值加上该KV数据的空间大小。
作为优选,所述扩容算法包括以下过程:
1)将该范围存储区的状态设置为扩容状态;
2)将该范围存储区中所有正常KV数据按照key值进行排序,形成链表;
3)创建新的范围存储区,key值范围与原范围存储区范围一致,状态为正常状态;
4)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内Tmp KV list内KV数据,***到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
作为优选,所述拆分算法包括以下过程:
1)将该范围存储区的状态设置成拆解状态;
2)将该范围存储区内的所有正常key值进行排序,形成排好序的KV数据链表;
3)将KV数据链表分成两个链表,两个链表中KV数据的数据量相近,第二个链表首个key键值假设为MID_SPLIT_KEY;
4)对每个链表创建对应的范围存储区;
5)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
6)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
7)逐个处理原范围存储区内Tmp KV list内KV数据,***到对应的新范围存储区中;
8)删除旧的范围存储区占用的内存空间。
作为优选,所述缩减算法包括以下过程:
1)将该范围存储区的状态设置成缩减状态;
2)将范围存储区中所有正常的KV数据进行排序,形成链表;
3)创建新的范围存储区,内存块存储的key值范围与原有内存块范围一致;
4)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内Tmp KV list内KV数据,***到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
作为优选,判断是否需要扩容为:当范围存储区的已存储的KV数据的数据量大于最大空间,并且已存储的KV数据的数据量小于范围存储区的空间最大阈值,范围存储区的状态为正常状态,则扩充该范围存储区的空间。
作为优选,判断是否需要拆分为:当范围存储区的已存储的KV数据的数据量大于最大空间,且已存储的KV数据的数据量大于等于范围存储区的空间最大阈值,范围存储区的状态为正常状态时,将该范围存储区拆分。
作为优选,判断是否需要缩减为:当范围存储区中被删除的KV数据量达到阈值且范围存储区的状态为正常状态时,重新构造内存块,释放多余的内存。
与现有技术相比,本发明的基于范围分片方式的KV内存数据库存储管理方法具有以下突出的有益效果:通过组织内存数据,让相邻数据在物理内存空间中也相邻,从而提升CPU缓存命中率;通过预留内存空间和外部堆内存申请相结合的方式,减少内存空间重构的次数;通过无锁机制,提升内存访问吞吐率。从而达到提升数据库***整体性能,具有良好的推广应用价值。
具体实施方式
下面将结合实施例,对本发明的基于范围分片方式的KV内存数据库存储管理方法作进一步详细说明。
实施例
本发明的基于范围分片方式的KV内存数据库存储管理方法包括以下步骤:
S1、数据库启动时,创建第一个范围存储区,并启动一个后台线程,顺序从待处理队列中取出范围存储区,判断需要扩容、拆分或缩减,并调用相应的算法进行处理。
S2、数据库***数据时,使用新KV数据***算法将数据***某个范围存储区后,判断该范围存储区是否需要扩容或拆解,若需要则将该范围存储区放入待处理队列中。
S3、数据库删除数据时,使用KV数据删除算法将数据删除后,判断该范围存储区是否需要缩减,若需要则将该范围存储区放入待处理队列中。
其中,范围存储区为存储key值某个范围空间数据的内存空间区域,范围存储区空间分为四个部分:
1)Sorted KV:范围存储区拆解成两个或重构时,每个范围存储区分配的KV数据存放的空间;
2)Reserved KV:预留的内存空间,用于存储新***的KV数据;
3)KV list:KV数据指针列表,当reserved KV空间不足时,新***的数据在堆中分配空间,并将指针存入列表内;
4)Tmp KV list:临时数据指针列表,当范围存储区正在重构时,需要将这段期间新***的KV数据存放在该临时链表中,以便重构后处理这些数据。
其中,Sorted KV和Reserved KV的内存空间是连续的,是同一个内存空间,该内存空间的前部分存储Sorted KV,后部分存储新***的KV数据。
范围存储区具备的属性
(1)最大空间CURRENT_MEM_BLOCK_MAX_SIZE,每次创建范围存储区时计算生成。计算规则为:CURRENT_MEM_BLOCK_MAX_SIZE=Sorted KV空间大小×(1+MEM_BLOCK_KV_LIST_PER+MEM_BLOCK_RESERVED_PER)。
(2)内存块内存储的key键值的范围[START_KEY,END_KEY)。
(3)已存储的KV数据的数据量CURRENT_STORE_SIZE。
(4)标记删除的KV数据的数据量CURRENT_DEL_SIZE。
(5)状态STATUS,有以下几种状态:正常、扩容中、拆解中、缩减中。
范围存储区的空间最大阈值MEM_BLOCK_MAX_SIZE,每个范围存储区存储的KV数据数据量不能超过该值,超过则需要将范围存储区拆分成两个范围存储区。
范围存储区预留空间比例MEM_BLOCK_RESERVED_PER,Sorted KV空间与ReservedKV空间的比值。
范围存储区外部存储空间比例MEM_BLOCK_KV_LIST_PER,Sorted KV空间与KVpoint list空间的比值。
范围存储区重构阈值MEM_BLOCK_DELETED_PER(内存块中已删除的数据量占比)。
第一个范围存储区的范围为(MIN,MAX)。
MIN常量表示key值空间中最小的key,取值为0x00。
MAX常量表示key值空间中最大的key,取值为0xFF。
(一)新KV数据***算法包括以下过程:
1)根据KV数据中的key值,从跳表中快速检索出对应的范围存储区;
2)确认该范围存储区的状态是否为正常,若不正常则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入Tmp KV list中,然后退出;如果是正常状态,则进入下一步;
3)确认范围存储区空间是否足够,若足够,则新KV数据存入Reserved KV中;如果不够,则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入KV list中;
4)修改当前范围存储区存储的所有KV数据总量值,增加新KV数据的数据量。
跳表为一种内存索引结构,在本专利中用于快速检索key值对应的范围存储区。
(二)KV数据删除算法包括以下过程:
1)根据KV数据中的key值,从跳表中快速检索出对应的范围存储区;
2)确认该范围存储区的状态是否为正常,如果不是正常状态,则跳到第一步;如果正常则进入下一步;
3)将该KV数据的存储空间状态置为已删除,计算出该KV占用的存储空间,然后修改标记删除的KV数据的数据量值加上该KV数据的空间大小。
作为优选,所述扩容算法包括以下过程:
1)将该范围存储区的状态设置为扩容状态;
2)将该范围存储区中所有正常KV数据按照key值进行排序,形成链表;
3)创建新的范围存储区,key值范围与原范围存储区范围一致,状态为正常状态。
范围存储区CURRENT_MEM_BLOCK_MAX_SIZE=链表中KV数据量×(1+MEM_BLOCK_KV_LIST_PER+MEM_BLOCK_RESERVED_PER)
范围存储区申请连续内存块大小的计算方式:链表中KV数据量×(1+MEM_BLOCK_RESERVED_PER)。
4)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内Tmp KV list内KV数据,***到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
(三)拆分算法包括以下过程:
1)将该范围存储区的状态设置成拆解状态;
2)将该范围存储区内的所有正常key值进行排序,形成排好序的KV数据链表;
3)将KV数据链表分成两个链表,两个链表中KV数据的数据量相近,第二个链表首个key键值假设为MID_SPLIT_KEY;
4)对每个链表创建对应的范围存储区。
范围存储区的key值范围:前面的链表为[KEY_START,MID_SPLIT_KEY),后面的链表为[MID_SPLIT_KEY,KEY_END)
范围存储区CURRENT_MEM_BLOCK_MAX_SIZE=链表中KV数据量×(1+MEM_BLOCK_KV_LIST_PER+MEM_BLOCK_RESERVED_PER)
范围存储区申请连续内存块大小的计算方式:链表中KV数据量×(1+MEM_BLOCK_RESERVED_PER)。
5)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
6)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
7)逐个处理原范围存储区内Tmp KV list内KV数据,***到对应的新范围存储区中;
8)删除旧的范围存储区占用的内存空间。
(四)缩减算法包括以下过程:
1)将该范围存储区的状态设置成缩减状态;
2)将范围存储区中所有正常的KV数据进行排序,形成链表;
3)创建新的范围存储区,内存块存储的key值范围与原有内存块范围一致,范围存储区CURRENT_MEM_BLOCK_MAX_SIZE=链表中KV数据量×(1+MEM_BLOCK_KV_LIST_PER+MEM_BLOCK_RESERVED_PER)
范围存储区申请连续内存块大小的计算方式:链表中KV数据量×(1+MEM_BLOCK_RESERVED_PER)。
4)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内Tmp KV list内KV数据,***到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
(五)判断是否需要扩容为:当范围存储区的已存储的KV数据的数据量大于最大空间,并且已存储的KV数据的数据量小于范围存储区的空间最大阈值,范围存储区的状态为正常状态,则扩充该范围存储区的空间。
(六)判断是否需要拆分为:当范围存储区的已存储的KV数据的数据量大于最大空间,且已存储的KV数据的数据量大于等于范围存储区的空间最大阈值,范围存储区的状态为正常状态时,将该范围存储区拆分。
(七)判断是否需要缩减为:当范围存储区中被删除的KV数据量达到阈值且范围存储区的状态为正常状态时,重新构造内存块,释放多余的内存。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

Claims (9)

1.一种基于范围分片方式的KV内存数据库存储管理方法,其特征在于:包括以下步骤:
S1、数据库启动时,创建第一个范围存储区,并启动一个后台线程,顺序从待处理队列中取出范围存储区,判断是否需要扩容、拆分或缩减,并调用相应的算法进行处理;
S2、数据库***数据时,使用新KV数据***算法将数据***某个范围存储区后,判断该范围存储区是否需要扩容或拆分,若需要则将该范围存储区放入待处理队列中;
S3、数据库删除数据时,使用KV数据删除算法将数据删除后,判断该范围存储区是否需要缩减,若需要则将该范围存储区放入待处理队列中。
2.根据权利要求1所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述新KV数据***算法包括以下过程:
1)根据KV数据中的key值,从跳表中快速检索出对应的范围存储区;
2)确认该范围存储区的状态是否为正常,若不正常则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入TmpKVlist中,然后退出;如果是正常状态,则进入下一步;
3)确认范围存储区空间是否足够,若足够,则新KV数据存入Reserved KV中;如果不够,则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入KVlist中;
4)修改当前范围存储区存储的所有KV数据总量值,增加新KV数据的数据量。
3.根据权利要求2所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述KV数据删除算法包括以下过程:
1)根据KV数据中的key值,从跳表中快速检索出对应的范围存储区;
2)确认该范围存储区的状态是否为正常,如果不是正常状态,则跳到第一步;如果正常则进入下一步;
3)将该KV数据的存储空间状态置为已删除,计算出该KV占用的存储空间,然后修改标记删除的KV数据的数据量值加上该KV数据的空间大小。
4.根据权利要求3所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述扩容算法包括以下过程:
1)将该范围存储区的状态设置为扩容状态;
2)将该范围存储区中所有正常KV数据按照key值进行排序,形成链表;
3)创建新的范围存储区,key值范围与原范围存储区范围一致,状态为正常状态;
4)迭代链表,将KV数据按照顺序写入到范围存储区SortedKV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内TmpKVlist内KV数据,***到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
5.根据权利要求4所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述拆分算法包括以下过程:
1)将该范围存储区的状态设置成拆分状态;
2)将该范围存储区内的所有正常key值进行排序,形成排好序的KV数据链表;
3)将KV数据链表分成两个链表,两个链表中KV数据的数据量相近,第二个链表首个key键值假设为MID_SPLIT_KEY;
4)对每个链表创建对应的范围存储区;
5)迭代链表,将KV数据按照顺序写入到范围存储区SortedKV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
6)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
7)逐个处理原范围存储区内TmpKVlist内KV数据,***到对应的新范围存储区中;
8)删除旧的范围存储区占用的内存空间。
6.根据权利要求5所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述缩减算法包括以下过程:
1)将该范围存储区的状态设置成缩减状态;
2)将范围存储区中所有正常的KV数据进行排序,形成链表;
3)创建新的范围存储区,内存块存储的key值范围与原有内存块范围一致;
4)迭代链表,将KV数据按照顺序写入到范围存储区SortedKV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区***跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内TmpKVlist内KV数据,***到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
7.根据权利要求6所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:判断是否需要扩容为:当范围存储区的已存储的KV数据的数据量大于最大空间,并且已存储的KV数据的数据量小于范围存储区的空间最大阈值,范围存储区的状态为正常状态时,则扩充该范围存储区的空间。
8.根据权利要求7所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:判断是否需要拆分为:当范围存储区的已存储的KV数据的数据量大于最大空间,且已存储的KV数据的数据量大于等于范围存储区的空间最大阈值,范围存储区的状态为正常状态时,将该范围存储区拆分。
9.根据权利要求8所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:判断是否需要缩减为:当范围存储区中被删除的KV数据量达到阈值且范围存储区的状态为正常状态时,重新构造内存块,释放多余的内存。
CN202110095115.3A 2021-01-25 2021-01-25 一种基于范围分片方式的kv内存数据库存储管理方法 Active CN112784120B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110095115.3A CN112784120B (zh) 2021-01-25 2021-01-25 一种基于范围分片方式的kv内存数据库存储管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110095115.3A CN112784120B (zh) 2021-01-25 2021-01-25 一种基于范围分片方式的kv内存数据库存储管理方法

Publications (2)

Publication Number Publication Date
CN112784120A CN112784120A (zh) 2021-05-11
CN112784120B true CN112784120B (zh) 2023-02-21

Family

ID=75758867

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110095115.3A Active CN112784120B (zh) 2021-01-25 2021-01-25 一种基于范围分片方式的kv内存数据库存储管理方法

Country Status (1)

Country Link
CN (1) CN112784120B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626433B (zh) * 2021-08-03 2024-01-19 上海沄熹科技有限公司 一种基于两层art树的数据存储方法
CN113407752B (zh) * 2021-08-19 2021-11-16 杭州欧若数网科技有限公司 图数据库内存管理方法、***、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722449A (zh) * 2012-05-24 2012-10-10 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及***
WO2014067270A1 (zh) * 2012-11-01 2014-05-08 Tao guangyi 基于光盘的数据库存储***及利用该***的方法
CN108121813A (zh) * 2017-12-27 2018-06-05 东软集团股份有限公司 数据管理方法、装置、***、存储介质及电子设备
CN109463002A (zh) * 2015-11-27 2019-03-12 华为技术有限公司 向队列存储数据的方法、装置及设备
CN110119487A (zh) * 2019-04-15 2019-08-13 华南理工大学 一种适用于发散数据的缓存更新方法
CN110858194A (zh) * 2018-08-16 2020-03-03 北京京东尚科信息技术有限公司 一种数据库扩容的方法和装置
CN110995871A (zh) * 2019-12-24 2020-04-10 浪潮云信息技术有限公司 一种实现kv存储服务高可用的方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317384A1 (en) * 2010-02-09 2012-12-13 Telefonaktiebolaget L M Ericsson (Publ) Data storage method
US9495478B2 (en) * 2014-03-31 2016-11-15 Amazon Technologies, Inc. Namespace management in distributed storage systems
CN105975587B (zh) * 2016-05-05 2019-05-10 诸葛晴凤 一种高性能的内存数据库索引组织与访问方法
CN109165101B (zh) * 2018-09-11 2021-03-19 南京朝焱智能科技有限公司 基于Redis的内存服务器设计方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722449A (zh) * 2012-05-24 2012-10-10 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及***
WO2014067270A1 (zh) * 2012-11-01 2014-05-08 Tao guangyi 基于光盘的数据库存储***及利用该***的方法
CN109463002A (zh) * 2015-11-27 2019-03-12 华为技术有限公司 向队列存储数据的方法、装置及设备
CN108121813A (zh) * 2017-12-27 2018-06-05 东软集团股份有限公司 数据管理方法、装置、***、存储介质及电子设备
CN110858194A (zh) * 2018-08-16 2020-03-03 北京京东尚科信息技术有限公司 一种数据库扩容的方法和装置
CN110119487A (zh) * 2019-04-15 2019-08-13 华南理工大学 一种适用于发散数据的缓存更新方法
CN110995871A (zh) * 2019-12-24 2020-04-10 浪潮云信息技术有限公司 一种实现kv存储服务高可用的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Key-Value型NoSQL本地存储***研究;马文龙等;《计算机学报》;20180831;第41卷(第8期);全文 *
队列动态扩容及容量使用;林的BLOG;《CSDN博客》;20171226;全文 *

Also Published As

Publication number Publication date
CN112784120A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN110347336B (zh) 一种基于nvm与ssd混合存储结构的键值存储***
CN103019948B (zh) 使用连续排序的交换文件进行工作集合交换的方法和***
CN112784120B (zh) 一种基于范围分片方式的kv内存数据库存储管理方法
CN111522507B (zh) 一种低延迟的文件***地址空间管理方法、***及介质
CN109407978B (zh) 高并发索引b+链表数据结构的设计与实现方法
US20080306990A1 (en) System for performing a redistribute transparently in a multi-node system
CN107526550B (zh) 一种基于日志结构合并树的两阶段合并方法
US6654868B2 (en) Information storage and retrieval system
KR20010082032A (ko) 영구적이고 확실한 저장 할당을 위한 시스템 및 방법
US20030217075A1 (en) Method for reserving pages of database
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN113253932B (zh) 一种分布式存储***的读写控制方法和***
US8732404B2 (en) Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to
CN110019130B (zh) 一种数据库更新的方法及装置
CN112732725A (zh) 基于nvm混合内存的自适应前缀树构建方法及其***、介质
US20120317384A1 (en) Data storage method
CN117908755A (zh) 一种基于非易失性内存的键值存储写优化方法
KR101377923B1 (ko) 지연 갱신을 수행하는 b-트리를 사용하여 플래시 메모리 내에 데이터를 저장하는 장치 및 방법
EP4348454A2 (en) Lsm hybrid compaction
GB2614676A (en) Managing least-recently-used data cache with persistent body
US7130857B2 (en) Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program
KR100859989B1 (ko) 플래시 메모리의 공간정보 관리장치 및 그 방법
KR100617370B1 (ko) 저장 시스템에서 비트 맵에 의하여 관리되는 익스텐트를지원하는 페이지 할당 방법
CN112783896B (zh) 一种用于加载文件减少内存使用率的方法
CN117170942B (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