[发明专利]一种基于B+树异步更新索引的读优化方法有效
申请号: | 201410697537.8 | 申请日: | 2014-11-26 |
公开(公告)号: | CN104408128B | 公开(公告)日: | 2017-11-03 |
发明(设计)人: | 吴植民 | 申请(专利权)人: | 上海爱数信息技术股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海科盛知识产权代理有限公司31225 | 代理人: | 赵志远 |
地址: | 201112 上海市闵行*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 异步 更新 索引 优化 方法 | ||
技术领域
本发明涉及数据存储领域,尤其是涉及一种基于B+树异步更新索引的读优化方法,适用于因存在海量的索引记录而无法将全部索引记录加载到内存的场景。
背景技术
随着计算机的不断发展,计算机中存在的有效数据越来越多,有效数据的增多将导致用户无法快速的在大量有效数据中找到需要的数据;如果没有一个有效的方式能够快速找到用户需要的数据,那么有效数据的增大只能增加用户的负担。
索引技术的引进很好的解决了这个问题。数据在写的过程中同时会记录一些重要信息用来唯一标识该数据并记录该数据的存储位置及大小信息等,该信息我们称之为索引。索引能帮助我们的快速的查找需要的数据,然而随着数据量不断增长,索引数据也相应的增长。在索引增长到海量级别时,尤其是索引记录达到上亿甚至百亿级别时,索引的查询性能将直接影响了整个读性能,这时候就需要一种方法能够快速的在海量索引中找到需要的索引。
为了解决索引数据量增大导致的读性能问题,一般我们对索引采用分流的技术将索引分成很多类,每一个类对应一个存储区域,每一个存储区域存储了对应的索引。在查询时只需要根据分流技术的规则定位到对应的存储区域,然后再在存储区域中索引数据中查询即可。该方法能减少查询时读取索引数据的大小,降低了磁盘IO,从而在一定程度上提升了查询性能。然而利用这种方法也不能完美的解决查询性能问题,当存在海量索引时,单个存储区域的索引数据也将很多。若每秒钟的查询量很大时则将因为磁盘IO瓶颈导致性能低下。若能有一种方法能只需读取部分少量数据而达到成功查询索引的效果将顺利的解决该读性能问题。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种高性能的、能减少每次读磁盘的数据量及次数的基于B+树异步更新索引的读优化方法,从而减少了每次从海量索引记录中查询读取的索引数据量从而优化性能。
本发明的目的可以通过以下技术方案来实现:
一种基于B+树异步更新索引的读优化方法,其特征在于,包括以下步骤:
1)批量写索引,生成按存储区域编号序列化成数据流的索引缓存文件;
2)获取步骤1)中生成的所有索引缓存文件;
3)过滤并剔除步骤2)中获取的索引缓存文件中不完整或正在写的索引缓存文件;
4)判断步骤3)过滤后的索引缓存文件总个数是否满足发起异步更新的条件,若满足则继续执行步骤5),否则等待下一次执行步骤1);
5)分别读取步骤3)过滤后的各个索引缓存文件相同存储区域编号对应的存储区域的索引数据;
6)读取步骤5)中存储区域编号在索引库中对应的存储区域的索引数据;
7)将步骤5)中读取的索引数据及步骤6中读取的索引数据按B+树的规则组织成一棵B+树;
8)将步骤7)中生成的B+树序列化成二进制流;
9)将步骤8)执行后的数据覆盖更新到步骤5)中存储区域编号在索引库中对应的存储区域并更新元数据;
10)判断步骤5)中的索引缓存文件是否读到文件尾,若为否则,返回步骤5)并将步骤5)中的存储区域编号加1,若为是则继续执行步骤11);
11)删除步骤3)过滤后的索引缓存文件及步骤3)过滤掉的不完整索引缓存文件。
所述的步骤1)具体为:
1.1)将各个存储区域编号在内存中对应的索引进行排序;
1.2)将步骤1.1)中各个存储区域编号对应排序后的索引序列化成数据流;
1.3)将步骤1.2)中的数据流按存储区域编号按从小到大的顺序组合成唯一的一个数据流;
1.4)将步骤1.3)执行后的数据流写入到磁盘生成一个索引缓存文件。
所述的步骤5)、6)中的存储区域编号与步骤1.3中存储区域编号一一对应。
所述的步骤7)具体为:
7.1)建立一个空的B+树;
7.2)将步骤5)中读取的索引数据及步骤6)中读取的索引数据依次解析成索引;
7.3)将步骤7.2)中解析的索引依次插入到步骤7.1)中建立的B+树中。
所述的步骤8)具体为:
8.1)将步骤7)生成的B+树的节点中各个值及值对应的下一节点信息依次序列化成二进制流;
8.2)将步骤7)生成的B+树从根节点开始按照广度遍历的方式依次按步骤8.1)中方法序列化成二进制流;
8.3)将步骤8.2)中序列化后的二进制流对应各个节点中各个值对应的下一节点信息,修改为下一节点在二进制流中偏移位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海爱数信息技术股份有限公司,未经上海爱数信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410697537.8/2.html,转载请声明来源钻瓜专利网。