一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质技术

技术编号:16885899 阅读:83 留言:0更新日期:2017-12-27 03:41
本发明专利技术公开了一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质。本发明专利技术的链式日志存储结构,包括多个存储段和一数组,每一存储段的存储单元为一日志项,日志项包括初始大小字段、索引位置字段、键长度字段、Key字段和Value字段;其中Value字段用于存储数据,Key字段用于存储数据的键,初始大小字段用于存储日志项的初始大小,索引位置字段用于存储日志项的索引在哈希表中的位置;所述数组用于存储各存储段的元信息。本发明专利技术的哈希索引结构包括多个哈希桶,每一哈希桶的数据结构包括:索引数字段、有效标志字段、标签字段、偏移量字段和扩展桶字段。本发明专利技术能够保持整个结构内存的紧密连续性,降低碎片率。

A chain log storage structure and its hash index structure, data operation method and server, medium

The invention discloses a chain log storage structure, a hash index structure, a data operation method, and a server and medium. The log chain storage structure of the invention comprises a plurality of memory and a memory cell array, each memory segment for a log entry, the entry includes the initial size field, index field, bond length field, Key field and the Value field; the Value field is used to store data, the Key field is used to store data key the initial size, initial field for the size of the storage of the log entries, the position index field is used to store the log position the index in the hash table; the array element for each memory segment information storage. The hash index structure of the invention includes multiple hash barrels, and each hash bucket's data structure includes index digit section, valid mark field, label field, offset field and extended bucket field. The invention can keep the tight continuity of the whole structure memory and reduce the fragmentation rate.

