ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

终于搞懂了啥是列存储,啥是行存储

2021-07-25 13:32:47  阅读:616  来源: 互联网

标签:存储 列式 行式 一行 终于 搞懂 数据 主键


行式存储VS 列式存储

行式存储

传统的数据库是关系型的,且是按行来存储的。如下图

  行式存储示意图

观察上图,我们不难发现:因为每个人学历不一样的原因,只有张三一个人将整行数据都填满了,李四、王五、赵六的数据都没有将对应的行填满。因为这里的行结构是固定的,每一行都一样,即使你不用,也必须空到那里,而不能没有,而这样的空行也是需要占用一定的存储空间的,如果这样的空行占比较大,势必带来较大的存储空间的浪费,那么是否有什么好的解决办法么?

列式存储

为了与传统的区别,新型数据库叫做非关系型数据库,是按列来存储的。如下图:

  列式存储示意图

下面给出行存储与列存储的映射关系:

原来张三的一列(单元格)数据对应现在张三的一行数据。原来张三的六列数据变成了现在的六行。

原来的六列数据是在一行,所以共用一个主键(即张三)。现在变成了六行,每行都需要一个主键(不然不知道这行数据是谁的),所以原来的主键(即张三)重复了六次。如下图:

  行存储与列存储的映射关系

相当于将每一行的每一列拆开,然后通过rowkey(行唯一键)关联起来,rowkey相同的这些数据其实就是原来的一行。由于原来的列变为了现在的行,有需要就加一行,没需要就不加,有效地减少了存储空间的浪费。

行存储与列存储的对比

  • 行式存储倾向于结构固定,列式存储倾向于结构弱化。
    (行式存储相当于套餐,即使一个人来了也给你上八菜一汤,造成浪费;列式存储相等于自助餐,按需自取,人少了也不浪费)
  • 行式存储一行数据只需一份主键,列式存储一行数据需要多份主键。
  • 行式存储存的都是业务数据,列式存储除了业务数据外,还要存储列名。
  • 行式存储更像一个Java Bean,所有字段都提前定义好,且不能改变;列式存储更像一个Map,不提前定义,随意往里添加key/value。


作者:GeekerLou
链接:https://www.jianshu.com/p/603113588144
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:存储,列式,行式,一行,终于,搞懂,数据,主键
来源: https://www.cnblogs.com/WaitSani/p/15057642.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有