CN110515950A - 一种基于列存数据库对海量数据进行高效的批量更新方法 - Google Patents
一种基于列存数据库对海量数据进行高效的批量更新方法 Download PDFInfo
- Publication number
- CN110515950A CN110515950A CN201910789871.9A CN201910789871A CN110515950A CN 110515950 A CN110515950 A CN 110515950A CN 201910789871 A CN201910789871 A CN 201910789871A CN 110515950 A CN110515950 A CN 110515950A
- Authority
- CN
- China
- Prior art keywords
- update
- block
- data
- hit
- column
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 238000003860 storage Methods 0.000 claims abstract description 24
- 239000002699 waste material Substances 0.000 abstract description 4
- 238000013500 data storage Methods 0.000 abstract description 3
- 210000000352 storage cell Anatomy 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; 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/23—Updating
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于列存数据库中对海量数据进行高效的批量更新方法,包括如下步骤:首先将每列的数据被切分成多个存储单元,每个存储单元中包含多个block;定义block的命中状态为未命中、部分命中、全命中,更新时查询block的命中状态,若未命中,说明当前block完全没有需要更新的内容,若部分命中,说明该block有部分需要更新的内容,若全命中,说明该block的内容需要全部更新,再写入目标存储单元;进行下一个block更新,有新的内容更新时重复之前的步骤,没有新的内容更新时更新内容即可结束。此方法保证数据存储单元的连续性;杜绝了磁盘空间的浪费,海量数据的更新操作也不会造成数据膨胀。
Description
技术领域
本发明涉及数据库更新技术领域,尤其涉及一种基于列存数据库中对海量数据进行高效的批量更新方法。
背景技术
在电信、金融、互联网等许多领域,数据已经渗透到每一个行业和业务职能领域,如何对海量数据进行发掘与应用,决定着行业与企业未来发展的深度与广度。随着数据的不断积累,如何对海量数据进行高效的更新则是大数据时代各数据库厂商需要解决的问题。
列存数据库中,数据是以列为单位进行组织的,每列数据又被划分成多个block进行管理。当对海量数据进行批量更新时,涉及到更新的列文件中大部分数据将会被更新,现有更新策略是对更新行的原有存储位置设置无效标记,表示该行数据已经无效,并把更新后的数据行追加到数据存储位置的末尾。这种更新方式对于小数据量的更新比较合适,但是对于海量数据的批量更新却不合适,有如下缺点:
1.更新性能的效率低下,严重影响业务的执行效率;
2.浪费大量存储空间,数据膨胀严重;
3.大量的无效数据会导致读取数据时的I/O浪费严重,从而影响查询效率。
发明内容
本发明的目的在于提供一种基于列存数据库中对海量数据进行高效的批量更新方法,能够提高对海量数据进行更新的效率,提升业务执行的整体效率。数据分析场景OLAP中的批量更新是指单条update sql能够更新较多数据。
为实现上述目的,本发明提供如下技术方案:一种基于列存数据库中对海量数据进行高效的批量更新方法包括以下步骤:步骤一:首先将每列的数据被切分成多个存储单元,每个存储单元中包含多个block,更新时以block为单位进行,遍历该列所有的block数据,查询条件命中的行更新成新值,未命中的行采用原值,将涉及到更新的列文件重新生成,生成完毕后进行新旧数据版本的切换;
步骤二、定义block的命中状态为未命中、部分命中、全命中,更新时查询block的命中状态,若未命中,说明当前block完全没有需要更新的内容,从源数据文件中直接取出再写入新存储单元即可,不需要解压缩;若部分命中,说明该block有部分需要更新的内容,需要把该block从源数据文件中读取出来并解压缩,根据表中需要更新的行号以及更新的内容一起重新构建block,再写入目标存储单元;若全命中,说明该block的内容需要全部更新,则这个block不再需要读取源数据文件中的信息,直接根据新的内容重新构建block,再写入目标存储单元;
步骤三、进行下一个block更新,有新的内容更新时重复步骤一即可,没有新的内容更新时更新内容即可结束。
作为优选,所述的步骤一中同时更新表中多列数据时,每列数据更新的行号是一样的,并且每列数据在where条件中对应的block的命中状态也是一样的,依次执行更新即可;
与现有技术相比,本发明的有益效果是:1、批量写数据(单个存储单元通常大小为128M-2G),磁盘执行连续大块数据写入,写入性能通常可以达到磁盘写入的最优性能,并且由于是列存储,只维护更新列数据,I/O浪费较少;
2、保证数据存储单元的连续性(整块存储单元重写),不会因为频繁的更新导致查询性能下降;
3、杜绝了磁盘空间的浪费,海量数据的更新操作也不会造成数据膨胀。
附图说明
图1是本发明批量更新步骤结构示意图;
图2为实施例中更新后的存储结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
如图1所述,一种基于列存数据库中对海量数据进行高效的批量更新方法包括以下步骤:步骤一:首先将每列的数据被切分成多个存储单元,每个存储单元中包含多个block,更新时以block为单位进行,遍历该列所有的block数据,查询条件命中的行更新成新值,未命中的行采用原值,将涉及到更新的列文件重新生成,生成完毕后进行新旧数据版本的切换;
步骤二、定义block的命中状态为未命中、部分命中、全命中,更新时查询block的命中状态,若未命中,说明当前block完全没有需要更新的内容,从源数据文件中直接取出再写入新存储单元即可,不需要解压缩;若部分命中,说明该block有部分需要更新的内容,需要把该block从源数据文件中读取出来并解压缩,根据表中需要更新的行号以及更新的内容一起重新构建block,再写入目标存储单元;若全命中,说明该block的内容需要全部更新,则这个block不再需要读取源数据文件中的信息,直接根据新的内容重新构建block,再写入目标存储单元;
步骤三、进行下一个block更新,有新的内容更新时重复步骤一即可,没有新的内容更新时更新内容即可结束。
如图2所示,假设更新命中了第1行和第3行,更新后原来的第1行和第3行的数据标记为无效数据,更新后的数据则会追加到存储位置的末尾。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (2)
1.一种基于列存数据库中对海量数据进行高效的批量更新方法,其特征在于:具体更新方法包括如下步骤:步骤一:首先将每列的数据被切分成多个存储单元,每个存储单元中包含多个block,更新时以block为单位进行,遍历该列所有的block数据,查询条件命中的行更新成新值,未命中的行采用原值,将涉及到更新的列文件重新生成,生成完毕后进行新旧数据版本的切换;
步骤二、定义block的命中状态为未命中、部分命中、全命中,更新时查询block的命中状态,若未命中,说明当前block完全没有需要更新的内容,从源数据文件中直接取出再写入新存储单元即可,不需要解压缩;若部分命中,说明该block有部分需要更新的内容,需要把该block从源数据文件中读取出来并解压缩,根据表中需要更新的行号以及更新的内容一起重新构建block,再写入目标存储单元;若全命中,说明该block的内容需要全部更新,则这个block不再需要读取源数据文件中的信息,直接根据新的内容重新构建block,再写入目标存储单元;
步骤三、进行下一个block更新,有新的内容更新时重复步骤一即可,没有新的内容更新时更新内容即可结束。
2.根据权利要求1所述的一种基于列存数据库中对海量数据进行高效的批量更新方法,其特征在于:所述的步骤一中同时更新表中多列数据时,每列数据更新的行号是一样的,并且每列数据在where条件中对应的block的命中状态也是一样的,依次执行更新即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910789871.9A CN110515950A (zh) | 2019-08-26 | 2019-08-26 | 一种基于列存数据库对海量数据进行高效的批量更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910789871.9A CN110515950A (zh) | 2019-08-26 | 2019-08-26 | 一种基于列存数据库对海量数据进行高效的批量更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110515950A true CN110515950A (zh) | 2019-11-29 |
Family
ID=68627871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910789871.9A Pending CN110515950A (zh) | 2019-08-26 | 2019-08-26 | 一种基于列存数据库对海量数据进行高效的批量更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515950A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827653A (zh) * | 2022-11-25 | 2023-03-21 | 深圳计算科学研究院 | 一种用于htap和海量数据的纯列式更新方法及装置 |
-
2019
- 2019-08-26 CN CN201910789871.9A patent/CN110515950A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827653A (zh) * | 2022-11-25 | 2023-03-21 | 深圳计算科学研究院 | 一种用于htap和海量数据的纯列式更新方法及装置 |
CN115827653B (zh) * | 2022-11-25 | 2023-09-05 | 深圳计算科学研究院 | 一种用于htap和海量数据的纯列式更新方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9323685B2 (en) | Data storage space processing method and processing system, and data storage server | |
CN103345518B (zh) | 基于数据块的自适应数据存储管理方法及系统 | |
CN103412803B (zh) | 数据恢复的方法及装置 | |
CN103257831B (zh) | 存储器的读写控制方法及对应的存储器 | |
CN106339324B (zh) | 一种选择垃圾回收块的方法及装置 | |
US20150127658A1 (en) | Key_value data storage system | |
CN105468298B (zh) | 一种基于日志结构合并树的键值存储方法 | |
CN1466060A (zh) | 闪速存储器文件系统 | |
CN112380180A (zh) | 数据同步处理方法、装置、设备及存储介质 | |
CN103186622B (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和系统 | |
CN103890856A (zh) | 支持内存储数据结构的可移位存储器 | |
CN103164490A (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN102760161A (zh) | 一种基于事务聚集的日志组织结构及实现其相应的恢复协议的方法 | |
CN104516959A (zh) | 一种管理数据库日志的方法及装置 | |
CN103473298A (zh) | 数据归档方法和装置以及存储系统 | |
CN105787058A (zh) | 一种用户标签系统及基于用户标签系统的数据推送系统 | |
CN110134335A (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN101876927A (zh) | 实现fat32文件系统的断电保护方法和装置 | |
KR20110046118A (ko) | 적응적 로깅 장치 및 방법 | |
CN116257523A (zh) | 一种基于非易失存储器的列式存储索引方法及装置 | |
CN110515950A (zh) | 一种基于列存数据库对海量数据进行高效的批量更新方法 | |
CN112463730B (zh) | 一种存储海量小文件分级优化的方法、系统及介质 | |
CN104361009A (zh) | 一种基于倒排索引的实时索引方法 | |
US20060036802A1 (en) | Flash file system management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191129 |