为什么列式存储会被广泛用在 OLAP 中?

大家好,我是大D。

不知是否有小伙伴们疑问,为什么列式存储会广泛地应用在 OLAP 领域,和行式存储相比,它的优势在哪里?今天我们一起来对比下这两种存储方式的差别。

其实,列式存储并不是一项新技术,最早可以追溯到 1983 年的论文 Cantor。然而,受限于早期的硬件条件和应用场景,传统的事务型数据库(OLTP)如 Oracle、MySQL 等关系型数据库都是以行的方式来存储数据的。

直到近几年分析型数据库(OLAP)的兴起,列式存储这一概念又变得流行,如 HBase、Cassandra 等大数据相关的数据库都是以列的方式来存储数据的。

对于 OLAP 场景,大多都是对一整行记录进行增删改查操作的,那么行式存储采用以行的行式在磁盘上存储数据就是一个不错的选择。

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:64eadc82-88a1-45c6-9ecc-7df2aa7264d6

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:915df71a-5643-433d-933c-04b49022cdb0

举个例子,下图为员工信息emp表。

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c0981379-6093-4f0d-802d-324d5eb936cd

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:395f85a7-07c0-4bb4-82dd-4d07465bb3c6

对于 emp 表,要查询部门 dept 为 A 的所有员工的名字。

<span class="hljs-keyword">select&#xA0;<span class="hljs-keyword">name&#xA0;<span class="hljs-keyword">from&#xA0;emp&#xA0;<span class="hljs-keyword">where&#xA0;dept&#xA0;=&#xA0;A<br></span></span></span></span>

由于 dept 的值是离散地存储在磁盘中,在查询过程中,需要磁盘转动多次,才能完成数据的定位和返回结果。

对于 OLAP 场景,一个典型的查询需要遍历整个表,进行分组、排序、聚合等操作,这样一来行式存储中把一整行记录存放在一起的优势就不复存在了。而且,分析型 SQL 常常不会用到所有的列,而仅仅对其中某些需要的的列做运算,那一行中无关的列也不得不参与扫描。

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c93513cd-1163-49d4-984d-7ca8171d0cec

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:0ea19e45-c083-4aca-9d37-015fe651b7fa

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:29170f73-5a77-48fa-8f59-7331c6dbb191

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a15ef299-21e8-4745-a121-771cef90bcbb

还是上面例子中的查询,由于在列式存储中 dept 的值是按照顺序存储在磁盘上的,因此磁盘只需要顺序查询和返回结果即可。

列式存储不仅具有按需查询来提高效率的优势,由于同一列的数据属于同一种类型,如数值类型,字符串类型等,相似度很高,还可以选择使用合适的编码压缩可减少数据的存储空间,进而减少IO提高读取性能。

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:66c5db03-eaab-41fb-bf11-a0067b5657e4

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:f98ff67d-4d34-47c3-ac77-8a7d1d9e1630

非常欢迎大家加我微信:Abox_0226,备注「进群」,有关大数据技术的问题在群里一起探讨。

Original: https://www.cnblogs.com/datadance/p/16281634.html
Author: Data跳动
Title: 为什么列式存储会被广泛用在 OLAP 中?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562885/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 一加6T刷postmarketOS

    由于国内树莓派溢价严重,竟然成为奸商的理财产品。本来想入手一个4代,然后就劝退了。最近小黄鱼上淘了一个一加6T,想自己折腾折腾系统了。 一开始看网上有人刷Win11的,然后就用Mi…

    大数据 2023年5月27日
    0131
  • 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化

    背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务。其中一个典型场景是 K…

    大数据 2023年5月26日
    085
  • 微生物组和组学成分数据分析之ALR对数转换

    谷禾健康 编辑​ 微生物组和组学数据集,由于其生物学性质,通常是 高维的,特征常以各种成分,如 基因、OTU、RNA转录本等的计数为特征。这些数据统称为 成分数据。 这类数据分析的…

    大数据 2023年5月28日
    090
  • Linux的基本概念

    (注:此笔记默认操作系统为centOS7) 文件权限 超级管理员用户(root)可以修改任何文件,普通用户才有权限这个概念。 文件权限是对文件的访问权限,即哪些用户和组可以访问文件…

    大数据 2023年5月27日
    094
  • sqlite3 创建各个形式带默认时间戳的表

    想创建一个每次insert数据后,默认带系统时间戳的表,逛了一圈,查到了一些相关方法。发帖记录一下。正如下图所示,除此之外还可以构建其他格式的字符串,其中有些需要注意的问题列一下。…

    大数据 2023年11月11日
    081
  • Sqlite源码解读(十一)

    接着winShmNode继续讲。 PShmNode上的引用计数已经在winShmEnterMutex()互斥体的覆盖下递增,并且指向pShmNode的新对象的指针已经设置。剩下要做…

    大数据 2023年11月12日
    044
  • 使用阿里云镜像安装 Docker 服务

    Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证…

    大数据 2023年5月29日
    068
  • jvm优化

    作者:no-npe 出处:https://www.cnblogs.com/geekdc 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面明显位置给出…

    大数据 2023年5月28日
    084
  • Spark Sql之count(distinct)分析&&学习&&验证

    Spark Sql之count distinct 学习内容 spark 对count(distinct)的优化 数据膨胀原理 * – distinct数据膨胀 grou…

    大数据 2023年11月12日
    052
  • Java JDBC SQLite 示例

    您可以在此处下载用于 SQLite 的最新版本的 JDBC 驱动程序。下载是按版本分类的,因此请浏览您想要的特定版本的目录:3.5.9、3.6.16、3.7.2 等。在撰写本文时,…

    大数据 2023年11月12日
    047
  • 【大数据实战项目一】数据下载以及工具软件的使用

    数据下载以及工具软件的使用 ​​1 数据从哪里来?数据怎么用?​​ ​​1.1 本项目中使用的数据——飞机航班数据​​ ​​1.2 结构化数据与非结构化数据​​ ​​1.3 结构表…

    大数据 2023年5月24日
    0110
  • 22-Spring Authorization Server初体验

    在上一篇中我对授权服务器项目 Spring Authorization Server进行了介绍,这一篇我们来一起看看它是如何搭建、如何使用。先不要纠结为什么要这样配置,先跑起来,后…

    大数据 2023年5月24日
    094
  • Ubuntu搭建Pytorch,就这一篇就够了

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 第一步:配置镜像源,安装必要环境 更换镜像 第二步:安装anaconda 1 进入官网 https://www.anaconda…

    大数据 2023年5月27日
    087
  • Hive常见高频面试题(上篇)

    目录 1 背景介绍 2 常见面试问题 * 2.1 请简单介绍下Hive架构? 2.2 Hive表有哪些类型及其区别? 2.3 Hive创建表有哪些方式? 2.4 Hive排序Ord…

    大数据 2023年11月13日
    061
  • Kafka 生产者、消费者命令行操作

    1.查看操作生产者命令参数 bin/kafka-console-producer.sh 参数 –bootstrap-server –topic 2.发送消息…

    大数据 2023年6月3日
    072
  • 安卓复制到剪切板,以及获取剪切板内容

    安卓复制到剪切板,以及获取剪切板内容 原创 痛而不觉2022-06-20 11:08:50博主文章分类:安卓相关 ©著作权 文章标签 剪切板 android 剪贴板 文章分类 Ha…

    大数据 2023年5月26日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球