[发明专利]倒排索引中键值对的处理方法及处理系统有效
申请号: | 201610042152.7 | 申请日: | 2016-01-21 |
公开(公告)号: | CN106991102B | 公开(公告)日: | 2021-06-08 |
发明(设计)人: | 郑杨 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 深圳翼盛智成知识产权事务所(普通合伙) 44300 | 代理人: | 黄威 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 索引 键值 处理 方法 系统 | ||
本发明提供一种倒排索引中键值对的处理方法及处理系统,包括:将键值对中的值按照预设格式生成项目;将所述项目依据其权重进行排序;将所述排序后的项目存储在内存块中,并生成指向所述内存块的指针,其中所述内存块用于形成内存数组;将键值对中的键与所述指针存储为指针数组;将所述指针数组与所述内存数组构成索引列表;将多个键值对所构成的索引列表存储在哈希图中,以形成倒排索引。本发明通过将传统的倒排链存储为内存块数组,并生成对应的指针数组,不仅算法复杂度低,而且支持通过二分查找法进行动态插入和删除操作,还支持TopN查询等,对内存消耗也随之降低。
技术领域
本发明属于数据存储领域,尤其涉及一种倒排索引中键值对的处理方法及处理系统。
背景技术
在线广告系统和信息推荐系统中,倒排索引是一种必须的数据结构,很多特征数据都是以倒排索引的形式进行存储,我们的系统每天需要支撑百亿级别查询量。为了应对高并发、低延时的严格要求,倒排索引的特征数据通常采用键值对(Key-Value)的形式存储在全内存的键值对数据库中,用于提高性能和时延。
目前的全内存键值对系统,在内存中的布局一般是通过哈希图(hashmap)实现,所述哈希图包括:哈希桶数组和冲突链;每一个健值对都会通过哈希函数计算得到哈希桶的位置,然后健值对会以一块地址连续的缓存(buffer)形式存储在冲突链中。现有的技术方案的缺陷如下:
(1)内存数组过长,在进行缓存(buffer)时无法存储整个内存数组,需要对内存数组进行截断,会导致存储和读取的算法复杂度高;
(2)无法支持TopN查询,只能查询得到整个内存数组,进而导致在查询操作时网络和性能开销较大;
(3)无法对内存数组中的单个项目(item)进行操作,比如往内存数组中插入一个项目或者从内存数组中删除一个项目,目前只能将整个缓存擦除重写。
发明内容
有鉴于此,本发明的目的在于提供一种倒排索引中键值对的处理方法及处理系统,可以解决现有技术中算法复杂度高、不支持TopN查询、以及不支持动态的插入与删除操作等技术问题。
为解决上述技术问题,本发明实施例提供了一种倒排索引中键值对的处理方法,包括:
将键值对中的值按照预设格式生成项目;
将所述项目依据其权重进行排序,所述权重包括:原始类型中的值、和非原始类型中的权重;
将所述排序后的项目存储在内存块中,并生成指向所述内存块的指针,其中所述内存块用于形成内存数组;
将键值对中的键与所述指针存储为指针数组;
将所述指针数组与所述内存数组构成索引列表;以及
将多个键值对所构成的索引列表存储在哈希图中,以形成倒排索引。
为解决上述技术问题,本发明实施例还提供了一种倒排索引中键值对的处理系统,包括:
项目生成模块,用于将键值对中的值按照预设格式生成项目;
排序模块,用于将所述项目依据其权重进行排序,所述权重包括:原始类型中的值、和非原始类型中的权重;
内存数组模块,用于将所述排序后的项目存储在内存块中,并生成指向所述内存块的指针,其中所述内存块用于形成内存数组;
指针数组模块,用于将键值对中的键与所述指针存储为指针数组;
索引列表模块,用于将所述指针数组与所述内存数组构成索引列表;以及
哈希图模块,用于将多个键值对所构成的索引列表存储在哈希图中,以形成倒排索引。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610042152.7/2.html,转载请声明来源钻瓜专利网。