[发明专利]一种数据处理方法及装置有效
申请号: | 201811198259.6 | 申请日: | 2018-10-15 |
公开(公告)号: | CN109460406B | 公开(公告)日: | 2021-03-23 |
发明(设计)人: | 李翰;黄斐一;李琳;邹易展 | 申请(专利权)人: | 咪咕文化科技有限公司;中国移动通信集团有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 北京派特恩知识产权代理有限公司 11270 | 代理人: | 张荣;张颖玲 |
地址: | 100032 北京市西城区德*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据处理 方法 装置 | ||
本发明公开了一种数据处理方法,所述方法包括:接收针对键‑值数据的存储请求;基于所述存储请求,提取所述键‑值数据中的键值和数据值;将所述键值的哈希值和所述数据值分别以数据块的形式进行存储,且单个键值块与单个数据值块的存储长度相同,且所述哈希值的长度小于等于所述键值块和/或所述数据值块可存储数据的长度。本发明还提供一种数据处理装置。
技术领域
本发明涉及数据处理技术,尤其涉及一种数据的处理方法及装置。
背景技术
小型的嵌入式设备,对内存(ram)空间及数据存储(rom)空间要求比较苛刻,这就有两点要求:
1、用于数据操作的可执行文件应尽量小;
2、用于存储数据的文件应尽量小;另外考虑到易用性,用于数据存储的文件数量应该尽量少,最理想情况,只用单文件实现数据的存储。
现有技术方案,采用按行存储的形式存储键-值对(K-V,Key-Value)数据,即:每行按一定格式存储一对k-v值。
现有技术存在的问题在于:在进行数据修改时,若修改键-值数据中的键值(K1),且新的K1数据比旧的K1数据长,则需要将旧的K1数据后面的所有数据整体后移,否则新插入的K1数据将覆盖其他键值数据;而在进行数据删除时,若删除了尾行的其他行的数据,则文件中会存在数据空洞,造成存储文件的浪费,为了不浪费文件的存储空间,需要把空洞后面的所有数据整体前移动;而在进行数据查找时,只能针对数据进行逐行查找,导致数据查找时间长、复杂度较高、查找效率低。
发明内容
为解决上述技术问题,本发明实施例提供了一种数据的处理方法及装置。
本发明实施例的技术方案是这样实现的:
根据本发明实施例中的一方面,提供一种数据处理方法,所述方法包括:
接收针对键-值数据的存储请求;
基于所述存储请求,提取所述键-值数据中的键值和数据值;
将所述键值的哈希值和所述数据值分别以数据块的形式进行存储,且单个键值块与单个数据值块的存储长度相同,且所述哈希值的长度小于等于所述键值块和/或所述数据值块可存储数据的长度。
上述方案中,所述方法还包括:
当所述数据值的存储长度大于单个数据块的存储长度时,将所述数据值以多个数据块的形式进行存储;其中,用于存储所述数据值的所述多个数据块之间通过块的索引值进行关联。
上述方案中,所述方法还包括:
每个键值块的索引关联以形成一颗平衡二叉树结构;
当插入新的键-值数据时,所述平衡二叉树结构中左节点的哈希值小于等于根节点的哈希值和右节点的哈希值,且所述根节点的哈希值小于等于所述右节点的哈希值,以保持所述平衡二叉树结构的有序性;任意一个根的左子树和右子树的高度差值小于等于2,以保持所述平衡二叉树结构的平衡性。
上述方案中,所述方法还包括:
基于所述键值块中的块头索引值,查找与所述键值块对应的数据值块,其中所述块头索引值用于存储所述数据值块的块链索引值;
和/或,基于所述数据值块中关联的块的索引值,查找与所述数据值块对应的前驱块或后继块的块索引值。
上述方案中,所述方法还包括:
在存储所述键-值数据的块链表中检测空块状态;
当所述空块状态表征所述块链表中无空块时,将所述键值的数据和所述数据值的数据分别以数据块的形式存储于所述块链表的预设存储位置;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于咪咕文化科技有限公司;中国移动通信集团有限公司,未经咪咕文化科技有限公司;中国移动通信集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811198259.6/2.html,转载请声明来源钻瓜专利网。