CN110413624A - 一种基于列存的多列联合存储的方法 - Google Patents
一种基于列存的多列联合存储的方法 Download PDFInfo
- Publication number
- CN110413624A CN110413624A CN201910727581.1A CN201910727581A CN110413624A CN 110413624 A CN110413624 A CN 110413624A CN 201910727581 A CN201910727581 A CN 201910727581A CN 110413624 A CN110413624 A CN 110413624A
- Authority
- CN
- China
- Prior art keywords
- data
- column
- multiple row
- association
- stored
- 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
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/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)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于列存的多列联合存储的方法,涉及多列储存技术领域,步骤如下:S1:对多列创建联合索引,数据入库时干预数据的排序分布(按照group by排序存储)。S2:多列索引中的每一列采用列存储,每一个列数据存储在单独的连续的区域,每列索引数据分块存储,块是数据存取得最小单位。S3:建立两级跳表查询结构,加速数据的检索。该基于列存的多列联合存储的方法,由于数据都以列的形式存储,在SQL语句执行过程中,节省了行数据库中映射运算的开销,数据按列存储和数据分块的特点,可以根据需要从磁盘只读取有用的属性和数据,以节省IO带宽。
Description
技术领域
本发明涉及多列储存技术领域,具体为一种基于列存的多列联合存储的方法。
背景技术
近年来随着各个行业数据量的大幅度增长,使得存储费用和管理费用也随之增长,面对海量数据的OLAP需求,行存储数据库在统计数据的时候会消耗大量的时间做映射。对海量数据的操作,使得数据库性能受到计算机内存和硬盘的限制。为了减少存储费用和对机器配置的需求,数据库***采用压缩数据的方法保存数据。为了方便OLAP的统计需求,采用了列存储数据的方法。但是传统的列存储是针对单列存储,多列之间并未建立关联,数据也没有按照顺序排列,这样在多列统计的场景效率提升并不明显。
现有的列存储数据库当需要读取某条记录的所有属性的时候,列存储数据库不再高效。因为需要读取每个列属性文件的相应行的内容,浪费大量的IO时间;目前的列存储内部多列之间时独立排序,在基于多列的分组统计时消耗过多的cpu和io资源;现有的列存储数据库压缩比不高;现有的列存储数据库执行引擎访问数据的基本单位是单个属性值,列数据库对属性值的访问存在大量的跳跃访问和随机访问严重影响查询性能。
发明内容
本发明的目的在于提供一种基于列存的多列联合存储的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于列存的多列联合存储的方法,步骤如下:
S1:对多列创建联合索引,数据入库时干预数据的排序分布(按照group by排序存储)。
S2:多列索引中的每一列采用列存储,每一个列数据存储在单独的连续的区域,每列索引数据分块存储,块是数据存取得最小单位。
S3:建立两级跳表查询结构,加速数据的检索。
S4:基于lucene的payload实现k/v存储。
S5:创建联合索引时根据每列数据特点自动匹配对应的数据压缩类型,针对数值型的数据可以选择行程编码、差值编码、基于相邻值的差值编码、基于位置的差值编码、整数压缩算法、字典压缩编码,针对字符型的数据可以选择行程编码、字典编码。除此之外,压缩编码之间可以二次压缩。
优选的,所述S3中的两级跳的跳跃表节点中保存下一层指针信息,和当前区间最大值最小值。
优选的,所述S1中首先根据level1节点最大值最小值检索。
优选的,在level1命中的节点中依次对level2层检索。
优选的,Level2中命中的数据就为真正的数据块,最后就是对数据块中的数据顺序扫描判断。
与现有技术相比,本发明的有益效果是:
(1)、该基于列存的多列联合存储的方法,由于数据都以列的形式存储,在SQL语句执行过程中,节省了行数据库中映射运算的开销。
(2)、该基于列存的多列联合存储的方法,数据按列存储和数据分块的特点,可以根据需要从磁盘只读取有用的属性和数据,以节省IO带宽。
(3)、该基于列存的多列联合存储的方法,同一列数据具有相同的数据类型并且有序排列,增加了相邻数据之间的相似性,从而有利于数据压缩,可以达到更高的压缩比。
(4)、该基于列存的多列联合存储的方法,对多列数据建立二级跳表索引结构,可以加快对数据检索速度。
(5)、该基于列存的多列联合存储的方法,多列之间不是独立排序,入库时就是按照多列分组排序,因此适合统计和多层次关系分析场景。
(6)、该基于列存的多列联合存储的方法,每列单独存储在一个文件的连续区域,采用块压缩的机制,在块间寻址的时候,可以跳跃大量不必要的磁盘块,从而减少了磁盘IO,其次,为了进一步提高压缩态数据的提取速度,以1000个数据为基准,每整千个数据的块内偏移记录在块的头部字段内,当提取数据的时候,可以在头部立刻定位到附近的一个整千位的数据,然后再以此为始遍历数据,这样大量的减少了块内提取数据的速度。
(7)、该基于列存的多列联合存储的方法,结果存储连续,因此适合topN排序和结果导出。
附图说明
图1为本发明B+树联合索引的示意图;
图2为本发明跳跃表节点信息示意图;
图3为本发明索引查询结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供一种技术方案:一种基于列存的多列联合存储的方法,其步骤如下:
S1:对多列创建联合索引,数据入库时干预数据的排序分布(按照group by排序存储),S1中首先根据level1节点最大值最小值检索,在level1命中的节点中依次对level2层检索,Level2中命中的数据就为真正的数据块,最后就是对数据块中的数据顺序扫描判断。
S2:多列索引中的每一列采用列存储,每一个列数据存储在单独的连续的区域,每列索引数据分块存储,块是数据存取得最小单位。
S3:建立两级跳表查询结构,加速数据的检索,所述S3中的两级跳的跳跃表节点中保存下一层指针信息,和当前区间最大值最小值。
S4:基于lucene的payload实现k/v存储。
S5:创建联合索引时根据每列数据特点自动匹配对应的数据压缩类型,针对数值型的数据可以选择行程编码、差值编码、基于相邻值的差值编码、基于位置的差值编码、整数压缩算法、字典压缩编码,针对字符型的数据可以选择行程编码、字典编码。除此之外,压缩编码之间可以二次压缩。
当前业界采用的多列联合索引,普遍采用传统关系型数据库(如:mysql、oracle)的复合索引、流计算框架(如:PipelineDB)、列存储数据库(如:vertica)物化视图来实现。
1.传统关系型数据库复合索引(如图1:B+树联合索引),是基于B+树建立的多列索引,是一个全局的索引,索引部分是采用行存。查询需要按照最做前缀原则,否则符合索引失效。
2.物化视图是在数据入库时数据按照指定的规则(projection)存放,一张表可以建多个规则,查询时可以自动选择合适的projection查询。
3.流计算框架是在数据入库时按照事先给定的规则进行数据的预计算,并把预计算的结果持久化到表中。查询需要时可以直接读取已经计算好的结果。
由于数据都以列的形式存储,在SQL语句执行过程中,节省了行数据库中映射(Projection)运算的开销,数据按列存储和数据分块的特点,可以根据需要从磁盘只读取有用的属性和数据,以节省IO带宽,同一列数据具有相同的数据类型并且有序排列,增加了相邻数据之间的相似性,从而有利于数据压缩,可以达到更高的压缩比,对多列数据建立二级跳表索引结构,可以加快对数据检索速度,多列之间不是独立排序,入库时就是按照多列分组排序,因此适合统计和多层次关系分析场景,每列单独存储在一个文件的连续区域,采用块压缩的机制,在块间寻址的时候,可以跳跃大量不必要的磁盘块,从而减少了磁盘IO,其次,为了进一步提高压缩态数据的提取速度,以1000个数据为基准,每整千个数据的块内偏移记录在块的头部字段内,当提取数据的时候,可以在头部立刻定位到附近的一个整千位的数据,然后再以此为始遍历数据,这样大量的减少了块内提取数据的速度,结果存储连续,因此适合topN排序和结果导出。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (5)
1.一种基于列存的多列联合存储的方法,其特征在于:步骤如下:
S1:对多列创建联合索引,数据入库时干预数据的排序分布(按照group by排序存储);
S2:多列索引中的每一列采用列存储,每一个列数据存储在单独的连续的区域,每列索引数据分块存储,块是数据存取得最小单位;
S3:建立两级跳表查询结构,加速数据的检索;
S4:基于lucene的payload实现k/v存储;
S5:创建联合索引时根据每列数据特点自动匹配对应的数据压缩类型,针对数值型的数据可以选择行程编码、差值编码、基于相邻值的差值编码、基于位置的差值编码、整数压缩算法、字典压缩编码,针对字符型的数据可以选择行程编码、字典编码;
除此之外,压缩编码之间可以二次压缩。
2.根据权利要求1所述的一种基于列存的多列联合存储的方法,其特征在于:所述S3中的两级跳的跳跃表节点中保存下一层指针信息,和当前区间最大值最小值。
3.根据权利要求1所述的一种基于列存的多列联合存储的方法,其特征在于:所述S1中首先根据level1节点最大值最小值检索。
4.根据权利要求3所述的一种基于列存的多列联合存储的方法,其特征在于:在level1命中的节点中依次对level2层检索。
5.根据权利要求4所述的一种基于列存的多列联合存储的方法,其特征在于:Level2中命中的数据就为真正的数据块,最后就是对数据块中的数据顺序扫描判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727581.1A CN110413624A (zh) | 2019-08-07 | 2019-08-07 | 一种基于列存的多列联合存储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727581.1A CN110413624A (zh) | 2019-08-07 | 2019-08-07 | 一种基于列存的多列联合存储的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110413624A true CN110413624A (zh) | 2019-11-05 |
Family
ID=68366624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910727581.1A Pending CN110413624A (zh) | 2019-08-07 | 2019-08-07 | 一种基于列存的多列联合存储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413624A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046126A (zh) * | 2019-12-18 | 2020-04-21 | 南京录信软件技术有限公司 | 一种地理位置检索方法 |
CN111078824A (zh) * | 2019-12-18 | 2020-04-28 | 南京录信软件技术有限公司 | 一种减少Lucene无字典n-gram切词占用存储空间的方法 |
CN112000666A (zh) * | 2020-08-04 | 2020-11-27 | 广州未名中智教育科技有限公司 | 一种面向列的数据库管理*** |
CN112765171A (zh) * | 2021-01-12 | 2021-05-07 | 湖北宸威玺链信息技术有限公司 | 一种用于区块链数据上链的多字段组合索引取数的优化算法 |
CN113805787A (zh) * | 2020-06-11 | 2021-12-17 | 中移(苏州)软件技术有限公司 | 数据写入方法、装置、设备及存储介质 |
CN115374129A (zh) * | 2022-10-24 | 2022-11-22 | 杭州欧若数网科技有限公司 | 一种数据库联合索引编码方法和*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402617A (zh) * | 2011-12-23 | 2012-04-04 | 天津神舟通用数据技术有限公司 | 一种利用分片及稀疏位图的易压缩数据库索引存储***及其相应的构建、调度和查询处理方法 |
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN105824574A (zh) * | 2015-12-07 | 2016-08-03 | 国家电网公司 | 一种内存数据存储方法 |
CN106909623A (zh) * | 2017-01-19 | 2017-06-30 | 中国科学院信息工程研究所 | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 |
CN108197181A (zh) * | 2017-12-25 | 2018-06-22 | 广州亦云信息技术股份有限公司 | 一种时序数据的压缩存储方法、电子设备及存储介质 |
CN110019218A (zh) * | 2017-12-08 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据存储与查询方法及设备 |
-
2019
- 2019-08-07 CN CN201910727581.1A patent/CN110413624A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN102402617A (zh) * | 2011-12-23 | 2012-04-04 | 天津神舟通用数据技术有限公司 | 一种利用分片及稀疏位图的易压缩数据库索引存储***及其相应的构建、调度和查询处理方法 |
CN105824574A (zh) * | 2015-12-07 | 2016-08-03 | 国家电网公司 | 一种内存数据存储方法 |
CN106909623A (zh) * | 2017-01-19 | 2017-06-30 | 中国科学院信息工程研究所 | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 |
CN110019218A (zh) * | 2017-12-08 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据存储与查询方法及设备 |
CN108197181A (zh) * | 2017-12-25 | 2018-06-22 | 广州亦云信息技术股份有限公司 | 一种时序数据的压缩存储方法、电子设备及存储介质 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046126A (zh) * | 2019-12-18 | 2020-04-21 | 南京录信软件技术有限公司 | 一种地理位置检索方法 |
CN111078824A (zh) * | 2019-12-18 | 2020-04-28 | 南京录信软件技术有限公司 | 一种减少Lucene无字典n-gram切词占用存储空间的方法 |
CN113805787A (zh) * | 2020-06-11 | 2021-12-17 | 中移(苏州)软件技术有限公司 | 数据写入方法、装置、设备及存储介质 |
CN112000666A (zh) * | 2020-08-04 | 2020-11-27 | 广州未名中智教育科技有限公司 | 一种面向列的数据库管理*** |
CN112000666B (zh) * | 2020-08-04 | 2024-02-20 | 广州未名中智教育科技有限公司 | 一种面向列的数据库管理*** |
CN112765171A (zh) * | 2021-01-12 | 2021-05-07 | 湖北宸威玺链信息技术有限公司 | 一种用于区块链数据上链的多字段组合索引取数的优化算法 |
CN112765171B (zh) * | 2021-01-12 | 2023-05-23 | 湖北宸威玺链信息技术有限公司 | 一种用于区块链数据上链的多字段组合索引取数的优化算法 |
CN115374129A (zh) * | 2022-10-24 | 2022-11-22 | 杭州欧若数网科技有限公司 | 一种数据库联合索引编码方法和*** |
CN115374129B (zh) * | 2022-10-24 | 2023-02-03 | 杭州欧若数网科技有限公司 | 一种数据库联合索引编码方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413624A (zh) | 一种基于列存的多列联合存储的方法 | |
CN108052551B (zh) | 一种在redis上实现的存储大量时序数据的方法 | |
US10884987B2 (en) | Block compression of tables with repeated values | |
EP2724269B1 (en) | System, method and data structure for fast loading, storing and access to huge data sets in real time | |
US9852169B2 (en) | Compression of tables based on occurrence of values | |
US20120323867A1 (en) | Systems and methods for querying column oriented databases | |
CN102402617A (zh) | 一种利用分片及稀疏位图的易压缩数据库索引存储***及其相应的构建、调度和查询处理方法 | |
Eggers et al. | A compression technique for large statistical databases | |
US9535940B2 (en) | Intra-block partitioning for database management | |
CN102521405A (zh) | 支持高速加载的海量结构化数据存储、查询方法和*** | |
CN102521406A (zh) | 海量结构化数据复杂查询任务的分布式查询方法和*** | |
CN105631003A (zh) | 支持海量数据分组统计的智能索引构建、查询及维护方法 | |
CN101271478B (zh) | 基于聚类分块的只读兴趣点数据库压缩存储方法 | |
CN113032427B (zh) | 一种用于cpu和gpu平台的向量化查询处理方法 | |
CN108446399B (zh) | 一种结构化海量实时数据的动态存储优化方法 | |
CN104991741B (zh) | 一种基于键值模型的情境适配电网大数据存储方法 | |
CN108681577A (zh) | 一种新型的库结构数据索引方法 | |
CN102831146A (zh) | 数据库子串过滤索引***及其构建、查询方法 | |
CN112434085A (zh) | 基于Roaring Bitmap的用户数据统计方法 | |
CN110597929A (zh) | 一种基于MapReduce的并行数据立方构建方法 | |
CN104657426B (zh) | 一种基于统一视图的行列混合数据存储模型的建立方法 | |
US8918374B1 (en) | Compression of relational table data files | |
CN111159468A (zh) | 一种利用分段和压缩的海底监测视频大数据存储方法 | |
Rotem et al. | Minimizing I/O costs of multi-dimensional queries with bitmap indices | |
CN108595691A (zh) | 一种新型的库结构数据处理方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191105 |
|
RJ01 | Rejection of invention patent application after publication |