数据的存储方法及装置的制作方法

文档序号:6362978阅读:312来源:国知局
专利名称:数据的存储方法及装置的制作方法
技术领域
本发明涉及数据存储技术,尤其是一种数据的存储方法及装置。
背景技术
目前能支持存取有灵活数据字段(Schema-Flexible)的数据记录的存储格式,均是把每个字段的字段名及其存储的数据字段的类型信息都包含在记录内。由此导致的数据记录中可以有自定义的字段数据,并能被正确地检索出来。但实际工作中,同一个数据集内存储完全不一致的数据记录或字段非常灵活多变的数据字段的场景很少。因此与数据字段内容同步存储其字段名的方式会带来以下问题I.大量相类似的数据记录中,重复的字段名很长占用较大的存储空间,一旦存储大量数据,字段名的存储会消耗大量的存储空间,对资源造成浪费;2.字段名为避免重复或具有特殊的含义,往往会被定义的很长,在对该数据字段的读取过程中,字段名的检索操作占据了整个读取过程的大部分时间,这极大地降低了读取的效率。公开号为CN 1503147A的中国专利,公开了一种数据库中对象关系的处理方法, 简化了数据库中对象之间关系的管理流程,减小了数据库维护的工作量。但是如何降低对存储资源的消耗,且提高数据的查询效率成为目前亟待解决的问
题之一。

发明内容
本发明解决的问题是降低对存储资源的消耗,且提高数据的查询效率。为解决上述问题,本发明提供了一种数据的存储方法,包括获取数据,所述数据包括字段,所述字段包括字段名和数据内容;对所述字段名进行标识;建立所述字段名的索引,所述索引包括所述标识与该字段的数据内容的映射关系;将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区。为解决上述问题,本发明还提供了一种数据的存储装置,包括获取单元,用以获取数据,所述数据包括字段,每个字段包括字段名和数据内容;标识单元,用以对所述字段名进行标识;索引单元,用以建立所述字段名的索引,所述索引包括所述标识与该字段的数据内容的映射关系;记录单元,用以将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区。与现有技术相比,本发明具有以下优点
配合唯一的数据实体Schema定义,避免每次都传递大量冗余的字段名到后端存储,起到了数据内容压缩的效果。与元数据定义相配合,依然支持用字段名读取属性内容,且在后端查询时,避免用字段名去匹配查询(用编号直接定位字段所在存储位置),大大提高原来查询时寻址的效率。总体的读取,展开效率大大提高。对字段名进行标识,并设置所述标识与该字段的数据内容的映射关系。不再存储字段名不仅可以节省存储空间,起到数据压缩的效果,而且简化了对数据读取的时间,提高了效率。上述映射关系以索引的形式建立并存储,依据映射关系查找该标识(字段名)的数据内容。这依然支持用字段名读取属性内容,且在后端查询时,避免用字段名去匹配查询的时间,不仅速度快而且定位准确,不易出错。字段的数据内容还可以嵌套下一级的字段,这种存储方式可以很好的体现数据之间的包含关系,且下一级的字段的存储方式与上一级的字段的存储方式相同。查询下一级的字段时,先获取整个下一级的字段,再获取下一级的字段的数据内容的,这种总体的读取,展开效率大大提高,读取方便且快捷。


