CN112784120A - 一种基于范围分片方式的kv内存数据库存储管理方法 - Google Patents
一种基于范围分片方式的kv内存数据库存储管理方法 Download PDFInfo
- Publication number
- CN112784120A CN112784120A CN202110095115.3A CN202110095115A CN112784120A CN 112784120 A CN112784120 A CN 112784120A CN 202110095115 A CN202110095115 A CN 202110095115A CN 112784120 A CN112784120 A CN 112784120A
- Authority
- CN
- China
- Prior art keywords
- storage area
- range
- data
- range storage
- memory
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
- 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/064—Management of blocks
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)
- 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内存数据库存储管理方法。
背景技术
近年来,随着动态随机存储器(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数据复制到内存空间中,然后将内存空间的指针存入Tmp KV list中,然后退出;如果是正常状态,则进入下一步;
3)确认范围存储区空间是否足够,若足够,则新KV数据存入Reserved KV中;如果不够,则从内存堆中分配新的KV数据大小的内存空间,将KV数据复制到内存空间中,然后将内存空间的指针存入KV list中;
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数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区插入跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内Tmp KV list内KV数据,插入到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
5.根据权利要求4所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述拆分算法包括以下过程:
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)删除旧的范围存储区占用的内存空间。
6.根据权利要求5所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:所述缩减算法包括以下过程:
1)将该范围存储区的状态设置成缩减状态;
2)将范围存储区中所有正常的KV数据进行排序,形成链表;
3)创建新的范围存储区,内存块存储的key值范围与原有内存块范围一致;
4)迭代链表,将KV数据按照顺序写入到范围存储区Sorted KV空间中,增加当前范围存储区存储的所有KV数据总量的数值;
5)将新建范围存储区插入跳表中,用以快速索引出key值对应的范围存储区,并从跳表中删除旧的范围存取区;
6)逐个处理原范围存储区内Tmp KV list内KV数据,插入到对应的新范围存储区中;
7)删除旧的范围存储区占用的内存空间。
7.根据权利要求6所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:判断是否需要扩容为:当范围存储区的已存储的KV数据的数据量大于最大空间,并且已存储的KV数据的数据量小于范围存储区的空间最大阈值,范围存储区的状态为正常状态,则扩充该范围存储区的空间。
8.根据权利要求7所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:判断是否需要拆分为:当范围存储区的已存储的KV数据的数据量大于最大空间,且已存储的KV数据的数据量大于等于范围存储区的空间最大阈值,范围存储区的状态为正常状态时,将该范围存储区拆分。
9.根据权利要求8所述的基于范围分片方式的KV内存数据库存储管理方法,其特征在于:判断是否需要缩减为:当范围存储区中被删除的KV数据量达到阈值且范围存储区的状态为正常状态时,重新构造内存块,释放多余的内存。
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 true CN112784120A (zh) | 2021-05-11 |
CN112784120B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407752A (zh) * | 2021-08-19 | 2021-09-17 | 杭州欧若数网科技有限公司 | 图数据库内存管理方法、系统、电子设备及存储介质 |
CN113626433A (zh) * | 2021-08-03 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于两层art树的数据存储方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及系统 |
US20120317384A1 (en) * | 2010-02-09 | 2012-12-13 | Telefonaktiebolaget L M Ericsson (Publ) | Data storage method |
WO2014067270A1 (zh) * | 2012-11-01 | 2014-05-08 | Tao guangyi | 基于光盘的数据库存储系统及利用该系统的方法 |
CN105975587A (zh) * | 2016-05-05 | 2016-09-28 | 诸葛晴凤 | 一种高性能的内存数据库索引组织与访问方法 |
CN106255967A (zh) * | 2014-03-31 | 2016-12-21 | 亚马逊科技公司 | 分布式存储系统中的命名空间管理 |
CN108121813A (zh) * | 2017-12-27 | 2018-06-05 | 东软集团股份有限公司 | 数据管理方法、装置、系统、存储介质及电子设备 |
CN109165101A (zh) * | 2018-09-11 | 2019-01-08 | 南京朝焱智能科技有限公司 | 基于Redis的内存服务器设计方法 |
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存储服务高可用的方法 |
-
2021
- 2021-01-25 CN CN202110095115.3A patent/CN112784120B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120317384A1 (en) * | 2010-02-09 | 2012-12-13 | Telefonaktiebolaget L M Ericsson (Publ) | Data storage method |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及系统 |
WO2014067270A1 (zh) * | 2012-11-01 | 2014-05-08 | Tao guangyi | 基于光盘的数据库存储系统及利用该系统的方法 |
CN106255967A (zh) * | 2014-03-31 | 2016-12-21 | 亚马逊科技公司 | 分布式存储系统中的命名空间管理 |
CN109463002A (zh) * | 2015-11-27 | 2019-03-12 | 华为技术有限公司 | 向队列存储数据的方法、装置及设备 |
CN105975587A (zh) * | 2016-05-05 | 2016-09-28 | 诸葛晴凤 | 一种高性能的内存数据库索引组织与访问方法 |
CN108121813A (zh) * | 2017-12-27 | 2018-06-05 | 东软集团股份有限公司 | 数据管理方法、装置、系统、存储介质及电子设备 |
CN110858194A (zh) * | 2018-08-16 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 一种数据库扩容的方法和装置 |
CN109165101A (zh) * | 2018-09-11 | 2019-01-08 | 南京朝焱智能科技有限公司 | 基于Redis的内存服务器设计方法 |
CN110119487A (zh) * | 2019-04-15 | 2019-08-13 | 华南理工大学 | 一种适用于发散数据的缓存更新方法 |
CN110995871A (zh) * | 2019-12-24 | 2020-04-10 | 浪潮云信息技术有限公司 | 一种实现kv存储服务高可用的方法 |
Non-Patent Citations (3)
Title |
---|
NJ_KEVIN_PENG: "深入理解数据库之存储引擎", 《CSDN博客》 * |
林的BLOG: "队列动态扩容及容量使用", 《CSDN博客》 * |
马文龙等: "Key-Value型NoSQL本地存储系统研究", 《计算机学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626433A (zh) * | 2021-08-03 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于两层art树的数据存储方法 |
CN113626433B (zh) * | 2021-08-03 | 2024-01-19 | 上海沄熹科技有限公司 | 一种基于两层art树的数据存储方法 |
CN113407752A (zh) * | 2021-08-19 | 2021-09-17 | 杭州欧若数网科技有限公司 | 图数据库内存管理方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112784120B (zh) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347336B (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
US6026412A (en) | Interaction between application of a log and maintenance of a table that maps record identifiers during online reorganization of a database | |
US7096227B2 (en) | Database utilities | |
CN111522507B (zh) | 一种低延迟的文件系统地址空间管理方法、系统及介质 | |
CN112784120B (zh) | 一种基于范围分片方式的kv内存数据库存储管理方法 | |
US20080306990A1 (en) | System for performing a redistribute transparently in a multi-node system | |
CN107526550B (zh) | 一种基于日志结构合并树的两阶段合并方法 | |
US6415375B2 (en) | Information storage and retrieval system | |
JP2002530776A (ja) | 並行的なdbmsテーブル操作のための装置及び方法 | |
CN113590612A (zh) | Dram-nvm混合索引结构的构建方法及操作方法 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN112732725B (zh) | 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 | |
CN110019130B (zh) | 一种数据库更新的方法及装置 | |
CN117908755A (zh) | 一种基于非易失性内存的键值存储写优化方法 | |
EP4348454A2 (en) | Lsm hybrid compaction | |
US7130857B2 (en) | Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program | |
CN109871355B (zh) | 一种快照元数据存储方法、装置及设备、介质 | |
KR100859989B1 (ko) | 플래시 메모리의 공간정보 관리장치 및 그 방법 | |
CN112783896B (zh) | 一种用于加载文件减少内存使用率的方法 | |
KR100617370B1 (ko) | 저장 시스템에서 비트 맵에 의하여 관리되는 익스텐트를지원하는 페이지 할당 방법 | |
CN117170942B (zh) | 一种基于文件系统快照的数据库备份方法以及相关设备 | |
CN114004181A (zh) | 电路划分的优化方法及系统、存储介质 | |
Matsliach | Performance analysis of file organizations that use multibucket data leaves with partial expansions | |
CN116048408A (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 |