一种数据存储与查询的方法、系统及存储引擎装置制造方法及图纸

技术编号:11214880 阅读:83 留言:0更新日期:2015-03-27 01:54
本发明专利技术公开了一种数据存储与查询的方法,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;其中,数据存储方法包括:将接收到的原始数据文件按相似特征(如手机号段)划分成多个子数据文件;依次读取子数据文件中的每条数据,根据每条数据中的信息生成与所述每条数据对应的索引身份标识号码(ID),并根据所述索引ID查询索引树,获取与所述索引ID对应的数据块号,并将所述每条数据逐条存储到相应的数据块中。本发明专利技术还同时公开了一种数据存储与查询的系统及存储引擎装置。采用本发明专利技术,节约了大量的存储空间,降低了数据读取时计算机内存与外部存储的输入输出(IO)量。

【技术实现步骤摘要】
一种数据存储与查询的方法、系统及存储引擎装置
本专利技术涉及通信及计算机领域数据存储技术,尤其涉及一种数据存储与查询的方法、系统及存储引擎装置。
技术介绍
目前,存储数据可以采用数据库、文件系统等方式,在现有的数据存储方式中,数据是存储在数据库或文件系统划分的数据块中的。数据在存入数据块时,通过相关的存储管理算法实现存储,且数据记录是按行随机存放的,查询时通过构造的索引进行查询。以数据库为例,数据库的相关逻辑结构如图1所示,显然,在图1中,数据是按行存储的,索引中存储了行身份标识号码(ID,Identity),其中,所述行ID是唯一标志记录物理位置的ID。在进行常规表访问时,通过从索引里面找到的记录的行ID去查表,进而找到所要查找的数据。 但是,由于现有的数据存储方法使每个数据块中存储的数据是无规律的,因此,至少存在以下问题: 1、相似的数据存储于不同的数据块中。比如,一个用户某月的通用无线分组业务(General Packet Rad1 Service,GPRS)话单存储在多个数据块中,会造成块级数据冗余,消耗大量的存储空间;即使采用Oracle数据库的块级压缩技术进行去冗,也会因相似的数据存储在不同的块中而导致数据去冗率大大低于传统的数据字典去冗方法,海量数据消耗的存储空间依然巨大。 2、现有数据库或文件系统的存储结构影响了查询性能。如果进行多行数据的查询,则需要将存储相关数据的数据块全部找出;如查询1000条数据记录,最坏的情况下需要读取1000个数据块进行解析,这大大增加了系统的输入/输出(Input/Output,10)量。
技术实现思路
有鉴于此,本专利技术实施例的主要目的在于提供一种数据存储与查询的方法、系统及存储引擎装置,能节约大量的存储空间,降低数据读取时的1量。 为达到上述目的,本专利技术的技术方案是这样实现的: 本专利技术提供了一种数据存储方法,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;所述方法还包括: 将接收到的原始数据文件划分成多个子数据文件; 依次读取子数据文件中的每条数据,根据每条数据中的信息生成与所述每条数据对应的索引身份标识号码ID,并根据所述索引ID查询索引树,获取与所述索引ID对应的数据块号,并将所述每条数据逐条存储到相应的数据块中。 优选地,所述索引块头中至少存储有数据块记录开始地址、数据块记录结束地址、以及数据块前映像地址; 所述索引块本体包括第一信息、第二信息、第二信息标识、开始数据块号和结束数据块号。 优选地,所述至少一个压缩槽对应一个压缩值段;在所述数据块头中还设置有存储下一个数据块地址的存储槽; 其中,所述压缩槽至少包括字段标识、字段长度和压缩值偏移地址;所述压缩值段用于存储所述至少一个压缩槽所对应的具体字段内容。 优选地,所述根据每条数据中的信息生成与所述每条数据对应的索引ID为:根据所述每条数据的第一信息和/或第二信息生成索引ID ; 所述将每条数据逐条存储到相应的数据块中包括:判断所述数据块是否有可用存储空间,如果有可用存储空间,则将所述每条数据存储到所述数据块中;如果没有可用存储空间,则将所述每条数据存储到新分配的数据块中,同时在当前数据块的存储槽中记录新分配的数据块地址,并将索引块中存储的地址更新为指向新分配的数据块。 优选地,将所述每条数据存储到所述数据块中,包括: 判断当前字段值是否等于压缩槽所对应的相关字段值,如果等于,则将所述当前字段值存储为相关压缩值的指针;如果不等于,则判断是否还有未占用的压缩槽,如果有,则将所述当前字段值存储到压缩槽中,并将当前字段值存储为相关压缩值的指针;如果没有,则直接进行存储。 优选地,所述方法还包括: 在数据块中有未占用的压缩槽时,将重复率大于设定阈值的字段存储到压缩槽中。 本专利技术还提供了一种数据查询方法,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;所述方法还包括: 接收到查询指示时,根据索引ID定位所述索引ID对应的开始数据块号,依次读取开始数据块号至结束数据块号的数据。 优选地,所述索引块头中至少存储有数据块记录开始地址、数据块记录结束地址、以及数据块前映像地址; 所述索引块本体包括第一信息、第二信息、第二信息标识、开始数据块号和结束数据块号。 优选地,所述至少一个压缩槽对应一个压缩值段;在所述数据块头中还设置有存储下一个数据块地址的存储槽; 其中,所述压缩槽至少包括字段标识、字段长度和压缩值偏移地址;所述压缩值段用于存储所述至少一个压缩槽所对应的具体字段内容。 优选地,所述方法还包括: 在索引块或数据块处于修改状态时,接收到查询指示后,读取相应的数据块前映像地址对应的数据。 本专利技术还提供了一种存储引擎装置,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;所述存储引擎装置包括读取模块、获取模块、存储模块;其中, 所述读取模块,用于依次读取子数据文件中的每条数据; 所述获取模块,用于根据生成的索引ID查询索引树,获取与所述索引ID对应的数据块号; 所述存储模块,用于将所述每条数据逐条存储到相应的数据块中。 优选地,所述存储引擎装置还包括索引ID生成模块和判定模块;其中, 所述索引ID生成模块,用于根据所述每条数据中的信息生成索引ID ; 所述判定模块,用于判断所述数据块是否有可用存储空间;如果有可用存储空间,判定将所述每条数据存储到所述数据块中;如果没有可用存储空间,判定将所述每条数据存储到新分配的数据块中,同时在当前数据块的存储槽中记录新分配的数据块地址,并将索引块中存储的地址更新为指向新分配的数据块。 优选地,所述判定模块,还用于在判定将所述每条数据存储到所述数据块中时,判断当前字段值是否等于压缩槽所对应的相关字段值,如果等于,则判定将所述当前字段值存储为相关压缩值的指针;如果不等于,则判断是否还有未占用的压缩槽,如果有,则判定将所述当前字段值存储到压缩槽中,并将当前字段值存储为相关压缩值的指针;如果没有,则判定直接进行存储。 优选地,所述存储模块,还用于在数据块中有未占用的压缩槽时,将重复率大于设定阈值的字段存储到压缩槽中。 本专利技术还提供了一种数据存储与查询的系统,所述系统包括拆分装置、存储引擎装置和查询引擎装置;其中, 所述存储引擎装置为上文所述的存储引擎装置; 所述拆分装置,用于将接收到的原始数据文件划分成多个子数据文件; 所述查询引擎装置,用于接收到查询指示时,根据索引ID定位与所述索引ID对应的开始数据块号,依次读取开始数据块号至结束数据块号的数据;在索引块或数据块处于修改状态时,接收到查询指示后,读取相应的数据块前映像地址对应的数据。 本专利技术实施例所提供的数据存储与查询的方法、系统及存储引擎装置,通过设计有效的索引块存储结构、特定格式的数据块存储结构,能有序、高效地存储数据和压缩数据,节约了大量的存储空间,同时实现了随机查询数据功能,降低了数据读取时的1量。另外,可以采用常规的压缩算法进一步压缩所存储的数据本文档来自技高网
...
一种数据存储与查询的方法、系统及存储引擎装置

