一种数据存储、查找方法及装置制造方法及图纸

技术编号:12527081 阅读:78 留言:0更新日期:2015-12-17 22:00
本申请公开了一种数据存储、查找方法及装置,其中存储方法包括:对若干个kv数据对按照k值升序或降序的方式进行排序整理,得到有序数据,按照排序顺序,将有序数据中各kv数据对进行分组,将各分组内kv数据对的v值存储在与各分组唯一对应的数据文件中,将各分组内kv数据对的k值,以及与k值对应的v值在所述数据文件中的位置信息,存储在与各分组唯一对应的索引文件中,其中,与各分组唯一对应的数据文件和索引文件的名称相同,最后采用内存映射方式,将数据文件和索引文件映射到服务器内存中,得到内存映射数据。本申请采用内存映射方式,无需将所有kv数据读取到内存中,降低了初始化耗时、减少了对服务器内存的占用。

【技术实现步骤摘要】

本申请涉及数据处理
,更具体地说,涉及一种数据存储、查找方法及装置
技术介绍
kv是key-value的简称,是指计算机数据结构中,采用一个键值对应一个数据值的数据表示方法。现有的kv数据查询方式一般都是,首先将硬盘上的数据库数据或者文件数据导入到内存中,在内存中构造哈希表,然后按照哈希表来进行数据查询。但是,采用哈希表技术存在以下问题:哈希表存储方式需要把硬盘上的数据读取到内存中,再按照kv方式构造哈希表。在初始化的过程中,从硬盘上读取数据到内存的过程需要耗费大量时间。并且,哈希表存储方式需要将硬盘上的数据全部读取到内存中,这就要求服务器的内存大小必须大于数据本身大小,因此极其耗费内存。
技术实现思路
有鉴于此,本申请提供了一种数据存储、查找方法及装置,用于解决现有采用内存哈希表技术查询数据方法所存在的初始化消耗时间长、占用内存大的问题。为了实现上述目的,现提出的方案如下:—种数据存储方法,包括:按照k值升序或者降序的方式,将若干个kv数据对整理成有序数据;按照排序顺序,将所述有序数据中各kv数据对进行分组;将各分组内kv数据对的V值存储在与各分组唯一对应的数据文件中;将各分组内kv数据对的k值,以及与k值对应的V值在所述数据文件中的位置信息,存储在与各分组唯一对应的索引文件中,其中,与各分组唯一对应的数据文件和索引文件的名称相同;采用内存映射方式,将各个所述数据文件、各个所述索引文件映射到服务器内存中,得到内存映射数据。—种数据查找方法,基于上述的数据存储方法,利用所述内存映射数据进行数据查找,该数据查找方法包括:接收用户输入的目标k值;利用所述内存映射数据,查找所述目标k值所在的索引文件,确定为目标索引文件;利用所述内存映射数据,在所述目标索引文件中查找目标k值,并确定与目标k值对应的V值在所述数据文件中的位置信息;利用所述内存映射数据以及确定的位置信息,在与所述目标索引文件相同名称的数据文件中查找V值,并将查找到的V值返回给用户。优选的,所述查找所述目标k值所在的索引文件,确定为目标索引文件的过程包括:将顺序排序的若干个索引文件确定为指定索引文件串;读取所述指定索引文件串中的第一个索引文件;判断所述第一个索引文件中存储的k值的区间是否包含所述目标k值,若是,将所述第一个索引文件确定为目标索引文件,若否,读取所述指定索引文件串中的最后一个索引文件;判断所述最后一个索引文件中存储的k值的区间是否包含所述目标k值,若是,将所述最后一个索引文件确定为目标索引文件,若否,读取所述指定索引文件串中的中间索引文件;判断所述目标k值位于第一数值区间、第二数值区间、第三数值区间中的哪一个数值区间,其中,第一数值区间为小于所述中间索引文件中所存储的最小的k值的区间,第二数值区间为所述中间索引文件中存储的各个k值所属的最小区间,第三数值区间为大于所述中间索引文件中所存储的最大的k值的区间;若所述目标k值位于第一数值区间,则将所述指定索引文件串中由所述第一个索引文件至所述中间索引文件的索引文件串确定为指定索引文件串,并返回执行所述读取所述指定索引文件串中的第一个索引文件的步骤;若所述目标k值位于第三数值区间,则将所述指定索引文件串中由所述中间索引文件至所述最后一个索引文件的索引文件串确定为指定索引文件串,并返回执行所述读取所述指定索引文件串中的第一个索引文件的步骤;若所述目标k值位于第二数值区间,则将所述中间索引文件确定为目标索引文件。优选的,所述在所述目标索引文件中查找目标k值,包括:将所述目标索引文件中顺序存储的若干个k值确定为指定k值序列;读取所述指定k值序列中的第一个k值;判断所述第一个k值是否等于所述目标k值,若是,将所述第一个k值确定为目标k值,若否,读取所述指定k值序列中的最后一个k值; 判断所述最后一个k值是否等于所述目标k值,若是,将所述最后一个k值确定为目标k值,若否,读取所述指定k值序列中的中间k值;确定所述中间k值与所述目标k值的大小关系;若所述中间k值等于所述目标k值,则将所述中间k值确定为目标k值;若所述中间k值大于所述目标k值,则将所述指定k值序列中由所述第一个k值至所述中间k值的k值序列确定为指定k值序列,并返回执行所述读取所述指定k值序列中的第一个k值的步骤;若所述中间k值小于所述目标k值,则将所述指定k值序列中由所述中间k值至所述最后一个k值的k值序列确定为指定k值序列,并返回执行所述读取所述指定k值序列中的第一个k值的步骤。一种数据存储装置,包括:数据整理单元,用于按照k值升序或者降序的方式,将若干个kv数据对整理成有序数据;数据分组单元,用于按照排序顺序,将所述有序数据中各kv数据对进行分组;V值存储单元,用于将各分组内kv数据对的V值存储在与各分组唯一对应的数据文件中;k值存储单元,用于将各分组内kv数据对的k值,以及与k值对应的V值在所述数据文件中的位置信息,存储在与各分组唯一对应的索引文件中,其中,与各分组唯一对应的数据文件和索引文件的名称相同;内存映射单元,用于采用内存映射方式,将各个所述数据文件、各个所述索引文件映射到服务器内存中,得到内存映射数据。—种数据查找装置,基于上述的数据存储装置,利用所述内存映射数据进行数据查找,该数据查找装置包括:k值接收单元,用于接收用户输入的目标k值;索引文件查找单元,用于利用所述内存映射数据,查找所述目标k值所在的索引文件,确定为目标索引文件;k值查找单元,用于利用所述内存映射数据,在所述目标索引文件中查找目标k值,并确定与目标k值对应的V值在所述数据文件中的位置信息;V值查找单元,用于利用所述内存映射数据以及确定的位置信息,在与所述目标索引文件相同名称的数据文件中查找V值,并将查找到的V值返回给用户。优选的,所述索引文件查找单元包括:第一索引文件查找子单元,用于将顺序排序的若干个索引文件确定为指定索引文件串;第二索引文件查找子单元,用于读取所述指定索引文件串中的第一个索引文件;第三索引文件查找子单元,用于判断所述第一个索引文件中存储的k值的区间是否包含所述目标k值,若是,将所述第一个索引文件确定为目标索引文件,若否,读取所述指定索引文件串中的最后一个索引文件;第四索引文件查找子单元,用于判断所述最后一个索引文件中存储的k值的区间是否包含所述目标k值,若是,将所述最后一个索引文件确定为目标索引文件,若否,读取所述指定索引文件串中的中间索引文件;第五索引文件查找子单元,用于判断所述目标k值位于第一数值区间、第二数值区间、第三数值区间中的哪一个数值区间,其中,第一数值区间为小于所述中间索引文件中所存储的最小的k值的区间,第二数值区间为所述中间索引文件中存储的各个k值所属的最小区间,第三数值区间为大于所述中间索引文件中所存储的最大的k值的区间;若所述目标k值位于第一数值区间,则将所述指定索引文件串中由所述第一个索引文件至所述中间索引文件的索引文件串确定为指定索引文件串,并返回执行所述第二索引文件查找子单元;若所述目标k值位于第三数值区间,则将所述指定索引文件串中由所述中间索引文件至所述最后一个索引文件的索引文件串确定为指定索引文件串,并返回执行所述第二当前第1页1 2 3 4&nbs本文档来自技高网...

【技术保护点】
一种数据存储方法,其特征在于,包括:按照k值升序或者降序的方式,将若干个kv数据对整理成有序数据;按照排序顺序,将所述有序数据中各kv数据对进行分组;将各分组内kv数据对的v值存储在与各分组唯一对应的数据文件中;将各分组内kv数据对的k值,以及与k值对应的v值在所述数据文件中的位置信息,存储在与各分组唯一对应的索引文件中,其中,与各分组唯一对应的数据文件和索引文件的名称相同;采用内存映射方式,将各个所述数据文件、各个所述索引文件映射到服务器内存中,得到内存映射数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:徐佳宏成学文
申请(专利权)人:深圳市茁壮网络股份有限公司
类型:发明
国别省市:广东;44

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

1