The invention relates to a method and device for the data structure of a key value storage system. The method comprises: acquiring data size and data structure, data; each configuration of fixed size blocks; according to the data of the size of the data stored in the block, the block including the head, the head is used to record the block list and block management information, the management the information included in the block list in the upstream and downstream blocks; according to the type of data structure will be added in the configuration of the block to block for block list structure of the node or to block tree structure of nodes in the. Method and device for realizing the key storage data structure of the system, the configuration with fixed size blocks, will be stored in data blocks through the list or tree structure associated, makes data storage management more compact, greatly reducing the memory overhead, improve memory usage.
【技术实现步骤摘要】
键值存储系统数据结构的实现方法和装置
本专利技术涉及数据存储领域,特别是涉及一种键值存储系统数据结构的实现方法和装置。
技术介绍
键值存储系统是指以key(键)-value(值)方式存储的数据存储系统,例如redis是一个高性能的key-value数据库。原生redis数据库通常采用私有内存存储数据,每个字符串元素和数据结构节点单独申请内存。由于采用私有内存存储和管理数据,使得原生redis的内存碎片问题比较严重,内存使用率很低。
技术实现思路
基于此,有必要针对原生键值存储系统中内存使用率低的问题,提供一种键值存储系统数据结构的实现方法和装置,能提高内存使用率。一种键值存储系统数据结构的实现方法,包括:获取数据、数据的大小和数据结构类型;每次配置固定大小的区块;根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。一种键值存储系统数据结构的实现装置,包括:数据获取 ...
【技术保护点】
一种键值存储系统数据结构的实现方法,包括:获取数据、数据的大小和数据结构类型;每次配置固定大小的区块;根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。
【技术特征摘要】
1.一种键值存储系统数据结构的实现方法,包括:获取数据、数据的大小和数据结构类型;每次配置固定大小的区块;根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述数据结构类型为字符串string类型或链表类型list,则根据所述字符串string类型或链表类型list将配置的区块添加在以区块为节点的区块链表结构;若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset,则根据哈希值类型hash或字符串集合类型set或排序字符串集合类型zset将配置的各区块添加在以区块为节点的树形结构。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述数据结构类型为链表类型list或哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,则获取所述数据结构类型中元素的字符串的大小;判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串存储在所述当前要存储的区块内,若否,则获取所述元素的字符串的索引大小,判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置;判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小;若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块;根据所述删除元素指令从所述第二目标区块中删除所述指定元素;判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小,若是,则将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,获取树形结构的各区块中的键的哈希值,根据所述键的哈希值将所述键分成多份,将每份的键采用独立的平衡树进行存储;获取键的查询指令;根据所述查询指令从独立的平衡树中查找所述键。7.一种键值存储系统数据结构的实现装置,其特征在于,包括:数据获取模块,用于获取数据、数据的大小和数据结构类型;配置模块,用于每次配置固定大小的区块;存储模块,用于根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头...
【专利技术属性】
技术研发人员:肖涛,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。