clickhouse 特性——clickhouse 基础篇(一)

文章目录

  • 列式存储
  • 向量化查询执行引擎
  • 数据压缩
  • 使用磁盘
  • 支持SQL
  • 实时数据更新

列式存储

列式存储的目的有两个,一是缩小数据扫描范围,二是减少数据传输大小, 因此列存储和数据压缩通常是伴生的,列存储是数据压缩的前提。列存储的好处简单总结如下:

  • 将I/O限制为实际需要的数据,仅加载需要访问的列。
  • 节省空间,列存储更容易压缩。
  • 便于压缩编码。
  • 适用于向量化执行引擎。

Parquet 目前比较最流行的列式存储,提供了高效的列式存储数据表达能力,目前在大数据存储生态中被各个开源项目广泛使用,下边是 Parquet 文件存储模型图:image.png
各组件功能说明:
image.png
clickhouse 的默认存储格式是 Parquet, 并且支持 Parquet 格式的文件操作,包括导入导出 clickhouse。

向量化查询执行引擎

数据库查询执行模型主要有3种:火山模型(Volcano Model)、物化模型(Materializa-tion Model)、向量化模型(Vectoried Model)。
火山模型

  • 缺点:火山模型就是将SQL 转化为一棵语法树,需要一个节点一个节点的解析,每个节点都有一个输入和输出数据,每次只能处理一条数据,效率低,我们常用的 MySQL 就是该模型。
  • 优点: 处理逻辑清晰,每个节点只要关心自己的处理逻辑即可,耦合性低。

物化模型

  • 每个节点一次处理所有的输入,处理完之后将所有结果一次性输出。

向量化模型

  • 每个节点每次处理一批数据,而不是所有数据和一条数据,属于火山模型和物化模型的折中。clickhouse 和 Presto 和许多其他 OLAP 系统就是使用的该模型。
  • 在向量化模型中,每次处理包含多行记录的一批数据,每一批数据中的每一列都会被存储为一个向量(一个原始数据类型的数组),从而极大地减少了执行过程中的方法调用、反序列化和不必要的if-else操作,大大减少了CPU的使用时间,如下图所示:

image.png
从上图我们也可以看出要想使用向量化查询,我们就必须使用列式存储。
向量化模型充分利用了现代计算机的向量化计算:
VectorWise的基本思想

  • 将压缩的列数据整理成现代CPU容易处理的数据向量模式,利用现代CPU的SIMD(Single Instruction Multiple Data,单指令多数据流)技术,每次处理一批向量数据,极大地提高了处理效率。
  • 单指令流(Single Instruction)是指同时只能执行一种操作,多数据流(Multiple Data)则是指在一组同构的数据(通常称为数据向量)上进行操作。

clickhouse 领先其他 OLAP 引擎的特性之一

  • 最大限度地提高硬件(尤其是CPU)的性能,实现了向量化查询执行(Vectorized Query Execution)机制(也叫向量化计算(Vectorization)、向量化操作(Vectorized Operation)、向量编程(Vector Programming)等),将多次for循环计算转化为一次并行计算。

数据压缩

数据压缩的本质就是找出数据的规律,将相似的数据以某种计算方式进行压缩,而列式存储恰恰就是将相似的数据放在一起,这就使得数据压缩效率和压缩比更高。
这进而带来了许多好处:

  • 节省大量存储空间,降低存储成本
  • 读取压缩后的数据量小,磁盘读取速度快
  • 压缩算法按需定制,支持多种不同的压缩算法
  • 同样大小的内存,可以存储更多的数据,缓存效果更好

使用磁盘

内存是昂贵和有限的, clickhouse 不仅支持将数据存储在内存和SSD中,还支持将数据存储在磁盘上。

支持SQL

一个好的OLAP 系统必定是支持类似传统 SQL 的使用方式,当然 clickhouse 对 SQL 的支持比较友好,而且还在不断完善中。

实时数据更新

ClickHouse支持在表中定义主键和排序键,以顺序写入的方式写入 MergeTree 中。在进行 where 范围查询时,可以快速的定位对应数据块,加速查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/653866.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL测试数据

