一种内存索引压缩方法和装置的制作方法

文档序号:6438490阅读:135来源:国知局
专利名称:一种内存索引压缩方法和装置的制作方法
技术领域
本发明涉及计算机技术领域,特别涉及一种内存索引压缩方法和装置。
背景技术
现有技术中,内存索引键值中包含字符类型,由于字符类型的长度不确定性,占用的内存量也不确定。大部分情况下内存索引对内存的使用较高都是由于字符类型的占用量比较高引起的。

发明内容
有鉴于此,本发明提供了一种内存索引压缩方法和装置,本发明的技术方案能有效对内存索引进行压缩,减小内存索引对内存的占用。为达到上述目的,本发明的技术方案是这样实现的:本发明公开了一种内存索引压缩方法,该方法包括:在内存中创建索引哈希链表空间;当有内存索引键值需要保存到内存时,根据第一哈希函数对该内存索引键值进行哈希计算,得到哈希键值;查看所述索引哈希链表空间中是否已存在与所述哈希键值相同的值,是则不做操作,否则将所述哈希键值保存到所述索引哈希链表空间中。上述方法中,所述索引哈希链表空间包含η个索引区,对应序号依次为O η-l ;查看所述索弓I哈希链表空间中是否已存在与所述哈希键值相同的值包括:根据第二哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η运算得到O η-1中的一个值,确定序号与该值对应的索引区,查看该确定的索引区中是否已存在与所述哈希键值相同的值;所述将哈希键值保存到所述索引哈希链表空间中包括:将所述哈希键值保存到该确定的索引区中。在上述方法中,将所述哈希键值保存到该确定的索引区中包括:构建一个索引条目,该索引条目包括所述哈希键值和一个链表指针;将构建的索引条目添加到该确定的索引区中;其中,所述链表指针指向下一个索引条目。在上述方法中,所述第一哈希函数为DJB哈希函数;所述第二哈希函数为CRC16哈希函数。本发明还公开了一种内存索引压缩装置,该装置包括:内存模块、创建模块和内存索引压缩模块,其中:创建模块,用于在内存模块中创建索引哈希链表空间,并通知内存索引压缩模块;内存索引压缩模块,用于在接收到内存索引键值时,根据第一哈希函数对该内存索引键值进行哈希计算,得到哈希键值,然后查看内存模块中的索引哈希链表空间中是否已存在与所述哈希键值相同的值,是则不做操作,否则将所述哈希键值保存到所述索引哈希链表空间中。在上述装置中,所述创建模块,用于在内存模块中创建包含η个索引区的索引哈希链表空间;该η个索引区的序号依次为O η-l ;所述内存索引压缩模块,用于根据第二哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η运算得到O η-l中的一个值,确定序号与该值对应的索引区,查看该确定的索引区中是否已存在与所述哈希键值相同的值,如果不存在则将所述哈希键值保存到该确定的索引区中。在上述装置中,所述内存索引压缩模块,用于构建一个索引条目,将构建的索引条目添加到该确定的索引区中;其中,所述索引条目包括所述哈希键值和一个链表指针;所述链表指针指向下一个索引条目。在上述装置中,所述内存索引压缩模块,用于根据第DJB哈希函数对该内存索引键值进行哈希计算,得到哈希键值;并用于根据CRC16哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η运算得到O η-l中的一个值。本发明实施例的有益效果是:本发明的技术方案中,由于对内存索引键值进行哈希运算后将整数型的哈希键值保存到内存中,整数型的数据对内存的占用要大大小于字符类型的数据对内存的占用,因此相对现有技术中直接在内存中保存字符类型的内存索引键值的方案相比,能有效对内存索引进行压缩,减小内存索引对内存的占用。