图I是本发明实施例提供的数据的存储方法的流程图;图2是本发明实施例提供的数据的示意图;图3是本发明实施例提供的数据的存储装置的结构示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式
的限制。图I是本发明实施例提供的数据的存储方法的流程图,下面结合图I详细说明。步骤SI,获取数据,所述数据包括字段,所述字段包括字段名和数据内容;步骤S2,对所述字段名进行标识;步骤S3,建立所述字段名的索引,所述索引包括所述标识与该字段的数据内容的映射关系;步骤S4,将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区。所述步骤SI中,数据(也可以称为Schema,数据实体或元数据)中可以包括多个字段,每个字段包含字段名和该字段的数据内容,数据内容也称为该字段的值。所述字段还包括该字段的数据内容的数据类型和该字段的数据内容的长度,所述该字段的数据内容的数据类型(也可以简称为字段的类型)通常为string,int,double等数据类型。该字段的数据内容的长度(也可以简称为字段的长度),通常以字节为单位,也可以是其他单位。所述数据类型可以分为第一类型和第二类型。所述字段的数据内容的数据类型属于第一类型,该字段的数据内容的长度固定。例如,int型,该数据类型的字段的数据内容的长度固定为4字节,long型,该数据类型的字段的数据内容的长度固定为8字节。所述字段的数据内容的数据类型属于第二类型,该字段的数据内容的长度不固定。例如,string 型,该数据类型的字段的数据内容的长度随着数据内容的变化而变化,若string型的字段的数据内容为“ 123”,其长度为3,若string型的字段的数据内容为“ 123456”,其长度为6 ; 二进制型,该数据类型的字段的数据内容的长度也是随着数据内容的变化而变化的。所述字段的数据内容中还可以嵌套字段(也称为该字段的下一级字段),也就是说,数据内容可以是简单的数值、文本还可以是复杂的字段。数据内容中嵌套的字段,也是具有字段名、数据内容的,还可以具有类型和长度。另外,数据内容中嵌套的字段的数据内容还可以再嵌套字段,也就是说,数据内容也是多层的嵌套结构。数据内容中嵌套的字段的数目可以是一个也可以是多个,嵌套的层数可以是多层,也可以是单层。在实际设计中,数据内容中嵌套的还可以是其他结构。图2是本发明实施例提供的数据的示意图,参考图2所示的数据10。数据10包含三个字段,分别为姓名字段、年龄字段和地址字段,每个字段具有各自的字段名、数据内容、 类型和长度。其中姓名字段的字段名为name,该字段的数据内容为Tom,类型为string,长度为3 ;年龄字段的字段名为age,该字段的数据内容为20,类型为int,长度为4 ;地址字段的字段名为address,地址字段为一个嵌套的字段,其数据内容中还嵌套有两个字段,因此地址字段的类型可以为空,长度为其数据内容中包含的字段的长度的和,本实施例中,地址字段的数据内容中包含两个字段,分别为省份字段和城市字段,这两个字段的数据内容相同均为shanghai,类型也相同均为string,长度也相同都是8,根据省份字段和城市字段的长度可以得出地址字段的长度,地址字段的长度为省份字段和城市字段的长度的和,具体的为16。所述步骤S2中,设置字段名的标识,所述标识对应该字段的数据内容和该字段的数据内容的数据类型。所述字段的字段名可以以数字顺序进行标识。字段的数据内容以类似数组的形式保存。所述步骤S3中,所述索引包括所述标识与该字段的数据内容的映射关系,但是不再保存字段的字段名或标识。所述步骤S4中,将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区,在实际操作中,所述数据记录还包括该数据记录的长度、包含的字段的个数和结束符。具体的,所述标识与该字段的数据内容的映射关系为该字段的数据内容或该字段的数据内容在该数据记录的数据存储区中存储地址相对于所述数据存储区的首地址的偏移量。具体的可以是,若所述字段的数据内容的数据类型属于所述第一类型,且所述长度小于或等于预定长度,则所述标识与该字段的数据内容的映射关系为该字段的数据内容;若所述字段的数据内容的数据类型属于所述第一类型,且所述长度大于所述预定长度或者所述字段的数据内容的数据类型属于所述第二类型,则所述标识与该字段的数据内容的映射关系为该字段的数据内容在该数据记录的数据存储区中存储地址相对于所述数据存储区的首地址的偏移量。所述预定长度可以为所述映射关系的长度,每个字段的映射关系的长度相等,且每个字段的映射关系连续排列在所述索引中。举例来讲,所述预定长度为4字节,若所述字段的数据内容的数据类型为int型, int型为第一类型,该字段的数据内容的长度固定为4字节,等于所述预定长度,则该字段的数据内容保存在索引区;若所述字段的数据内容的数据类型为long型,long型为第一类型,该字段的数据内容的长度固定为8字节,大于所述预定长度,则该字段的数据内容保存在数据存储区;若所述字段的数据内容的数据类型为string型,string型为第二类型,该字段的数据内容的长度不固定,则该字段的数据内容保存在数据存储区。下面以一个具体实例说明本发明的技术方案存储数据的方法。CSONArray的数据结构定义如下表I,其中CSONArray表示一条数据记录, CSONArray也可以称为CSON数据段。表I
权利要求
1.一种数据的存储方法,其特征在于,包括获取数据,所述数据包括字段,所述字段包括字段名和数据内容;对所述字段名进行标识;建立所述字段名的索引,所述索引包括所述标识与该字段的数据内容的映射关系;将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区。
2.如权利要求I所述的数据的存储方法,其特征在于,所述数据记录还包括该数据记录的长度、包含的字段的个数和结束符。
3.如权利要求I所述的数据的存储方法,其特征在于,所述字段还包括该字段的数据内容的数据类型、该字段的数据内容的长度;所述数据类型分为第一类型和第二类型,所述字段的数据内容的数据类型属于所述第一类型,该字段的数据内容的长度固定,所述字段的数据内容的数据类型属于所述第二类型,该字段的数据内容的长度不固定。
4.如权利要求3所述的数据的存储方法,其特征在于,所述标识与该字段的数据内容的映射关系为该字段的数据内容或该字段的数据内容在该数据记录的数据存储区中存储地址相对于所述数据存储区的首地址的偏移量。
5.如权利要求4所述的数据的存储方法,其特征在于,若所述字段的数据内容的数据类型属于所述第一类型,且所述长度小于或等于预定长度,则所述标识与该字段的数据内容的映射关系为该字段的数据内容;若所述字段的数据内容的数据类型属于所述第一类型,且所述长度大于所述预定长度或者所述字段的数据内容的数据类型属于所述第二类型,则所述标识与该字段的数据内容的映射关系为该字段的数据内容在该数据记录的数据存储区中存储地址相对于所述数据存储区的首地址的偏移量。
6.如权利要求5所述的数据的存储方法,其特征在于,所述预定长度为所述映射关系的长度,每个字段的映射关系的长度相等,且每个字段的映射关系连续排列在所述索引中。
7.如权利要求I所述的数据的存储方法,其特征在于,所述数据内容嵌套至少一个字段,每个字段包括该字段的字段名和该字段的数据内容。
8.一种数据的存储装置,其特征在于,包括获取单元,用以获取数据,所述数据包括字段,每个字段包括字段名和数据内容;标识单元,用以对所述字段名进行标识;索引单元,用以建立所述字段名的索引,所述索引包括所述标识与该字段的数据内容的映射关系;记录单元,用以将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区。
9.如权利要求8所述的数据的存储装置,其特征在于,所述记录单元还将所述数据记录的长度、包含的字段的个数和结束符保存在数据记录中。
10.如权利要求8所述的数据的存储装置,其特征在于,所述字段还包括该字段的数据内容的数据类型、该字段的数据内容的长度;所述数据类型分为第一类型和第二类型,所述字段的数据内容的数据类型属于所述第一类型,该字段的数据内容的长度固定,所述字段的数据内容的数据类型属于所述第二类型,该字段的数据内容的长度不固定。
11.如权利要求10所述的数据的存储装置,其特征在于,所述标识与该字段的数据内容的映射关系为该字段的数据内容或该字段的数据内容在该数据记录的数据存储区中存储地址相对于所述数据存储区的首地址的偏移量。
12.如权利要求11所述的数据的存储装置,其特征在于,若所述字段的数据内容的数据类型属于所述第一类型,且所述长度小于或等于预定长度,则所述索引单元建立的索引中包括的所述标识与该字段的数据内容的映射关系为该字段的数据内容;若所述字段的数据内容的数据类型属于所述第一类型,且所述长度大于所述预定长度或者所述字段的数据内容的数据类型属于所述第二类型,则所述索引单元建立的索引中包括的所述标识与该字段的数据内容的映射关系为该字段的数据内容在该数据记录的数据存储区中存储地址相对于所述数据存储区的首地址的偏移量。
13.如权利要求12所述的数据的存储装置,其特征在于,所述预定长度为所述映射关系的长度,每个字段的映射关系的长度相等,且每个字段的映射关系连续排列在所述索引中。
14.如权利要求8所述的数据的存储装置,其特征在于,所述数据内容嵌套至少一个字段,每个字段包括该字段的字段名和该字段的数据内容。
全文摘要
一种数据的存储方法及装置,所述数据的存储方法包括获取数据,所述数据包括字段,所述字段包括字段名和数据内容;对所述字段名进行标识;建立所述字段名的索引,所述索引包括所述标识与该字段的数据内容的映射关系;将所述字段名的索引及所述字段的数据内容保存为数据记录,所述数据记录包括存储所述索引的索引区和存储所述数据内容的数据存储区。本发明的技术方案可以降低对存储资源的消耗,且提高数据的查询效率。
文档编号G06F17/30GK102609452SQ201210007568
公开日2012年7月25日 申请日期2012年1月11日 优先权日2012年1月11日
发明者虞钢 申请人:上海西本网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1