【技术实现步骤摘要】
一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质
本专利技术属于IT
,涉及一种NoSql内存数据库-数据存储结构,特别涉及一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质。
技术介绍
网络空间资源测绘是对网络空间资源的统一描述、全面感知和全景刻画。通过对网络空间资源的探测、分析和绘制,对我国建设成为网络强国具有重要意义,然而网络空间资源规模庞大并且动态时变,为此需要一种高效的资源缓存策略,能够对资源进行去重存储和高效查询,支持业务用户全面掌握网络空间资源特性及其分布。此外,随着互联网的发展,互联网越来越深刻的影响人们的日常生活,有线网、无线网和4G移动网络成为人们日常使用互联网的最常用的接入方式。对于互联网服务提供者来说,为方便用户在不同网络切换时不用重复登录,经常采用的方案是将用户的UUID缓存在服务器端,当用户切换网络时能快速查找到用户的登录状态,并将用户正在查看的信息直接显示在用户当前的终端上。因此需要在服务端部署一个高效的缓存系统,方便缓存大量的用户登录信息,同时保证能高效的查询该信息。目前的内存缓存系统如Redis和Memcached等都采用哈希表(Hashtable)作为其索引结构。哈希表是根据键(Key)的哈希散列值来直接访问在内存存储位置的数据结构。其核心思想是设关键字为k,则其值存放在f(k)的存储位置上。由此,不需比较便可直接取得所查记录,并称这个对应关系f为散列函数。哈希表的存储单元皆由key和value的键值对组成。然而由于计算机内存资源的有限,哈希表的大小是有限的,所以散列函数的映射关系只能是多对一的,这就可能出现k1≠k2,f(k1)=f(k2),这种情况称为哈希冲突(Collision),通过构造性能良好的散列函数可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是构建哈希表的一个关键问题。处理哈希冲突的方法主要可分为四种:开放地址法:hashi=(hash(key)+di)modm,i=1,2…k(k≤m-1),其中hash(key)为散列函数,m为散列表长度,di位增量序列,i为已发生冲突的次数。根据增量序列的不同可分为线性探测、平方探测和伪随机探测等。链地址法:这种方法的基本思想是将发生哈希冲突的元组构成一个单链表,查找、插入和删除都通过遍历这个链表来实现。再哈希法:hashi=hashi(key),i=1,2…k。hashi是一个哈希族,即在哈希计算发生冲突时,使用下一个哈希族函数计算哈希值,直到冲突不再产生。公共溢出区法:建立一个公共溢出区,所有发生哈希冲突的元素都存储到该溢出区中。现有的哈希冲突解决方法都会引入较多额外的开销,降低了哈希表的查找效率。开放地址法采用线性探测时由于增量序列是单调递增的,容易形成聚簇使数据在哈希表中分布不均,采用平方探测或伪随机探测则需要多次的随机访问,降低Cache的效率。链地址法引入了额外的指针开销,而且插入和查找时都需要遍历链表,效率较低。再哈希法需要进行多次哈希计算,计算开销较大。公共溢出区只适用于存储元素较少的场景。此外,目前的动态内存分配方式存在内存碎片问题导致内存利用率不高,这对内存缓存系统资源的开销是不可忽视的。本专利技术通过设计一个高效的哈希索引结构,降低发生哈希冲突时大量指针遍历和字符串比对等操作带来的额外开销,同时设计一个内存友好的存储结构以较少内存碎片,提高内存利用率。
技术实现思路
为了提高内存键值对缓存系统的查询效率,本专利技术提供了一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质。本专利技术设计了一种新的哈希索引结构;同时为了更好地配合索引结构的特点并且减少传统动态内存分配器带来的内存碎片问题,本专利技术提出了使用连续内存段进行数据存储与管理的方案。本专利技术通过合理的设计数据布局提高Cache命中率,并通过SIMD指令集加速索引查找的查询方法。使用连续的固定大小内存块来管理和存储数据,避免内存碎片的内存管理方法。本专利技术的技术方案为:一种链式日志存储结构,其特征在于,包括多个存储段Segment和一数组,每一所述存储段Segment的存储单元为一日志项,所述日志项包括初始大小字段、索引位置字段、键长度字段、Key字段和Value字段;其中Value字段用于存储数据,Key字段用于存储数据的键,初始大小字段用于存储日志项的初始大小,索引位置字段用于存储日志项的索引在哈希表中的位置;所述数组用于存储各存储段Segment的元信息。所述元信息包括存储段Segment的起始地址、首元素地址、前后邻接存储段Segment的元信息在数组中的存放位置,以及存储段Segment的失效数据量。所述前后邻接存储段Segment的元信息在数组中的存放位置为前后邻接存储段Segment元信息的数组下标。使用大顶堆统计失效数据量最多的前K个存储段Segment,当内存使用率低于配置阈值时,对大顶堆中失效数据与segment大小的比例最大的存储段Segment进行迁移操作,将该存储段Segment中的有效数据重新插入到链式日志存储结构的头部位置,之后释放空的存储段Segment。一种链式日志存储结构的哈希索引结构,其特征在于,包括多个哈希桶,每一所述哈希桶的数据结构包括:索引数字段、有效标志字段、标签字段、偏移量字段和扩展桶字段;其中,索引数字段,用于存储哈希桶中的有效索引项数量;有效标志字段是一位向量,该位向量的位数与标签字段中的标签数相同,该位向量中置0的位表示对应的标签值是有效的;标签字段中的标签值是Key字段中键的64位哈希值的前16位,后48位为哈希桶的下标;偏移量字段,用于存储Value字段中数据的存储位置在链式日志存储结构中的相对偏移量,根据Key字段、Value字段中键值对的对应关系标签字段中的标签值与偏移字段中的相对偏移量一一对应;当一哈希桶已满时,新的索引项会被插入到与该哈希桶最近的空哈希桶中,扩展桶字段用于记录该空哈希桶的下标。所述相对偏移量占用48bit,其中前26bit存储存储段Segment的元信息数组下标,后22bit存储相对存储段Segment首元素地址的偏移量。一种数据查询方法,其步骤包括:1)对待查询数据value的关键字key进行哈希散列计算获得64位的哈希值;2)取该哈希值的前16位为标签值tag,根据该哈希值后48位定位到哈希桶;3)查找定位到的哈希桶的Tag字段中是否存在该标签值tag,若存在则返回该标签值对应的相对偏移量;如果不存在,且扩展桶字段不为空,则从该扩展桶字段指向的哈希桶中进行查找,直到找到该标签值tag或扩展桶字段为空;4)根据返回的相对偏移量获取日志项,返回结果。一种数据存储方法,其步骤包括:1)对待存储数据value的关键字key进行哈希散列计算获得64位的哈希值;2)取该哈希值的前16位为标签值tag,根据该哈希值的后48位定位到哈希桶;3)若该哈希桶未满,则进行步骤4);若该哈希桶已满但扩展桶字段不为空,则选取该扩展桶字段标识的哈希桶,进行步骤4);若该哈希桶已满且扩展桶字段为空,则查找下一个非满哈希桶,把扩展桶字段赋值为该非满哈希桶的下标,然后进行步骤4);4)在当前哈希桶的有效标志字段的位向量中找到一置1的位,设置标签本文档来自技高网
...
一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质