【技术保护点】
一种数据存储方法,其特征在于,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;所述方法还包括:将接收到的原始数据文件划分成多个子数据文件;依次读取子数据文件中的每条数据,根据每条数据中的信息生成与所述每条数据对应的索引身份标识号码ID,并根据所述索引ID查询索引树,获取与所述索引ID对应的数据块号,并将所述每条数据逐条存储到相应的数据块中。

【技术特征摘要】
1.一种数据存储方法,其特征在于,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;所述方法还包括: 将接收到的原始数据文件划分成多个子数据文件; 依次读取子数据文件中的每条数据,根据每条数据中的信息生成与所述每条数据对应的索引身份标识号码ID,并根据所述索引ID查询索引树,获取与所述索引ID对应的数据块号,并将所述每条数据逐条存储到相应的数据块中。2.根据权利要求1所述的方法,其特征在于,所述索引块头中至少存储有数据块记录开始地址、数据块记录结束地址、以及数据块前映像地址; 所述索引块本体包括第一信息、第二信息、第二信息标识、开始数据块号和结束数据块号。3.根据权利要求1所述的方法,其特征在于,所述至少一个压缩槽对应一个压缩值段;在所述数据块头中还设置有存储下一个数据块地址的存储槽; 其中,所述压缩槽至少包括字段标识、字段长度和压缩值偏移地址;所述压缩值段用于存储所述至少一个压缩槽所对应的具体字段内容。4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据每条数据中的信息生成与所述每条数据对应的索引ID为:根据所述每条数据的第一信息和/或第二信息生成索引ID ; 所述将每条数据逐条存储到相应的数据块中包括:判断所述数据块是否有可用存储空间,如果有可用存储空间,则将所述每条数据存储到所述数据块中;如果没有可用存储空间,则将所述每条数据存储到新分配的数据块中,同时在当前数据块的存储槽中记录新分配的数据块地址,并将索引块中存储的地址更新为指向新分配的数据块。5.根据权利要求4所述的方法,其特征在于,将所述每条数据存储到所述数据块中,包括: 判断当前字段值是否等于压缩槽所对应的相关字段值,如果等于,则将所述当前字段值存储为相关压缩值的指针;如果不等于,则判断是否还有未占用的压缩槽,如果有,则将所述当前字段值存储到压缩槽中,并将当前字段值存储为相关压缩值的指针;如果没有,则直接进行存储。6.根据权利要求5所述的方法,其特征在于,所述方法还包括: 在数据块中有未占用的压缩槽时,将重复率大于设定阈值的字段存储到压缩槽中。7.一种数据查询方法,其特征在于,在数据块存储结构中,数据块头中预留有至少一个压缩槽;在索引块存储结构中,索引块包括索引块头和索引块本体;所述方法还包括: 接收到查询指示时,根据索引ID定位所述索引ID对应的开始数据块号,依次读取开始数据块号至结束数据块号的数据。8.根据权利要求7所述的方法,其特征在于,所述索引块头中至少存储有数据块记录开始地址、数据块记录结束地址、以及数据块前映像地址; 所述索引块本体包括第一信息、第二信息、第二信息标识、开始数...

【专利技术属性】
技术研发人员:王凡陈乐君钟全龙谭正
申请(专利权)人:中国移动通信集团重庆有限公司
类型:发明
国别省市:重庆;85

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

1