传统的行存储和(HBase)列存储的区别「建议收藏」

传统的行存储和(HBase)列存储的区别「建议收藏」1为什么要按列存储列式存储(Columnarorcolumn-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原文了):Ø Row-basedstoragestoresatableinasequenceofrows.Ø Column-basedstorag

大家好,又见面了,我是你们的朋友全栈君。

1 为什么要按列存储

列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原文了):

Ø  Row-based storage stores atable in a sequence of rows.

Ø  Column-based storage storesa table in a sequence of columns.

 

下面来看一个例子:

传统的行存储和(HBase)列存储的区别「建议收藏」

 

从上图可以很清楚地看到,行式存储下一张表的数据都是放在一起的,但列式存储下都被分开保存了。所以它们就有了如下这些优缺点:

                             

行式存储

列式存储

优点

Ø  数据被保存在一起

Ø  INSERT/UPDATE容易

Ø  查询时只有涉及到的列会被读取

Ø  投影(projection)很高效

Ø  任何列都能作为索引

缺点

Ø  选择(Selection)时即使只涉及某几列,所有数据也都会被读取

Ø  选择完成时,被选择的列要重新组装

Ø  INSERT/UPDATE比较麻烦

注:关系型数据库理论回顾 – 选择(Selection)和投影(Projection)

传统的行存储和(HBase)列存储的区别「建议收藏」


2补充:数据压缩

刚才其实跳过了资料里提到的另一种技术:通过字典表压缩数据。为了方便后面的讲解,这部分也顺带提一下。

下面才是那张表本来的样子。经过字典表进行数据压缩后,表中的字符串才都变成数字了。正因为每个字符串在字典表里只出现一次了,所以达到了压缩的目的(有点像规范化和非规范化Normalize和Denomalize)

传统的行存储和(HBase)列存储的区别「建议收藏」

3查询执行性能

下面就是最牛的图了,通过一条查询的执行过程说明列式存储(以及数据压缩)的优点:

传统的行存储和(HBase)列存储的区别「建议收藏」

关键步骤如下:

1.     去字典表里找到字符串对应数字(只进行一次字符串比较)。

2.     用数字去列表里匹配,匹配上的位置设为1。

3.     把不同列的匹配结果进行位运算得到符合所有条件的记录下标。

4.     使用这个下标组装出最终的结果集。






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160449.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月16日 下午9:16
下一篇 2022年7月16日 下午9:36


相关推荐

  • Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】「建议收藏」

    Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】「建议收藏」本文章是Unity零基础到入门专栏的系列文章。适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习!本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

    2022年7月16日
    16
  • 宇宙猜想:当物理空间遇上AI,每一座城市都能成为数字剧场

    宇宙猜想:当物理空间遇上AI,每一座城市都能成为数字剧场

    2026年3月14日
    2
  • phpstorm—下载安装配置教程

    phpstorm—下载安装配置教程本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末PhpStorm是JetBrains公司开发的一款商业的PHP集成开发工具,主要为程序开发者提高开发效率,可深刻理解用户的编码,提供强大的智能代码补全,快速导航以及即时错误检查,大大提高了开发效率,但也为很多开发者带来了不便,phpstorm已经不提供注册码了,需要购买商业的版权才能使用。1、下载phpstrom软件官网:https://www.jetbrains.com/phpstorm/嗯!!!好像打不开了,没有关系,站长已为你准

    2025年7月4日
    4
  • JWT——Token认证的两种实现和安全详解

    JWT——Token认证的两种实现和安全详解前言 最近因为项目中需要解决跨域取值的问题 所有考虑到用 Token 认证做技术支撑点 自己看了许多与之相关的文章 从中总结出了以下两个要点 签名和 token 时间 在说这两个要点之前先大概简单说一下与之有关的一些问题 首先 如果你对 token 认证的知识一点都不了解 那么我觉得这篇文章还不太适合你 因为我在这里不会在把相关的基础知识再说明一遍 因为网上有很多相关的文章 讲的都比较好 我会在文章

    2025年9月19日
    6
  • PyTorch建立resnet34和resnet101代码[通俗易懂]

    PyTorch建立resnet34和resnet101代码[通俗易懂]model.pyimporttorch.nnasnnimporttorchclassBasicBlock(nn.Module):expansion=1def__init__(self,in_channel,out_channel,stride=1,downsample=None):super(BasicBlock,self).__init__()self.conv1=nn.Conv2d(in_channels=

    2026年4月16日
    4
  • shift work什么意思_shift delete什么意思

    shift work什么意思_shift delete什么意思shift后门之管理员的用处『罗斌原创』shift后门,网络/系统管理员如果想用的话,那还是可以的,为什么要用它呢,第一,公司大部分的电脑都没有光驱,有的甚至不支持从U盘启动,当一个员工走了之后,而他的电脑又设置了密码,无从下手激活成功教程密码,除非把它的电脑拆了,把硬盘挂在其他电脑上去激活成功教程。或者重装系统!这样是不是非常麻烦呢?第…

    2025年12月1日
    8

发表回复

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

关注全栈程序员社区公众号