图1是本发明实施例中的一种内存索引压缩方法的流程图;图2是本发明实施例中的一种内存索引压缩装置的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1是本发明实施例中的一种内存索引压缩方法的流程图。如图1所示,该方法包括:101,在内存中创建索引哈希链表空间;102,当有内存索引键值需要保存到内存时,根据第一哈希函数对该内存索引键值进行哈希计算,得到哈希键值;103,查看所述索引哈希链表空间中是否已存在与所述哈希键值相同的值,是则不做操作,否则将所述哈希键值保存到所述索引哈希链表空间中。步骤101中所创建的索引哈希链表空间包含η个索引区,对应序号依次为O
η~1 ο步骤103中的查看所述索引哈希链表空间中是否已存在与所述哈希键值相同的值包括:根据第二哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η运算得到O η-l中的一个值,确定序号与该值对应的索引区,查看该确定的索引区中是否已存在与所述哈希键值相同的值;
步骤103中所述将哈希键值保存到所述索引哈希链表空间中包括:将所述哈希键值保存到该确定的索引区中。将所述哈希键值保存到该确定的索引区中具体可以为:构建一个索引条目,该索引条目包括所述哈希键值和一个链表指针;将构建的索引条目添加到该确定的索引区中;其中,所述链表指针指向下一个索引条目。所述的第一哈希函数和第二哈希函数可以取任意的哈希函数。在本发明的一个实施例中,所述第一哈希函数为DJB哈希函数;所述第二哈希函数为CRC16哈希函数。下面给出一个具体的实施例对上述方案进行说明。首先在内存中创建一个包含η个索引区的索引哈希链表空间,具体可以如表I所示:
权利要求
1.一种内存索引压缩方法,其特征在于,该方法包括: 在内存中创建索引哈希链表空间; 当有内存索引键值需要保存到内存时,根据第一哈希函数对该内存索引键值进行哈希计算,得到哈希键值; 查看所述索引哈希链表空间中是否已存在与所述哈希键值相同的值,是则不做操作,否则将所述哈希键值保存到所述索引哈希链表空间中。
2.根据权利要求1所述的方法,其特征在于,所述索引哈希链表空间包含η个索引区,对应序号依次为O η-l ; 查看所述索引哈希链表空间中是否已存在与所述哈希键值相同的值包括:根据第二哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η运算得到O η-l中的一个值,确定序号与该值对应的索引区,查看该确定的索引区中是否已存在与所述哈希键值相同的值; 所述将哈希键值保存到所述索引哈希链表空间中包括:将所述哈希键值保存到该确定的索引区中。
3.根据权利要求2所述的方法,其特征在于,将所述哈希键值保存到该确定的索引区中包括: 构建一个索引条目,该索引条目包括所述哈希键值和一个链表指针; 将构建的索引条目添加到该确定的索引区中; 其中,所述链表指针指向下一个索引条目。`
4.根据权利要求2所述的方法,其特征在于, 所述第一哈希函数为DJB哈希函数; 所述第二哈希函数为CRC16哈希函数。
5.一种内存索引压缩装置,其特征在于,该装置包括:内存模块、创建模块和内存索引压缩模块,其中: 创建模块,用于在内存模块中创建索引哈希链表空间,并通知内存索引压缩模块; 内存索引压缩模块,用于在接收到内存索引键值时,根据第一哈希函数对该内存索引键值进行哈希计算,得到哈希键值,然后查看内存模块中的索引哈希链表空间中是否已存在与所述哈希键值相同的值,是则不做操作,否则将所述哈希键值保存到所述索引哈希链表空间中。
6.根据权利要求5所述的装置,其特征在于, 所述创建模块,用于在内存模块中创建包含η个索引区的索引哈希链表空间;该η个索引区的序号依次为O η-l ; 所述内存索引压缩模块,用于根据第二哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η运算得到O η-l中的一个值,确定序号与该值对应的索引区,查看该确定的索引区中是否已存在与所述哈希键值相同的值,如果不存在则将所述哈希键值保存到该确定的索引区中。
7.根据权利要求6所述的装置,其特征在于, 所述内存索引压缩模块,用于构建一个索引条目,将构建的索引条目添加到该确定的索引区中;其中,所述索弓I条目包括所述哈希键值和一个链表指针;所述链表指针指向下一个索引条目。
8.根据权利要求6所述的装置,其特征在于, 所述内存索引压缩模块,用于根据第DJB哈希函数对该内存索引键值进行哈希计算,得到哈希键值; 所述内存索引压缩模块,用于根据CRC16哈希函数对该内存索引键值进行哈希计算,对该哈希计算结果进行模η 运算得到O η-l中的一个值。
全文摘要
本发明公开一种内存索引压缩方法和装置。所述方法包括在内存中创建索引哈希链表空间;当有内存索引键值需要保存到内存时,根据第一哈希函数对该内存索引键值进行哈希计算,得到哈希键值;查看所述索引哈希链表空间中是否已存在与所述哈希键值相同的值,是则不做操作,否则将所述哈希键值保存到所述索引哈希链表空间中。本发明的技术方案能有效对内存索引进行压缩,减小内存索引对内存的占用。
文档编号G06F12/02GK103106144SQ20111036227
公开日2013年5月15日 申请日期2011年11月15日 优先权日2011年11月15日
发明者张雁飞 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1