CN104199892A - 一种基于压缩合并异步更新的索引读写方法 - Google Patents
一种基于压缩合并异步更新的索引读写方法 Download PDFInfo
- Publication number
- CN104199892A CN104199892A CN201410422587.5A CN201410422587A CN104199892A CN 104199892 A CN104199892 A CN 104199892A CN 201410422587 A CN201410422587 A CN 201410422587A CN 104199892 A CN104199892 A CN 104199892A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- storage area
- cache file
- read
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- 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/2272—Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于压缩合并异步更新的索引读写方法,该方法包括:将索引按照存储区域编号生成索引缓存文件;过滤并剔除不完整或正在写的索引缓存文件;索引缓存文件的总个数满足发起异步更新的条件时,分别读取各索引缓存文件中相同存储区域编号对应的存储区域的数据,合并并排序;读取当前存储区域编号在索引库中对应的存储区域的数据并解压;合并、排序并压缩上述数据,并将执行后的数据覆盖更新到当前存储区域编号在索引库中对应的存储区域并更新元数据;判断索引缓存文件是否读到文件尾,若是,则结束,若否,则将存储区域编号加1后继续执行。与现有技术相比,本发明具有高效、异步、能减少每次读磁盘的数据量及减少索引比对次数等优点。
Description
技术领域
本发明涉及一种数据存储技术,尤其是涉及一种基于压缩合并异步更新的索引读写方法。
背景技术
随着计算机系统的不断发展,计算机系统中的有效数据也越来越多。用户在读取某些有效数据时需要在全部有效数据中查找自己需要的数据,而随着有效数据的增大增多,这个查找时间将变长。如果没有一个有效的方式能够快速找到用户需要的数据,那么有效数据的增大只能增加用户的负担。
索引技术的引进很好地解决了这个办法。数据在写的过程中同时会记录一些重要信息用来唯一标识该数据并记录该数据的存储位置及大小信息等,该信息我们称之为索引。索引能帮助我们快速地查找需要的数据,然而随着数据量不断增长,索引也相应的增长。在索引增长到海量级别时,尤其是索引记录达到上亿甚至百亿级别时,索引的查询性能将直接影响了整个读性能,一般的B+树也不能很好地解决读磁盘IO瓶颈带来的性能问题。
为了解决索引数据量增大导致的读性能问题,一般我们对索引采用分流的技术将索引分成很多类,每一个类对应一个存储区域,在查询时将该存储区域的数据一次性读出来进行对比。这种方式很有效地解决读磁盘的IO瓶颈问题,但也带来了一个新的问题,由于索引分类较多,在批量写时分流到各个存储区域的数据将很少,这将导致批量写时写磁盘的次数非常多而每次写磁盘的数据量很小。故在批量写时性能较差。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种高效的、异步的、能减少每次读磁盘的数据量及减少索引比对次数的基于压缩合并异步更新的索引读写方法。
本发明的目的可以通过以下技术方案来实现:
一种基于压缩合并异步更新的索引读写方法,该方法包括:
1)将内存中缓存的索引分为多个存储区域写入索引库,按照存储区域编号生成索引缓存文件;
2)异步获取至少一个索引缓存文件;
3)过滤并剔除不完整或正在写的索引缓存文件;
4)判断当前索引缓存文件的总个数是否满足发起异步更新的条件,若是,则执行步骤5),若否,则结束;
5)分别读取步骤3)中获取的各索引缓存文件中相同存储区域编号对应的存储区域的数据,存储区域编号初始值为0;
6)合并并按索引从小到大排序步骤5)中读取的数据;
7)读取步骤5)中当前存储区域编号在索引库中对应的存储区域的数据;
8)解压步骤7)中读取的数据;
9)合并并按索引从小到大排序步骤6)执行后的数据及步骤8)执行后的数据;
10)压缩步骤9)执行后的数据;
11)将步骤10)执行后的数据覆盖更新到步骤5)中存储区域编号在索引库中对应的存储区域并更新元数据;
12)判断步骤5)中的索引缓存文件是否读到文件尾,若是,则结束,若否,则执行步骤5)并将步骤5)中的存储区域编号加1。
所述步骤1)具体为:
101)将内存中缓存的索引按存储区域编号对应分流,写入索引库;
102)对每一个存储区域编号对应的索引按照从小到大的顺序排序;
103)各个存储区域编号对应排序后的索引序列化成数据流;
104)步骤103)获得的数据流按存储区域编号从小到大的顺序组合成唯一的一个数据流;
105)将步骤104)生成的数据流写入磁盘生成一个索引缓存文件。
所述步骤4)中,发起异步更新的条件为当前索引缓存文件的总个数大于或等于设定个数n。
该方法还包括:
删除步骤3)过滤后更新完成的索引缓存文件及步骤3)过滤掉的不完整索引缓存文件。
所述压缩和解压采用的算法为snappy算法。
与现有技术相比,本发明通过压缩、合并和异步更新,大大减少了批量写的磁盘IO次数及耗时并均衡了批量写时的磁盘IO压力从而提升索引写性能,同时通过压缩减少每次查询时读取的索引数据量并通过排序减少了每次查询时索引的比对个数从而大大的提升了索引的查询性能。
附图说明
图1为本发明的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
假设索引的记录条数为10亿,索引库对索引按470329分流成470329个存储区域。内存中的索引记录每达到500万条即发起一次批量写操作,假设所有的索引缓存文件排除不完整和正在写的索引缓存文件后的总数达到n个时则认为满足条件并可以发起异步更新的操作,本实施例中,n=3。压缩和解压采用快速压缩算法snappy。
如图1所示,本发明实施例提供的基于压缩合并异步更新的索引读写方法包括如下步骤:
步骤s1,将内存中缓存的500万条索引按470329个存储区域编号对应分流,写入索引库,对每一个存储区域编号对应的索引按照索引的大小从小到大的顺序排序。
步骤s2,将各个存储区域编号对应排序后的索引序列化成数据流。
步骤s3,将获得的数据流按存储区域编号小到大的顺序组合成唯一的一个数据流。
步骤s4,将步骤s3生成的数据流写入磁盘生成一个索引缓存文件。
步骤s5,异步获取至少一个索引缓存文件,该步骤及以下步骤为后台异步执行。
步骤s6,过滤并剔除不完整或正在写的索引缓存文件。
步骤s7,判断当前索引缓存文件的总个数是否满足发起异步更新的条件,即判断过滤后的索引缓存文件的总个数是否达到3个,若是,则执行步骤s8,若否,则结束。
步骤s8,分别读取步骤s6中获取的各索引缓存文件中相同存储区域编号对应的存储区域的数据,存储区域编号初始值为0,该步骤的存储区域编号与步骤s1中的存储区域编号一一对应。
步骤s9,合并并按索引从小到大的顺序排序步骤s8中读取的数据;
步骤s10,读取步骤s8中当前存储区域编号在索引库中对应的存储区域的数据;
步骤s11,解压步骤s9中读取的数据;
步骤s12,合并并按索引从小到大的顺序排序步骤s9执行后的数据及步骤s11执行后的数据;
步骤s13,压缩步骤s12执行后的数据;
步骤s14,将步骤s13执行后的数据覆盖更新到步骤s8中存储区域编号在索引库中对应的存储区域并更新元数据;
步骤s15,判断步骤s8中的索引缓存文件是否读到文件尾,若是,则结束,若否,则执行步骤s8并将步骤s8中的存储区域编号加1。
在执行完步骤s15后,还可包括步骤s16:删除步骤s6过滤后更新完成的索引缓存文件及步骤s6过滤掉的不完整的索引缓存文件。
Claims (5)
1.一种基于压缩合并异步更新的索引读写方法,其特征在于,该方法包括:
1)将内存中缓存的索引分为多个存储区域写入索引库,按照存储区域编号生成索引缓存文件;
2)异步获取至少一个索引缓存文件;
3)过滤并剔除不完整或正在写的索引缓存文件;
4)判断当前索引缓存文件的总个数是否满足发起异步更新的条件,若是,则执行步骤5),若否,则结束;
5)分别读取步骤3)中获取的各索引缓存文件中相同存储区域编号对应的存储区域的数据,存储区域编号初始值为0;
6)合并并按索引从小到大排序步骤5)中读取的数据;
7)读取步骤5)中当前存储区域编号在索引库中对应的存储区域的数据;
8)解压步骤7)中读取的数据;
9)合并并按索引从小到大排序步骤6)执行后的数据及步骤8)执行后的数据;
10)压缩步骤9)执行后的数据;
11)将步骤10)执行后的数据覆盖更新到步骤5)中存储区域编号在索引库中对应的存储区域并更新元数据;
12)判断步骤5)中的索引缓存文件是否读到文件尾,若是,则结束,若否,则执行步骤5)并将步骤5)中的存储区域编号加1。
2.根据权利要求1所述的一种基于压缩合并异步更新的索引读写方法,其特征在于,所述步骤1)具体为:
101)将内存中缓存的索引按存储区域编号对应分流,写入索引库;
102)对每一个存储区域编号对应的索引按照从小到大的顺序排序;
103)各个存储区域编号对应排序后的索引序列化成数据流;
104)步骤103)获得的数据流按存储区域编号从小到大的顺序组合成唯一的一个数据流;
105)将步骤104)生成的数据流写入磁盘生成一个索引缓存文件。
3.根据权利要求1所述的一种基于压缩合并异步更新的索引读写方法,其特征在于,所述步骤4)中,发起异步更新的条件为当前索引缓存文件的总个数大于或等于设定个数n。
4.根据权利要求1所述的一种基于压缩合并异步更新的索引读写方法,其特征在于,还包括:
删除步骤3)过滤后更新完成的索引缓存文件及步骤3)过滤掉的不完整索引缓存文件。
5.根据权利要求1所述的一种基于压缩合并异步更新的索引读写方法,其特征在于,所述压缩和解压采用的算法为snappy算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422587.5A CN104199892B (zh) | 2014-08-26 | 2014-08-26 | 一种基于压缩合并异步更新的索引读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422587.5A CN104199892B (zh) | 2014-08-26 | 2014-08-26 | 一种基于压缩合并异步更新的索引读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104199892A true CN104199892A (zh) | 2014-12-10 |
CN104199892B CN104199892B (zh) | 2018-01-30 |
Family
ID=52085185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410422587.5A Expired - Fee Related CN104199892B (zh) | 2014-08-26 | 2014-08-26 | 一种基于压缩合并异步更新的索引读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104199892B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138649A (zh) * | 2015-08-26 | 2015-12-09 | 小米科技有限责任公司 | 数据的搜索方法、装置及终端 |
CN107924350A (zh) * | 2015-08-12 | 2018-04-17 | 三星电子株式会社 | 电子设备及其数据压缩方法 |
CN108694188A (zh) * | 2017-04-07 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种索引数据更新的方法以及相关装置 |
CN109255090A (zh) * | 2018-08-14 | 2019-01-22 | 华中科技大学 | 一种web图的索引数据压缩方法 |
CN109407985A (zh) * | 2018-10-15 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种数据管理的方法以及相关装置 |
CN111159070A (zh) * | 2019-12-31 | 2020-05-15 | 江苏科大亨芯半导体技术有限公司 | 基于ahb总线的标记压缩系统和片上系统 |
CN112650450A (zh) * | 2020-12-25 | 2021-04-13 | 深圳大普微电子科技有限公司 | 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521269A (zh) * | 2011-11-22 | 2012-06-27 | 清华大学 | 一种基于索引的计算机连续数据保护方法 |
US20120310953A1 (en) * | 2002-04-08 | 2012-12-06 | 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 | 深圳市腾讯计算机系统有限公司 | 一种数据存储方法及系统 |
CN103812877A (zh) * | 2014-03-12 | 2014-05-21 | 西安电子科技大学 | 基于Bigtable分布式存储系统的数据压缩方法 |
-
2014
- 2014-08-26 CN CN201410422587.5A patent/CN104199892B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120310953A1 (en) * | 2002-04-08 | 2012-12-06 | 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 |
CN102521269A (zh) * | 2011-11-22 | 2012-06-27 | 清华大学 | 一种基于索引的计算机连续数据保护方法 |
CN103577339A (zh) * | 2012-07-27 | 2014-02-12 | 深圳市腾讯计算机系统有限公司 | 一种数据存储方法及系统 |
CN103488709A (zh) * | 2013-09-09 | 2014-01-01 | 东软集团股份有限公司 | 一种索引建立方法及系统、检索方法及系统 |
CN103812877A (zh) * | 2014-03-12 | 2014-05-21 | 西安电子科技大学 | 基于Bigtable分布式存储系统的数据压缩方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11226738B2 (en) | 2015-08-12 | 2022-01-18 | Samsung Electronics Co., Ltd. | Electronic device and data compression method thereof |
CN107924350A (zh) * | 2015-08-12 | 2018-04-17 | 三星电子株式会社 | 电子设备及其数据压缩方法 |
CN107924350B (zh) * | 2015-08-12 | 2022-01-25 | 三星电子株式会社 | 电子设备及其数据压缩方法 |
CN105138649B (zh) * | 2015-08-26 | 2018-11-30 | 小米科技有限责任公司 | 数据的搜索方法、装置及终端 |
CN105138649A (zh) * | 2015-08-26 | 2015-12-09 | 小米科技有限责任公司 | 数据的搜索方法、装置及终端 |
CN108694188A (zh) * | 2017-04-07 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 一种索引数据更新的方法以及相关装置 |
CN109255090A (zh) * | 2018-08-14 | 2019-01-22 | 华中科技大学 | 一种web图的索引数据压缩方法 |
CN109255090B (zh) * | 2018-08-14 | 2021-08-03 | 华中科技大学 | 一种web图的索引数据压缩方法 |
CN109407985A (zh) * | 2018-10-15 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种数据管理的方法以及相关装置 |
CN109407985B (zh) * | 2018-10-15 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种数据管理的方法以及相关装置 |
CN111159070A (zh) * | 2019-12-31 | 2020-05-15 | 江苏科大亨芯半导体技术有限公司 | 基于ahb总线的标记压缩系统和片上系统 |
CN111159070B (zh) * | 2019-12-31 | 2023-09-19 | 江苏科大亨芯半导体技术有限公司 | 基于ahb总线的标记压缩系统和片上系统 |
CN112650450A (zh) * | 2020-12-25 | 2021-04-13 | 深圳大普微电子科技有限公司 | 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 |
CN112650450B (zh) * | 2020-12-25 | 2024-02-27 | 深圳大普微电子科技有限公司 | 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 |
Also Published As
Publication number | Publication date |
---|---|
CN104199892B (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199892A (zh) | 一种基于压缩合并异步更新的索引读写方法 | |
Wei et al. | AnalyticDB-V: a hybrid analytical engine towards query fusion for structured and unstructured data | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
CN101553813A (zh) | 管理可单独访问的数据单元的存储器 | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN105912636B (zh) | 一种基于Map/Reduce的ETL数据处理方法和装置 | |
CN104077405A (zh) | 时序类型数据存取方法 | |
CN107515931B (zh) | 一种基于聚类的重复数据检测方法 | |
CN105404627A (zh) | 一种用于确定搜索结果的方法与设备 | |
KR101549220B1 (ko) | 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조 | |
CN103593449A (zh) | 一种数据库资源回收方法及系统 | |
CN104408128A (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN111291037A (zh) | 一种数据存储和查询方法、装置、设备及计算机存储介质 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN107391769B (zh) | 一种索引查询方法及装置 | |
CN113094340A (zh) | 基于Hudi的数据查询方法、装置、设备及存储介质 | |
CN103226610B (zh) | 数据库表查询方法和装置 | |
EP3123360B1 (en) | Partition filtering using smart index in memory | |
CN111680043A (zh) | 一种针对海量数据进行快速检索方法 | |
EP3108400B1 (en) | Virus signature matching method and apparatus | |
WO2022052372A1 (zh) | 目标数据更新方法、装置、设备、存储介质及程序产品 | |
CN117370414A (zh) | 时序数据库的应用方法和装置 | |
CN106909623B (zh) | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 | |
CN111159117B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180130 Termination date: 20190826 |
|
CF01 | Termination of patent right due to non-payment of annual fee |