精华内容
下载资源
问答
  • 前言最近学习了hbase,其中涉及到知识就是hbase采用了式存贮,而用惯了mysql我当然脸懵逼,于是有了本篇文章,本文不是论文,所有涉及知识点他人都有讲,我只是为了记录一下,如果想要看论文性质,推荐...

    664fafed4fd783d303e33e4fe6a1d6e4.png

    前言

    最近学习了hbase,其中涉及的到知识就是hbase采用了列式存贮,而用惯了mysql的我当然一脸懵逼,于是有了本篇文章,本文不是论文,所有涉及的知识点他人都有讲,我只是为了记录一下,如果想要看论文性质的,推荐一篇为《Column-Stores vs. Row-Stores: How Different Are They Really?》,可以自行观看,其中有大量的测试,分析,十分详尽。

    存贮数据的方式

    第一个对比的就是存贮数据的方式。

    现来说行式。比如mysql,我们通过观察知道,他是一行一行的存贮的。为了说明这个问题,我们画个图,草图。

    e768e9027fa3e06f65fcf17b7a674eb2.png

    从这个图我们看出,每一行都有id,name,age,sex属性,每一行的所有属性连贯起来存贮起来。即使某一个行某一个字段为空,也会占用一个存贮位置。每一个画绿线的部分里面的数据都被串起来存贮了。比如在北方,蒜这种东西都是被绳子串起来来的,那你现在就可以想象每个绳子串起来的蒜都有id,name,age,sex这四头蒜。

    然后再来看列式存贮。画个草图,嗯,是的,很草很草的图。

    e89704c4d9a7e5adf58e32e495ec9e27.png

    看上图,这就是列式存贮,发现没有,他是一列都是同一个属性的,是的,看图说话,我感觉已经很明白了哦。再来说到蒜,那么你现在就可以想象每个绳子上的蒜都是同一种,比如这条绳子上的蒜全是id,另外一条绳子上的蒜都是name,以此类推。

    是不是很明白的样子。

    查询方面的对比

    第二个对比的就是查询方面。

    先来说行式数据库,通过上面我们知道数据是一行一行的存贮起来的,我们如果想要查询,那么就会一行行的扫描,从而得到我们的数据。还用上面的例子,假定我们只想要name这一行的数据,我们是不是查询的时候也必须把其他的数据顺便给查出来了,因为他们是一起的。那我们就知道了,即使我们只想要一行的数据,也得整行扫描,多的那些数据都是磁盘IO,不得不需要加上额外的不需要的数据。

    然后再来说列式数据库,通过上面我们也知道了列式数据库式按照一列一列来存贮的。再来看上面的那个查询问题,我们依旧只想要name这一列,这个时候我们就只需要把这一列查询出来就行了,其他的没有关系的我们也不关心,是不是瞬间就减少了数据量呀,这个优点尤其是在海量数据的时候尤其明显,查询速度秒杀行式数据库。

    接着我们再返回行式数据库想一下,比如mysql在做查询优化的时候,最常用的手段就是建立索引,可是我们想一想,数据量一旦大的时候,索引也会成倍的增长。

    而列式数据库则不然,他的每一列就是索引,减少了额外建立索引的内容。

    当然了,如果我们的需求就是查询所有字段,那个这个时候列式数据库的处理方式就是先把所有列查询出来,然后再拼接起来,速度方面是比不上行式数据库的。不过我们既然用到了列式数据库,那么我们的场景需求就是大量数据,一般在大数据领域,进行所有字段的查询的这个要求少之又少,所以这个缺点我们需要正式,但是我们也可以忽略。

    压缩比较

    行式数据库因为存贮数据是一行行的来存贮,而每一行数据的差异性太大,所以压缩比很小。列式数据库则不同,因为是按照一列列来存贮,每一列的数据的相同性极高,这就为压缩埋下了很好的种子,压缩比可以达到很大,可以达到5~20倍以上。

    接下来看一下网上的一个图来说明问题。

    caa80341eddb19520224d62abd56c303.png

    我认为这个压缩比是这种列式存贮在面对海量数据存贮查询的时候灵魂。因为拥有超高的压缩比,在磁盘iO传输的时候,据统计可以达到行式的100倍以上。

    当然了,拥有超高的压缩比,另外一方面可以减少磁盘的使用率,不过在现在这个硬盘不值钱的年代,这个优点也不是啥大优点了,最重要的还是在磁盘IO的传输上。

    应用场景比较

    行式数据库主要应用于传统的业务场景中

    列式数据库则应该发挥他查询速度方面的优势,主要用于海量数据分析一类的方面。

    总结

    以上就是本文全部的内容了,如果读者有补充,也欢迎在下方留言,与几方便也与他方便,共同进步咯。

    展开全文
  • 行转列和列转行的区别就是: 某一列有多个重复的数据,对着一列进行分组之后,其他的列数据能够和这一行转换之后的数据对应上,这就是行转列。 列转行就是将某一没有重复数据的列进行转换之后变成可以与其他数据...

    行转列和列转行的区别就是:

    某一列有多个重复的数据,对着一列进行分组之后,其他的列数据能够和这一行转换之后的数据对应上,这就是行转列。

    列转行就是将某一没有重复数据的列进行转换之后变成可以与其他数据对应起来的有重复数据的列,就是列转行。

    例如:

    1、行转列:

     

    2、列转行:

     

    转载于:https://www.cnblogs.com/qadyyj/p/5599828.html

    展开全文
  • 行存储和列存储的区别 a. 行存储的写入是一次完成,数据的完整性因此可以确定。 存储需要把一行记录拆分成单列保存,写入次数明显比行存储多。 行存储在写入上占有很大的优势 b. 行存储是在指定位置写入一次,...

    行存储和列存储的区别
    a.
    行存储的写入是一次完成,数据的完整性因此可以确定。
    列存储需要把一行记录拆分成单列保存,写入次数明显比行存储多。
    行存储在写入上占有很大的优势
    b.
    行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入
    行存储在数据修改也是占优的
    c.
    行存储通常将一行数据完全读出,如果只需要其中几列数据,就会存在冗余列
    列存储每次读取的数据是集合中的一段或者全部。
    由于列储存的数据是同质的,这种情况使数据解析变得容易。行存储则复杂的多,因为在一行记录中保存了多种类型的数据,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗cpu
    所以列存储的解析过程中更有利于分析大数据
    d.
    如果你大部分时间都是关注整张表的内容,而不是单独某几列,并且所关注的内容是不需要通过任何聚集运算的,那么推荐使用行式存储。
    原因是重构每一行数据(即解压缩过程)对于HANA(高性能分析设备)来说,是一个不小的负担。
    列式存储的话,比如你比较关注的都是某几列的内容,或者有频繁聚集需要的,通过聚集之后进行数据分析的表。

    行存储的写入是一次性完成,消耗的时间比列存储少,并且能够保证数据的完整性,缺点是数据读取过程中会产生冗余数据,如果只有少量数据,此影响可以忽略;数量大可能会影响到数据的处理效率。
    列存储在写入效率、保证数据完整性上都不如行存储,它的优势是在读取过程,不会产生冗余数据,这对数据完整性要求不高的大数据处理领域,比如互联网,犹为重要。

    传统行式数据库的特性如下:

    ①数据是按行存储的。

    ②没有索引的查询使用大量I/O。比如一般的数据库表都会建立索引,通过索引加快查询效率。

    ③建立索引和物化视图需要花费大量的时间和资源。

    ④面对查询需求,数据库必须被大量膨胀才能满足需求。

    列式数据库的特性如下:

    ①数据按列存储,即每一列单独存放。

    ②数据即索引。

    ③只访问查询涉及的列,可以大量降低系统I/O。

    ④每一列由一个线程来处理,即查询的并发处理性能高。

    ⑤数据类型一致,数据特征相似,可以高效压缩。比如有增量压缩、前缀压缩算法都是基于列存储的类型定制的,所以可以大幅度提高压缩比,有利于存储和网络输出数据带宽的消耗。

    展开全文
  • 和列的区别

    2019-12-11 13:07:31
    存储需要把一行记录拆分成单列保存,写入次数明显比行存储多。 行存储在写入上占有很大优势 数据修改: 行存储是在指定位置写入一次,存储是将磁盘定位到多个上分别写入。 行存储在数据修改也是占优 ...

    写入:
    行存储的写入是一次完成,数据的完整性因此可以确定。
    列存储需要把一行记录拆分成单列保存,写入次数明显比行存储多。
    行存储在写入上占有很大的优势

    数据修改:
    行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入。
    行存储在数据修改也是占优的

    数据读取:
    行存储通常将一行数据完全读出,如果只需要其中几列数据,就会存在冗余列
    列存储每次读取的数据是集合中的一段或者全部。
    由于列储存的数据是同质的,这种情况使数据解析变得容易。行存储则复杂的多,因为在一行记录中保存了多种类型的数据,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗cpu
    所以列存储的解析过程中更有利于分析大数据


    显而易见,两种存储格式都有各自的优缺点:行存储的写入是一次性完成,消耗的时间比列存储少,并且能够保证数据的完整性,缺点是数据读取过程中会产生冗余数据,如果只有少量数据,此影响可以忽略;数量大可能会影响到数据的处理效率。列存储在写入效率、保证数据完整性上都不如行存储,它的优势是在读取过程,不会产生冗余数据,这对数据完整性要求不高的大数据处理领域,比如互联网,犹为重要。


    什么时候应该使用行式存储?什么时候应该使用列式存储呢?
    如果你大部分时间都是关注整张表的内容,而不是单独某几列,并且所关注的内容是不需要通过任何聚集运算的,那么推荐使用行式存储。原因是重构每一行数据(即解压缩过程)对于HANA来说,是一个不小的负担。
    列式存储的话,比如你比较关注的都是某几列的内容,或者有频繁聚集需要的,通过聚集之后进行数据分析的表。

    展开全文
  • 式存储和行式存储真正区别

    千次阅读 2019-05-04 11:07:42
    1 式存储和行式存储真正区别 参考文献: 式存储和行式存储真正区别_过往记忆大数据_公众号文章 一般原因:查询需要字段时,Column-Store 只需读取需要的列,Row-Store读条记录会把 所有字段都读出来。...
  •  传统关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储数据库中, 数据是按照行数据为基础逻辑存储单元进行存储一行数据在存储介质中以连续存储形式...
  • 前言 最近学习了hbase,其中涉及到知识就是hbase采用了式存贮,而用惯了mysql我当然一脸懵逼,于是有了本篇文章,本文不是论文,所有涉及知识点他人都有讲,我只是...比如mysql,我们通过观察知道,他是一行
  • 行式存储就是每一行的所有数据存在一个block中,各个block之间连续存储;列式存储就是每一列的所有数据存在一起,不同列之间可以分开存储。 MySQL中的infobright存储引擎是列式存储,InnoDBMyISAM存储引擎是行式...
  • 存储不同于传统的关系型数据库,其数据在表中是按存储的,方式所带来的重要好处之就是,由于查询中的选择规则是通过来定义的,因此整个...传统的存储和列存储的区别 1、数据是按存储的 2、没有索引的查
  • 指针与指针联系和区别

    千次阅读 2018-07-12 21:21:51
    指针:指一行中某个具体元素。可以将指针理解为行指针具体元素,行指针理解为指针地址。那么两个概念之间具体转换是:*行指针----指针&指针----行指针数组 “[]” 其实就是取内容...
  • 文章目录前言wm_concat()concat()具体的区别oracle中:wm_concat()的使用 前言 标题几乎已经说的很清楚了,在oracle中,concat()函数 “ || ” 这个的作用是一样的,是将不同拼接在一起;那么wm_concat()是将...
  • 这里简单介绍数据库行式存储和列式存储的概念它们之间的区别。行式存储传统的数据库是关系型的,按行来存储(二维表)数据,如下图:其中,只有张三把一行数据填满了,李四王五赵六都没有填满。因为这里的行结构是...
  • 一、定义行式存储把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推列式存储把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推二、例子1数据库以行、列的二维表的形式表示...
  • 存储不同于传统的关系型数据库,其数据在表中是按存储的,方式所带来的重要好处之就是,由于查询中的选择规则是通过来定义的,因此整个...传统的(Oracle)存储(HBase)存储的区别 1、数据是按...
  • 式数据库: ...1.数据是按列存储,每一列单独存放 2.数据既是索引 3.只访问查询涉及列,大量降低系统io 4.每一列有一个线索来处理,支持查询高并发 5.数据类型一致,数据特征相似,高效压缩...
  • 数组、向量和行向量区别

    千次阅读 2019-04-07 11:01:15
    在机器学习深度学习编程过程中,为了提高程序运行速度,通常将模型表达式转换为向量表达式(向量化),即利用矩阵运算思想提高运行效率。那么,在Python中究竟如何利用Numpy库定义个向量,以及如何判断否为...
  • 字段是列和行的交集:某种类型的单个值。属于同一列的字段通常具有相同的数据类型。例如,如果我们定义了个包含用户数据的表,那么所有的用户名都将是相同的类型,并且属于同一列。在逻辑上属于同一数据记录(通常...
  • 0行首地址0行0元素地址有啥区别? 如果定义一个指针遍历一个二维数组的某一行,那么传递二维数组某行的首地址还是某行0元素的地址?? 有啥区别呢?
  • 我用numpy测试了这个talk[pytables]中演示的一个例子(第20/57页)。在结果表明,a[:,1].sum()只需9.3ms,而{}只需72 us。在我试图复制它,但没有成功。我量错了吗?或者从2010年开始,纽比情况发生了变化?在$ ...
  • 数据库和行数据库

    2021-01-31 12:02:20
    行式存储把一行中的数据值串在一起存储起来,然后再存储下一行的数据,列式存储把一列中的数据值串在一起存储起来,然后再存储下一列的数据 受早期的硬件条件使用场景限制,主流的事务型数据库(OLTP)大多采用行...
  • drop对列和行都进行操作;del仅对列进行操作。 drop次可以处理多个项目;del次只能操作个。 drop可以就地操作或返回副本;del仅是就地操作。 两种函数在执行效率上很接近,但是在较大数据上,drop函数优势更...
  • Power bi 计算列和度量值的区别

    千次阅读 2019-11-13 16:36:18
    计算 指标 ... 没有行的概念,不会基于行进行计算 名字 Table[column] [measure] 范围 一定包含在某个表中 ...
  • 导读:本文带你了解面向列与面向行的数据库。作者:Alex Petrov来源:大数据DT(ID:hzdashuju)大多数数据库系统存储组数据记录,这些记录由表中的列和行组成。字段是列和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,950
精华内容 1,180
关键字:

一列和一行的区别