【技术实现步骤摘要】
数据存储、查询方法和装置
本专利技术涉及计算机
,特别是涉及一种数据存储、查询方法和装置。
技术介绍
随着计算机技术的进步,计算机技术对人们的生活、工作产生了极大的影响,产生了大量的数据需要计算机存储和处理。目前,计算机所要存储的数据已经由原来的MB(兆字节)、GB(千兆字节)数量级,上升到了TB(万亿字节)、甚至PB(千万亿字节)数量级,面对数据的爆炸式增长,如何降低数据存储成本已成为人们急需解决的问题。传统的降低数据存储成本的手段,一般是直接对数据进行压缩处理后存储,然而,这种牺牲了计算时间来换取地存储空间的方式,降低了数据的使用效率,比如查询数据时必须将压缩的数据全部解压缩才能使用。
技术实现思路
基于此,有必要针对传统的压缩数据的方法降低了数据的使用效率的问题,提供一种数据存储方法和装置、数据查询方法和装置。一种数据存储方法,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述方法包括:根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。一种数据存储装置,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述装置包括:数据块生成模块,用于根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据 ...
【技术保护点】
一种数据存储方法,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述方法包括:根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。
【技术特征摘要】
1.一种数据存储方法,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述方法包括:根据所述原始数据标识对所述待存储数据进行聚类,将具有公共部分的原始数据标识对应的待存储数据作为一类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。2.根据权利要求1所述的方法,其特征在于,所述根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识,包括:将所述待存储数据的原始数据标识中第一预设位数的低位部分相同的待存储数据作为一类,每一类分别对应一个数据块,并将所述低位部分作为所述数据块的数据块标识。3.根据权利要求2所述的方法,其特征在于,所述根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区,包括:从所述数据块对应的待存储数据的原始数据标识中截去所述低位部分,获得压缩数据标识,并将所述压缩数据标识和所述压缩数据内容的地址标识对应存储于所述数据块的索引区。4.根据权利要求3所述的方法,其特征在于,所述从所述数据块对应的待存储数据的原始数据标识中截去所述低位部分,获得压缩数据标识,并将所述压缩数据标识和所述压缩数据内容的地址标识对应存储于所述数据块的索引区,包括:将所述数据块的原始数据标识中第二预设位数的高位部分相同的原始数据标识作为同一子类,每一子类的原始数据标识分别对应所述数据块的索引区中的每个数据桶,将所述高位部分作为所述数据桶的数据桶标识,并在所述数据块的索引区中存储所述数据桶标识和所述数据桶在所述索引区中的桶起始存储地址的对应关系;从所述数据块对应的待存储数据的原始数据标识中截去所述低位部分和所述高位部分,获得压缩数据标识,并将所述压缩数据标识存储在以所述高位部分作为数据桶标识的数据桶中;在所述数据块的索引区中存储与所述数据桶中存储的压缩数据标识对应的压缩数据内容的地址标识。5.根据权利要求4所述的方法,其特征在于,所述压缩数据内容的地址标识为所述压缩数据内容在所述数据区中的存储地址相对于所述数据区中起始存储地址的偏移量;所述在所述数据块的索引区中存储与所述数据桶中存储的压缩数据标识对应的压缩数据内容的地址标识,包括:在所述索引区中存储所述数据桶所对应的起始偏移量,以及所述数据桶中的压缩数据标识所对应的压缩数据内容的偏移量相对于所述起始偏移量的桶内偏移量。6.根据权利要求4所述的方法,其特征在于,所述压缩数据内容的地址标识为所述压缩数据内容在所述数据区中的存储地址相对于所述数据区中起始存储地址的偏移量;所述在所述数据块的索引区中存储与所述数据桶中存储的压缩数据标识对应的压缩数据内容的地址标识,包括:在所述索引区中存储所述数据桶所对应的压缩数据内容的起始偏移量,以及所述数据桶所对应的各个压缩数据内容的数据长度。7.根据权利要求4-6任意一项所述的方法,其特征在于,所述压缩数据标识在所述数据块的索引区的数据桶中按照所述压缩数据标识的数值大小升序或降序存储。8.根据权利要求1-6任意一项所述的方法,其特征在于,所述将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识,包括:将所述待存储数据的原始数据内容划分为数据单元,获得数据单元集合,计算每个所述数据单元在所述数据单元集合中的出现频率;根据所述数据单元的出现频率,为所述数据单元分配数据单元编码,并根据所述数据单元和所述数据单元编码的对应关系将所述数据块对应的待存储数据的原始数据内容按照数据单元进行编码,获得压缩数据内容;将所述压缩数据内容和记录所述数据单元和所述数据单元编码的对应关系的编码表存储于所述数据块的数据区,并获得所述压缩数据内容的地址标识。9.根据权利要求8所述的方法,其特征在于,所述根据所述数据单元的出现频率,为所述数据单元分配数据单元编码,包括:根据所述数据单元的出现频率,构造哈夫曼树,根据从所述哈夫曼树的根节点到叶子节点的路径生成数据单元编码;所述方法还包括:在所述数据块的数据区存储所述哈夫曼树。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:根据数据长度为预设长度的数据单元编码构造解码加速表,所述解码加速表中的每个数据单元编码映射到所述哈夫曼树中与所述解码加速表中的数据单元编码对应的叶子节点;将所述解码加速表中与长数据单元编码的预设长度的前缀相同的数据单元编码映射到哈夫曼树中所述长数据单元编码的前缀对应的节点;将所述解码加速表中前缀与短数据单元编码相同的数据单元编码映射到所述哈夫曼树中所述短数据单元编码对应的叶子节点;将所述解码加速表存储到所述数据块的数据区。11.一种数据查询方法,所述方法包括:获取原始查询数据标识;根据所述原始查询数据标识和预存的数据块标识确定所述原始查询数据标识所对应的数据块;根据所述数据块的索引区中的索引,获得与所述原始查询数据标识对应的地址标识;包括:截去所述原始查询数据标识的低位部分,获得压缩查询数据标识,获取所述数据块的索引区中存储的所述压缩查询数据标识对应的地址标识;根据所述地址标识从所述数据块的数据区获取压缩查询数据内容,解压缩所述压缩查询数据内容,获得查询数据内容。12.根据权利要求11所述的方法,其特征在于,所述根据所述原始查询数据标识和预存的数据块标识确定所述原始查询数据标识所对应的数据块,包括:确定与所述原始查询数据标识中第一预设位数的低位部分匹配的数据块标识对应的数据块。13.根据权利要求11所述的方法,其特征在于,所述截去所述原始查询数据标识的所述低位部分,获得压缩查询数据标识,获取所述数据块的索引区中存储的所述压缩查询数据标识对应的地址标识,包括:确定与所述原始查询数据标识的第二预设位数的高位部分匹配的数据桶标识;从所述数据块的索引区获取所述数据桶标识对应的数据桶在所述索引区中的桶起始存储地址;截去所述原始查询数据标识的所述高位部分和所述低位部分,获得压缩查询数据标识;根据所述数据桶在所述索引区中的桶起始存储地址,在所述数据桶中查找与所述压缩查询数据标识匹配的压缩数据标识;从所述索引区中获取与所述匹配的压缩数据标识对应的地址标识。14.根据权利要求13所述的方法,其特征在于,所述压缩数据内容的地址标识为所述压缩查询数据内容在所述数据区中的存储地址相对于所述数据区中起始存储地址的偏移量;所述从所述索引区中获取与所述匹配的压缩数据标识对应的地址标识,包括:从所述索引区中获取所述数据桶所对应的起始偏移量和所述匹配的压缩数据标识对应的桶内偏移量;根据所述起始偏移量和所述桶内偏移量计算所述查询数据内容的偏移量。15.根据权利要求13所述的方法,其特征在于,所述压缩数据内容的地址标识为所述压缩查询数据内容在所述数据区中的存储地址相对于所述数据区中起始存储地址的偏移量;所述从所述索引区中获取与所述匹配的压缩数据标识对应的地址标识,包括:从所述索引区中获取所述数据桶所对应的起始偏移量和所述数据桶中所述匹配的压缩数据标识以及所述匹配的压缩数据标识之前所有的压缩数据标识的数据长度;根据所述起始偏移量和所述获取的数据长度计算所述查询数据内容的偏移量。16.根据权利要求13-15任意一项所述的方法,其特征在于,在所述数据块的索引区的数据桶中的压缩数据标识按照所述压缩数据标识的数值大小升序或降序存储;所述在所述数据桶中查找与所述压缩查询数据标识匹配的压缩数据标识,包括:使用二分查找法在所述数据桶中查找与所述压缩查询数据标识匹配的压缩数据标识。17.根据权利要求11-15任意一项所述的方法,其特征在于,所述根据所述地址标识从所述数据块的数据区获取压缩查询数据内容,解压缩所述压缩查询数据内容,获得查询数据内容,包括:从所述数据区获取记录数据单元和数据单元编码的对应关系的编码表,根据所述编码表将包括数据单元编码的所述压缩查询数据内容进行解码,获得数据单元,根据所述数据单元获得查询数据内容。18.根据权利要求17所述的方法,其特征在于,所述从所述数据区获取记录数据单元和数据单元编码的对应关系的编码表,根据所述编码表将包括数据单元编码的所述压缩查询数据内容进行解码,获得数据单元,根据所述数据单元获得查询数据内容,包括:从所述数据区获取哈夫曼树与记录数据单元和数据单元编码的对应关系的编码表;根据所述哈夫曼树将所述压缩查询数据内容划分为数据单元编码,根据所述编码表获得与所述数据单元编码对应的数据单元;根据所述数据单元获得查询数据内容。19.根据权利要求18所述的方法,其特征在于,所述从所述数据区获取哈夫曼树与记录数据单元和数据单元编码的对应关系的编码表;根据所述哈夫曼树将所述压缩查询数据内容划分为数据单元编码,根据所述编码表获得与所述数据单元编码对应的数据单元;根据所述数据单元获得查询数据内容,包括:从所述数据区获取哈夫曼树、解码加速表与记录数据单元和数据单元编码的对应关系的编码表;其中,所述解码加速表包括多个预设长度的数据单元编码,所述解码加速表中的每个数据单元编码映射到所述哈夫曼树中与所述解码加速表中的数据单元编码对应的叶子节点;所述解码加速表中与长数据单元编码的预设长度的前缀相同的数据单元编码映射到哈夫曼树中所述长数据单元编码的前缀对应的节点;所述解码加速表中前缀与短数据单元编码相同的数据单元编码映射到所述哈夫曼树中所述短数据单元编码对应的叶子节点;使用读取指针从所述压缩查询数据内容的起始存储地址开始读取所述预设长度的编码数据,使用所述解码加速表将所述编码数据映射到所述哈夫曼树中的节点;若所述编码数据映射的节点为叶子节点,则根据所述编码表解码获得所述叶子节点对应的数据单元,并将所述读取指针向背离所述压缩查询数据内容的起始存储地址的方向移动与所述叶子节点的深度对应的距离后,继续读取预设长度的编码数据,直至解码获得所述查询数据内容或所述查询数据内容中预设形式的部分数据;若所述编码数据映...
【专利技术属性】
技术研发人员:张元龙,林汇宝,
申请(专利权)人:深圳市腾讯计算机系统有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。