012熟悉测试数据 查看表结构:desc或describe,语法格式:desc或describe 表名 desc dept;查询部门的所有信息 : select * from dept;013查一个字段 语法格式:select 字段名 from 表名;(大小写都可以&…

SpringBoot——基于Spring Task实现定时任务

目录 定时任务 项目总结 新建一个SpringBoot项目 pom.xml无需引入依赖 SpringTaskDemo SpringbootSpringtaskApplication启动类 定时任务 在日常的项目开发中,往往会涉及一些需要做到定时执行的代码,例如自动将超过24小时的未付款的订单改为取消状…

finetuning大模型准备(基于Mac环境)

为finetuning进行的热身准备,涉及周边的软件工具,方法。 问题1:finetuning过程较长,采用系统自带命令行没有后台,前台被杀后,容易造成训练失败。 解决方法: tmux可以开启后台训练 问题2&…

地下停车场FM信号覆盖系统技术原理用与应用

随着我国城市化水平的快速推进与房地产的快速发展,城市停车场称为每栋建筑物的硬性配套建筑,尤其是商业综合体、医院、政府机关、机场、高铁站等场所出现了超大规模停车场,停放车辆可达数千辆,停车场的智能化与信息化水平也越来越…

echarts-事件

echarts部分事件 添加点击事件 添加点击事件: let options {tooltip: {},xAxis: {type: "category",data: ["d1", "d2", "d3", "d4"],},yAxis: {},series: [{type: "line",data: d1,},{type: &qu…

推送镜像到私有harbor仓库

本地已制作镜像:tomcat-8.5.100-centos7.9:1.0。 本地已经搭建私有仓库:harbor.igmwx.com。 现在需要把镜像 tomcat-8.5.100-centos7.9:1.0 推送到harbor。 (1)查看本地镜像:sudo docker images zhangzkzhangzk:~/d…

Java Object类方法介绍

Object作为顶级类,所有的类都实现了该类的方法,包括数组。 查询Java文档: 1、object.eauqls(): 其作用与 有些类似。 : 是一个比较运算符,而不是一个方法。 ①可以判断基本类型,也可以判断引用类型。 ②若…

黑马python-面向对象程序设计

1.定义类 class 类名: 代码 ….. 注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯 2.self: self指调用该函数的对象 3.创建对象 对象名类() 4.添加获取对象属性 对象名.属性名值 5._init_()方法&…

vs2010特殊字符‘’无法显示

记录一下,某天测试组的同事突然发了个邮件,说显示有问题 一看邮件内容,果然出bug了 修改办法如下: 把资源文件中的‘&’改成‘&&’,这样在使用的时候就能用了 成功

@RequestBody注解

文章目录 RequestBody注解基本概念在postman里如何发送接收端带有RequestBody的请求? RequestBody注解 基本概念 扩展: http报文会包含四部分,第一部分是请求行,第二部分是请求头,第三部分是空行,第四部分…

基于英飞凌BGT60LTR11AIP E6327芯片具低功耗的脉冲多普勒操作模式常用于汽车应用的雷达上

芯片特征: 60 GHz收发器MMIC,带一个发射器和一个接收器单元封装天线(AIP)(6.73.30.56 mm3)低功耗的脉冲多普勒操作模式自主模式用于运动和运动方向的集成检测器运动检测信号的直接输出目标检测范围的15个可配置阈值检测…

富港银行 邀请码 兑换码 优惠码 分享

首次记得一定要扫码注册,扫码注册开户费50美金,每笔26美金手续费,目前能接收CBI银行资金的有:工行、交通、中行,请知悉 cbi帐户管理费:10美元/月,余额>500美元,1美元/月/&#x…

李廉洋:5.29黄金原油持续震荡,今日美盘行情走势分析及策略。

黄金消息面分析:美联储理事鲍曼周二表示,她支持要么先等等再开始放缓缩减资产负债表,要么采取比本月早些时候宣布的更温和的放慢缩表进程。鲍曼认为商业银行准备金水平仍然充足,这让官员们有更多时间来推进缩表进程。“在准备金接…

FJSP:粒子群优化算法PSO求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

电商API接口||电商数据连接器:一键连接,效率加倍!

电商数据API接口: 一键连接,效率加倍! 打造智能数据生态,让数据流动更加高效 在数字化时代,数据已成为企业发展的核心驱动力。电商API数据采集接口,助力电商企业实现数据的高效管理和应用。 电商数据API…

浅说线性DP(上)

前言 在说线性dp之前,我们先来聊一聊动态规划是啥? 动态规划到底是啥? 动态规划是普及组内容中最难的一个部分,也是每年几乎必考的内容。它对思维的要求极高,它和图论、数据结构不同的地方在于它没有一个标准的数学…

IPC$横向移动

一. IPC$介绍和连接方式 1. IPC$介绍 IPC( Internet Process Connection)共享,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。通过ipc$,可以与目标机器建立连接。利用这个…

项目开发-若依框架

文章目录 框架下载及运行项目学习需求修改左侧菜单栏增加标签-项目信息搭建过程问题解决 后续需要看的内容 框架下载及运行 下载安装: https://blog.csdn.net/anxiaoxiao61/article/details/122505963 https://blog.csdn.net/m0_67376124/article/details/12761749…

安全阀校准周期是多久?重要性、影响因素与周期建议

安全阀,作为阀门家族中特殊的分支,其重要性不言而喻。 在压力操控设备项目工程中,安全阀扮演着至关重要的角色。它不同于其他阀门仅起开关作用,更重要的是能够保护设备的安全。 安全阀根据压力系统的工作压力自动启闭&#xff0…

RT_Thread内核源码分析(一)——CM3内核和上下文切换

目录 一、程序存储分析 1.1 CM3内核寻址空间映射 1.2 程序静态存储和动态执行 二、CM3内核相关知识 2.1 操作模式和特权极别 2.2 环境相关寄存器 2.2.1 通用寄存器组, 2.2.2 状态寄存器组 2.2.3 模式切换环境自动保存 2.2.4 函数调用形参位置 2.3 …