CN104408128A - 一种基于b+树异步更新索引的读优化方法 - Google Patents
一种基于b+树异步更新索引的读优化方法 Download PDFInfo
- Publication number
- CN104408128A CN104408128A CN201410697537.8A CN201410697537A CN104408128A CN 104408128 A CN104408128 A CN 104408128A CN 201410697537 A CN201410697537 A CN 201410697537A CN 104408128 A CN104408128 A CN 104408128A
- Authority
- CN
- China
- Prior art keywords
- index
- storage area
- data
- read
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种基于B+树异步更新索引的读优化方法,包括以下步骤:1)生成索引缓存文件;2)获取所有索引缓存文件;3)过滤并剔除不完整或正在写的索引缓存文件;4)判断是否满足发起异步更新的条件,若满足则继续执行步骤4);5)分别读取过滤后的各个索引缓存文件相同存储区域编号对应的存储区域的索引数据;6)读取存储区域编号在索引库中对应的存储区域的索引数据;7)将索引数据按B+树的规则组织成一棵B+树;8)将步骤7)中生成的B+树序列化成二进制流;9)将步骤8)执行后的数据覆盖更新到存储区域编号在索引库中对应的存储区域。与现有技术相比,本发明具有减少了每次从海量索引记录中查询读取的索引数据量。
Description
技术领域
本发明涉及数据存储领域,尤其是涉及一种基于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)中序列化后的二进制流对应各个节点中各个值对应的下一节点信息,修改为下一节点在二进制流中偏移位置。
与现有技术相比,本发明通过分流技术和B+树减少了每次查询时读取的索引数据量从而大大的提升了索引的查询性能,通过异步更新减少了写数据对查询的阻塞时间并均衡了磁盘的IO。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
假设索引的记录条数为1亿,索引库对索引按500000分流成500000个存储区域。内存中的索引记录每达到100万条即发起一次批量写操作,假设所以的索引缓存文件排除不完整和正在写的索引缓存文件后的总数达到3个则认为满足条件并可以发起异步更新的操作。如图1所示,该实例包含如下步骤:
1、将内存中缓存的100万条索引记录按照存储区域编号0至499999对应分流。
2、将步骤1中每一个存储区域编号对应的索引按照从小到大的顺序排序。
3、将步骤2中每一个存储区域编号对应的排序后的索引分别序列化成数据流。
4、将步骤3中序列化后的数据流按照存储区域编号从小到大的顺序一一对应组合成唯一的一个数据流。
5、将步骤4中组合后的数据流写入磁盘生成一个索引缓存文件。
6、异步获取所有索引缓存文件。
7、过滤并剔除不完整及正在写的索引缓存文件。
8、判断步骤7过滤后的索引缓存文件总个数是否满足发起异步更新的条件,即过滤后的索引缓存文件总个数达到3个。若满足则继续执行,若不满足则结束并等待下一次执行步骤1。
9、分别读取步骤7过滤后的各个索引缓存文件相同存储区域编号对应的存储区域的数据。该存储区域的编号范围为0至499999,初始值为0,该存储区域编号与步骤4中的存储区域编号一一对应。
10、读取步骤9中存储区域编号在索引库中对应的存储区域的数据。
11、将步骤9中读取的索引数据及步骤10中读取的索引数据按B+树的规则组织成一棵B+树。
11.1、建立一个空的B+树。
11.2、将步骤9中读取的索引数据及步骤10中读取的索引数据依次解析成索引。
11.3、将步骤11.2中解析的索引依次***到步骤11.1中建立的B+树中。
12、将步骤11中生成的B+树序列化成二进制流。
12.1、将步骤11生成的B+树的节点中各个值及值对应的下一节点信息依次序列化成二进制流。
12.2、将步骤11生成的B+树从根节点开始按照广度遍历的方式依次按步骤12.1中方法序列化成二进制流。
12.3、将步骤12.2中序列化后的二进制流对应各个节点中各个值对应的下一节点信息,修改为下一节点在二进制流中偏移位置。
13、将步骤12执行后的数据覆盖更新到步骤9中存储区域编号在索引库中对应的存储区域并更新元数据。
14、判断步骤9中的索引缓存文件是否读到文件尾。若否则执行步骤9并将步骤9中的存储区域编号加1,若是则继续执行。
15、删除步骤7过滤后满足条件的索引缓存文件及步骤7过滤掉的不完整索引缓存文件。
Claims (5)
1.一种基于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)过滤掉的不完整索引缓存文件。
2.根据权利要求1所述的一种基于B+树异步更新索引的读优化方法,其特征在于,所述的步骤1)具体为:
1.1)将各个存储区域编号在内存中对应的索引进行排序;
1.2)将步骤1.1)中各个存储区域编号对应排序后的索引序列化成数据流;
1.3)将步骤1.2)中的数据流按存储区域编号按从小到大的顺序组合成唯一的一个数据流;
1.4)将步骤1.3)执行后的数据流写入到磁盘生成一个索引缓存文件。
3.根据权利要求2所述的一种基于B+树异步更新索引的读优化方法,其特征在于,所述的步骤5)、6)中的存储区域编号与步骤1.3中存储区域编号一一对应。
4.根据权利要求1所述的一种基于B+树异步更新索引的读优化方法,其特征在于,所述的步骤7)具体为:
7.1)建立一个空的B+树;
7.2)将步骤5)中读取的索引数据及步骤6)中读取的索引数据依次解析成索引;
7.3)将步骤7.2)中解析的索引依次***到步骤7.1)中建立的B+树中。
5.根据权利要求1所述的一种基于B+树异步更新索引的读优化方法,其特征在于,所述的步骤8)具体为:
8.1)将步骤7)生成的B+树的节点中各个值及值对应的下一节点信息依次序列化成二进制流;
8.2)将步骤7)生成的B+树从根节点开始按照广度遍历的方式依次按步骤8.1)中方法序列化成二进制流;
8.3)将步骤8.2)中序列化后的二进制流对应各个节点中各个值对应的下一节点信息,修改为下一节点在二进制流中偏移位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410697537.8A CN104408128B (zh) | 2014-11-26 | 2014-11-26 | 一种基于b+树异步更新索引的读优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410697537.8A CN104408128B (zh) | 2014-11-26 | 2014-11-26 | 一种基于b+树异步更新索引的读优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104408128A true CN104408128A (zh) | 2015-03-11 |
CN104408128B CN104408128B (zh) | 2017-11-03 |
Family
ID=52645759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410697537.8A Active CN104408128B (zh) | 2014-11-26 | 2014-11-26 | 一种基于b+树异步更新索引的读优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408128B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227677A (zh) * | 2016-07-20 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种变长缓存元数据管理的方法 |
CN107729142A (zh) * | 2017-09-29 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种自精简元数据的线程调用方法 |
CN109241058A (zh) * | 2018-08-27 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种向b+树批量***键值对的方法和装置 |
CN111581204A (zh) * | 2019-03-15 | 2020-08-25 | 北京忆芯科技有限公司 | 多b+树操作装置及其方法 |
CN111831622A (zh) * | 2020-03-31 | 2020-10-27 | 北京嘀嘀无限科技发展有限公司 | 数据索引生成方法、装置、电子设备和可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187941A (zh) * | 2006-11-23 | 2008-05-28 | 三星电子株式会社 | 用于最优化索引搜索的方法和设备 |
CN101763415A (zh) * | 2009-12-16 | 2010-06-30 | 北京握奇数据***有限公司 | 一种数据库的b树索引的生成方法及装置 |
US20110302178A1 (en) * | 2002-04-08 | 2011-12-08 | Peter Chi-Hsiung Liu | Systems for performing an external (disk-based) sort of a large data file which take advantage of "presorted" data already present in the input |
CN103488709A (zh) * | 2013-09-09 | 2014-01-01 | 东软集团股份有限公司 | 一种索引建立方法及***、检索方法及*** |
CN103577339A (zh) * | 2012-07-27 | 2014-02-12 | 深圳市腾讯计算机***有限公司 | 一种数据存储方法及*** |
-
2014
- 2014-11-26 CN CN201410697537.8A patent/CN104408128B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110302178A1 (en) * | 2002-04-08 | 2011-12-08 | Peter Chi-Hsiung Liu | Systems for performing an external (disk-based) sort of a large data file which take advantage of "presorted" data already present in the input |
CN101187941A (zh) * | 2006-11-23 | 2008-05-28 | 三星电子株式会社 | 用于最优化索引搜索的方法和设备 |
CN101763415A (zh) * | 2009-12-16 | 2010-06-30 | 北京握奇数据***有限公司 | 一种数据库的b树索引的生成方法及装置 |
CN103577339A (zh) * | 2012-07-27 | 2014-02-12 | 深圳市腾讯计算机***有限公司 | 一种数据存储方法及*** |
CN103488709A (zh) * | 2013-09-09 | 2014-01-01 | 东软集团股份有限公司 | 一种索引建立方法及***、检索方法及*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227677A (zh) * | 2016-07-20 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种变长缓存元数据管理的方法 |
CN106227677B (zh) * | 2016-07-20 | 2018-11-20 | 浪潮电子信息产业股份有限公司 | 一种变长缓存元数据管理的方法 |
CN107729142A (zh) * | 2017-09-29 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种自精简元数据的线程调用方法 |
CN109241058A (zh) * | 2018-08-27 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种向b+树批量***键值对的方法和装置 |
CN111581204A (zh) * | 2019-03-15 | 2020-08-25 | 北京忆芯科技有限公司 | 多b+树操作装置及其方法 |
CN111831622A (zh) * | 2020-03-31 | 2020-10-27 | 北京嘀嘀无限科技发展有限公司 | 数据索引生成方法、装置、电子设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104408128B (zh) | 2017-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102129458B (zh) | 关系型数据库的存储方法及装置 | |
US8626717B2 (en) | Database backup and restore with integrated index reorganization | |
US10789231B2 (en) | Spatial indexing for distributed storage using local indexes | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US9256665B2 (en) | Creation of inverted index system, and data processing method and apparatus | |
CN104408128A (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和*** | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN102890722A (zh) | 应用于时序历史数据库的索引方法 | |
CN106471501B (zh) | 数据查询的方法、数据对象的存储方法和数据*** | |
CN101923568A (zh) | 布隆过滤器的元素增加、删除方法以及布隆过滤器 | |
CN109522271B (zh) | 一种b+树节点的批量***和删除方法及装置 | |
CN104765731A (zh) | 数据库查询优化方法和设备 | |
CN104199892B (zh) | 一种基于压缩合并异步更新的索引读写方法 | |
CN103955514A (zh) | 一种基于Lucene倒排索引的图像特征索引方法 | |
EP3889797A1 (en) | Database index and database query processing method, apparatus, and device | |
CN107451204B (zh) | 一种数据查询方法、装置及设备 | |
CN107609011A (zh) | 一种数据库记录的维护方法和装置 | |
US10769105B2 (en) | Modifying Lucene index file | |
CN100399338C (zh) | 一种数据记录处理方法 | |
CN101963993A (zh) | 一种数据库单表记录快速查找的方法 | |
CN110515897B (zh) | Lsm存储***读性能的优化方法及*** | |
EP3005161A1 (en) | Datasets profiling tools, methods, and systems | |
CN117235028A (zh) | 一种基于日志文件的数据查询方法和装置 | |
CN109299106B (zh) | 数据查询方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant after: SHANGHAI EISOO INFORMATION TECHNOLOGY CO., LTD. Address before: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant before: Shanghai Eisoo Software Co.,Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |