数据存储、查询方法和装置制造方法及图纸

技术编号:11527580 阅读:61 留言:0更新日期:2015-05-30 23:35
本发明专利技术提供了一种数据存储方法,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述方法包括:根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。本发明专利技术提供的数据存储方法,极大地提高了数据的使用效率。本发明专利技术还提供了一种数据存储装置、一种数据查询方法和一种数据查询装置。

【技术实现步骤摘要】
数据存储、查询方法和装置
本专利技术涉及计算机
,特别是涉及一种数据存储、查询方法和装置。
技术介绍
随着计算机技术的进步,计算机技术对人们的生活、工作产生了极大的影响,产生了大量的数据需要计算机存储和处理。目前,计算机所要存储的数据已经由原来的MB(兆字节)、GB(千兆字节)数量级,上升到了TB(万亿字节)、甚至PB(千万亿字节)数量级,面对数据的爆炸式增长,如何降低数据存储成本已成为人们急需解决的问题。传统的降低数据存储成本的手段,一般是直接对数据进行压缩处理后存储,然而,这种牺牲了计算时间来换取地存储空间的方式,降低了数据的使用效率,比如查询数据时必须将压缩的数据全部解压缩才能使用。
技术实现思路
基于此,有必要针对传统的压缩数据的方法降低了数据的使用效率的问题,提供一种数据存储方法和装置、数据查询方法和装置。一种数据存储方法,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述方法包括:根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。一种数据存储装置,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述装置包括:数据块生成模块,用于根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;原始数据内容压缩模块,用于将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;索引生成模块,用于根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。上述数据存储方法和装置,将待存储数据进行聚类后,每一类待存储数据分别对应一个数据块,并根据数据块对应的待存储数据的原始数据标识生成数据块标识,而数据块包括索引区和数据区,数据区存储了压缩数据内容,索引区存储了根据原始数据标识和数据区中压缩数据内容的地址标识生成的索引。查询数据时,可以直接根据查询数据标识确定查询数据所在的数据块,根据数据块中的索引获得查询数据内容的地址标识,从而可以根据该地址标识从数据区中获取压缩查询数据内容,解压缩后便可获得压缩查询数据内容。既可以达到很好的压缩效果,减少存储数据所占的空间,又能快速定位数据所在位置,实现快速查询数据,而无需将所有压缩数据解压缩,极大地提高了数据的使用效率。一种数据查询方法,所述方法包括:获取原始查询数据标识;根据所述原始查询数据标识和预存的数据块标识确定所述原始查询数据标识所对应的数据块;根据所述数据块的索引区中的索引,获得与所述原始查询数据标识对应的地址标识;根据所述地址标识从所述数据块的数据区获取压缩查询数据内容,解压缩所述压缩查询数据内容,获得查询数据内容。一种数据查询装置,所述装置包括:原始查询数据标识获取模块,用于获取原始查询数据标识;数据块确定模块,用于根据所述原始查询数据标识和预存的数据块标识确定所述原始查询数据标识所对应的数据块;地址标识获取模块,用于根据所述数据块的索引区中的索引,获得与所述原始查询数据标识对应的地址标识;查询数据内容获取模块,用于根据所述地址标识从所述数据块的数据区获取压缩查询数据内容,解压缩模块,用于解压缩所述压缩查询数据内容,获得查询数据内容。上述数据查询方法和装置,获取原始查询数据标识后,通过该原始查询数据标识和预存的数据块标识可以确定原始查询数据标识所对应的数据块,则确定了查询数据所在的数据块,从数据块中的索引区中获得与原始查询数据标识对应的地址标识,从而根据该地址标识可以从数据块中的数据区获取压缩查询数据内容,将压缩查询数据内容解压缩便可获得查询数据内容。可快速定位数据所在位置,实现快速检索,而无需将所有压缩数据解压缩,极大地提高了数据的使用效率。附图说明图1为一个实施例中数据存储方法的流程示意图;图2为一个实施例中从数据块对应的待存储数据的原始数据标识中截去低位部分,获得压缩数据标识,并将压缩数据标识和压缩数据内容的地址标识对应存储于数据块的索引区的步骤的流程示意图;图3为一个实施例中将数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在数据块的数据区,并获得压缩数据内容的地址标识的步骤的流程示意图;图4为一个实施例中生成解码加速表的步骤的流程示意图;图5为一个具体应用场景中数据块的结构框图;图6为一个实施例中数据查询方法的流程示意图;图7为一个实施例中截去原始查询数据标识的低位部分,获得压缩查询数据标识,获取数据块的索引区中存储的压缩查询数据标识对应的地址标识的步骤的流程示意图;图8为一个具体应用场景中哈夫曼树和解码加速表的示意图;图9为一个实施例中数据存储装置的结构框图;图10为一个实施例中索引生成模块的结构框图;图11为一个实施例中原始数据内容压缩模块的结构框图;图12为另一个实施例中数据存储装置的结构框图;图13为一个实施例中数据查询装置的结构框图;图14为一个实施例中地址标识获取模块的结构框图;图15为一个实施例中第一获取模块的结构框图;图16为另一个实施例中第一获取模块的结构框图;图17为一个实施例中查询数据内容获取模块的结构框图;图18为一个实施例中能实现本专利技术实施例的一个计算机系统的模块图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。可以理解,本专利技术所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本专利技术的范围的情况下,可以将第一预设位数称为第二预设位数,且类似地,可将第二预设位数称为第一预设位数。第一预设位数和第二预设位数两者都是预设位数,但其不是同一预设位数。除非上下文另有特定清楚的描述,本专利技术中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本专利技术并不对此进行限定。本专利技术中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。如图1所示,在一个实施例中,提供了一种数据存储方法,该方法包括:步骤102,根据原始数据标识对待存储数据进行聚类,每一类分别对应一个数据块,并根据数据块对应的待存储数据的原始数据标识生成数据块标识。待存储数据包括原始数据标识和与原始数据标识对应的原始数据内容。“原始”表示数据原本的状态,未经压缩或其它处理。原始数据标识可以是待存储数据的键(key),可用于区分不同的待存储数据。对待存储数据进行聚类,可以本文档来自技高网...

【技术保护点】
一种数据存储方法,待存储数据包括原始数据标识和与所述原始数据标识对应的原始数据内容,所述方法包括:根据所述原始数据标识对所述待存储数据进行聚类,每一类分别对应一个数据块,并根据所述数据块对应的待存储数据的原始数据标识生成数据块标识;将所述数据块对应的待存储数据的原始数据内容进行压缩,将压缩数据内容存储在所述数据块的数据区,并获得所述压缩数据内容的地址标识;根据所述数据块对应的待存储数据的原始数据标识和所述地址标识生成索引,并将所述索引存储于所述数据块的索引区。

【技术特征摘要】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1