列式存储与行式存储,行存储与列存储的区别

列型存储和行式存储理解详情1、列型存储和行式存储2、列型存储和行式存储的优势比较理解3、列型存储的优势4、总结何时应该使用行式存储? 应该什么时候使用列存储?

叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!

另一方面,列式存储和线式存储列式存储是指在存储介质中连续存储一定列数据。 重复存储意味着一行数据按顺序存储在存储介质中。

简单地说,列数据库可以认为每列都是一个表。 这张表上只有一列。 如果只在该列上进行条件查询,速度会很快。

那这两种不同的存储方式对数据的CRUD有什么不同的影响呢

读了几篇文章后,通常说的有以下两点:

1。 行数据库适用于读取较少的行和多列,而列数据库则适用于读取较少的列和较多的行。 2。 列数据库可以节约空间。 如果行的列中没有数据,则在存储列时可以不存储该列的值。 二、列式存储与列式存储的优秀比较,了解传统的列式数据库在数据页中存储完整的数据行。 这种方法在查询大数据量时会出现以下问题。

1、如果没有索引,则检查所有一行。 查询使用大量的IO2。 虽然创建索引和实例化视图可以快速找到列,但这可能很耗时,但是如果处理查询时需要使用大部分数据列,则此方法在磁盘IO中是高效的

一般来说,在线传输处理OLTP ) APP应用程序适用于此方案。

OLAP类型的查询需要访问数百万到数十亿的数据行,并且通常只对少数数据列感兴趣。 例如,如果调查今年最畅销的前20名商品,则只对时间date )、商品item )、销售量sales amount )这三个数据列感兴趣。 商品的其他数据列,例如商品URL、商品说明、商品所属的店铺等,在该咨询中没有意义。

基于列的数据库集中存储同一数据列中的每个值。 插入数据行时,该行中每个数据列的值也存储在不同的位置。 例如,上例中的列数据库必须只读取包含“时间、商品、销售量”的数据列,而列数据库必须读取所有数据列。 结果,列数据库大大提高了查询OLAP大数据量的效率。 当然,列式数据库不是万能的。每次读取某个数据行时,需要分别从不同的地方读取各个数据列的值,然后合并在一起形成数据行因此,如果每个查询涉及的数据量很少,或者大多数查询需要整行数据,则基于列的数据库不适用。

许多列数据库还支持列组在Bigtable系统中称为locality group )。 这意味着它将经常访问的多个数据列中的值放在一起。 如果要读取的数据列属于同一列组,则列式数据库可以从相同的地方一次性读取多个数据列的值,避免了多个数据列的合并列是同时满足OLTP和OLAP查询要求的混合矩阵存储模式。

由于同一数据列的高数据重复度,基于列的数据库压缩具有明显的优势。 例如,Google Bigtable列式数据库对网页库压缩可以达到15倍以上的压缩率也可以进行特定于列存储的索引优化。 例如,性别列中只有两个值:“男”和“女”。 可以在此列中创建位图索引。

如上图所示,“男人”对应的位图为100101,第1、4、6行的值表示“男人”。 与“女人”对应的位图为011010,第2、3、5行的值表示“女人”。 如果需要调查男性或女性的数量,可以统计相应位图中出现1的次数。 此外,如果形成位图索引,则0和1的重复度变高,能够利用专用的编码方式进行压缩。

三、列式存储优势基于列模式存储,自然具有以下几个优点:

自动索引基于列存储,因此每列本身就相当于一个索引。 因此,如果执行需要索引的操作,则不需要额外的数据结构来为此列创建适当的索引。

数据压缩有利于压缩有两个原因。

然后,可以看到大多数列的数据基数实际上是重复的。 例如,由于同一author发表多个博客,因此author列中显示的所有值的基数一定小于博客数。 因此,不需要在author列的存储器中存储与博客数量一样多的数据量。

二是同一列的数据类型一致。 这使得数据结构的优化和压缩变得容易。 另外,对于数字列这样的数据类型,可以采用更有利的算法来压缩存储。

四.汇总列式存储:每列单独存放,数据为索引。 访问只与列有关。 如果想访问单独的列如NAME ),速度会快得多。 一行中的数据包含一列或多列,每列都有一个单独的单元格用于存储数据。 行存储:将一行数据存储为一个整体。 线路存储应该什么时候使用? 应该什么时候使用列存储? 简而言之:

如果大部分时间都在关注整个表的内容,而不是各个列,则建议使用行存储。

对于列存储,例如,如果您关注某一列的内容,或者需要经常聚集在一起,则可以聚集在一起,然后进行数据分析的表。

列式存储应用场景

strong>

基于一列或比较少的列计算的时候经常关注一张表某几列而非整表数据的时候数据表拥有非常多的列的时候数据表有非常多行数据并且需要聚集运算的时候数据表列里有非常多的重复数据,有利于高度压缩

行式存储应用场景

关注整张表内容,或者需要经常更新数据需要经常读取整行数据不需要聚集运算,或者快速查询需求数据表本身数据行并不多数据表的列本身有太多唯一性的数据

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

注:
1、人生在勤,不索何获。
2、什么是列存储,一文秒懂参见文章;
https://zhuanlan.zhihu.com/p/127823207

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注