【技术保护点】
一种链式日志存储结构,其特征在于,包括多个存储段Segment和一数组,每一所述存储段Segment的存储单元为一日志项,所述日志项包括初始大小字段、索引位置字段、键长度字段、Key字段和Value字段;其中Value字段用于存储数据,Key字段用于存储数据的键,初始大小字段用于存储日志项的初始大小,索引位置字段用于存储日志项的索引在哈希表中的位置;所述数组用于存储各存储段Segment的元信息。

【技术特征摘要】
1.一种链式日志存储结构,其特征在于,包括多个存储段Segment和一数组,每一所述存储段Segment的存储单元为一日志项,所述日志项包括初始大小字段、索引位置字段、键长度字段、Key字段和Value字段;其中Value字段用于存储数据,Key字段用于存储数据的键,初始大小字段用于存储日志项的初始大小,索引位置字段用于存储日志项的索引在哈希表中的位置;所述数组用于存储各存储段Segment的元信息。2.如权利要求1所述的链式日志存储结构,其特征在于,所述元信息包括存储段Segment的起始地址、首元素地址、前后邻接存储段Segment的元信息在数组中的存放位置,以及存储段Segment的失效数据量。3.如权利要求2所述的链式日志存储结构,其特征在于,所述前后邻接存储段Segment的元信息在数组中的存放位置为前后邻接存储段Segment元信息的数组下标。4.如权利要求1或2或3所述的链式日志存储结构,其特征在于,使用大顶堆统计失效数据量最多的前K个存储段Segment,当内存使用率低于配置阈值时,对大顶堆中失效数据与segment大小的比例最大的存储段Segment进行迁移操作,将该存储段Segment中的有效数据重新插入到链式日志存储结构的头部位置,之后释放空的存储段Segment。5.一种基于权利要求1所述链式日志存储结构的哈希索引结构,其特征在于,包括多个哈希桶,每一所述哈希桶的数据结构包括:索引数字段、有效标志字段、标签字段、偏移量字段和扩展桶字段;其中,索引数字段,用于存储哈希桶中的有效索引项数量;有效标志字段是一位向量,该位向量的位数与标签字段中的标签数相同,该位向量中置0的位表示对应的标签值是有效的;标签字段中的标签值是Key字段中键的64位哈希值的前16位,后48位为哈希桶的下标;偏移量字段,用于存储Value字段中数据的存储位置在链式日志存储结构中的相对偏移量,根据Key字段、Value字段中键值对的对应关系标签字段中的标签值与偏移字段中的相对偏移量一一对应;当一哈希桶已满时,新的索引项会被插入到与该哈希桶最近的空哈希桶中,扩展桶字段用于记录该空哈希桶的下标。6.如权利要求5所述的哈希索引结构,其特征在于,所述相对偏移量占用48bit,其中前26bit存储存储段Segment的元信息数组下标,后22bit存储相对存储段Segment首元素地址的偏移量。7.一种基于权利要求5所述哈希索引结构的数据查询方法,其步骤包括:1)对待查询数据value的关键字key进行哈希散列计算获得64位的哈希值;2)取该哈希值的前16位为标签值tag,根据该哈希值后48位定位到哈希桶;3)查找定位到的哈希桶的Tag字段中是否存在该标签值tag,若存在则返回该标签值对应的相对偏移量;如果不存在,且扩展桶字段不为空,则从该扩展桶字段指向的哈希桶中进行查找,直到找到该标签值tag或扩展桶字段为空;4)根据返回的相对偏移量获取日志项,返回结果。8.一种基于权利要求5所述哈希索引结构的数据存储方法,其步骤包括:1)对待存储数据value的关键字key进行哈希散列计算获得...

【专利技术属性】
技术研发人员:刘庆云杨泞构刘俊朋张鹏郑超杨嵘
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1