ClickHouse架构概览 —— Clickhouse 架构篇(一)

文章目录

    • 前言
    • Clickhouse 架构简介
    • Clickhouse 的核心抽象
      • 列和字段
      • 数据类型
    • Clickhouse 的运作过程
      • 数据插入过程
      • 数据查询过程
      • 数据更新和删除过程

前言

本文介绍了ClickHouse的整体架构,并对ClickHouse中的一些重要的抽象对象进行了分析。然后此基础上,结合数据库的几个常用的操作,介绍了这些抽象对象的运作机制。

Clickhouse 架构简介

ClickHouse 使用的是MPP(Massively Parallel Processing,大规模并行处理)架构,该架构集群中的任意一台服务器都可以单独对外提供服务,是一个多主的结构。
ClickHouse 的体系结构图如下:
image.png

  • 存储引擎负责将内存中的数据按照特定的规则持久化到磁盘(或HDFS、AWS S3)上,并在需要时将磁盘中的数据加载到内存中。
  • 计算引擎则将用户提交的SQL语句转换成执行计划并对内存中的数据进行计算
  • 服务接口对外提供服务,后台服务负责执行一些分区合并、数据删除等后台工作
  • 管理工具则供系统运维工程师进行数据库的配置、管理

Clickhouse 的最小存储和计算单位为**块,**下图展示了各组件间通过块进行的交互逻辑:
image.png

Clickhouse 的核心抽象

列和字段

  • Clickhouse 中的列是一个数组,可以通过索引获取对应列中的字段,索引下表从 1 开始。
  • 列是不可变的,任何对列的操作都会产生一个全新的对象。
  • 字段表示列数组中某一个独立的值,基于数仓的特性以及性能考虑,字段仅用于极少数情况。通常情况下,ClickHouse会将列当成整体去处理

数据类型

Clickhouse 支持很多种数据类型,多达100多种,数据类型的主要作用如下:

  • 决定了数据在内存中的布局形式
  • 决定了数据可以进行的运算方式
  • 决定了数据持久化到磁盘上时数据文件的序列化和反序列化的方式

丰富的数据类型是 CLickhouse 进行强大的向量化计算的基础。

块是ClickHouse进行数据处理的基本单位。ClickHouse以块为单位对数据进行计算。
块由数据区(Data)的索引区(Index)组成,数据区由列紧密地堆叠而成,索引区存储数据区中列的索引,记录了列名、列的顺序等信息。
下图展示了块的布局示意:
image.png

Clickhouse 可以通过指定不同的表引擎创建不同的表存储结构,最流行的就是MergeTree存储引擎,下图展示了不同表引擎间的对比:
image.png
除了表引擎,Clickhouse 还支持对应的存储引擎来定义数据存储的位置,表引擎决定了数据的逻辑组成,存储引擎决定了文件的保存位置,下图对不同存储引擎特性进行了说明:
image.png

Clickhouse 的运作过程

数据插入过程

image.png

  • 通过服务接口将 SQL 传给计算引擎
  • 计算引擎将SQL 转换为 Pipeline 对象,在QueryPipeline中也保存了计算引擎格式化过的块数据,块对象会随着QueryPipeline一起传递到存储引擎中
  • 存储引擎会将块中的数据保存到对应的数据文件中

数据查询过程

image.png

  • 计算引擎会将SQL 编译转换为 QueryPipeline,该管道中包含一系列转换器,有的转换器可以通过存储引擎获取对应的数据块,然后再通过别的转换器实现过滤、转换、聚合等各种操作,最后通过服务接口将查询结果返回给用户。

数据更新和删除过程

image.png

  • Clickhouse 对数据的更新和删除支持并不是很友好,不建议频繁删除和更新。
  • Clickhouse 对数据的更新和删除,是对表结构的修改,而不是数据的变更。
  • ClickHouse的解析器在收到UPDATE或DELETE语句时,会创建一个异步任务,同时立即返回执行完成。需要注意的是,此时数据并未完成更新或删除,而是会在未来的某个时刻由ClickHouse的后台进程完成数据表的重建。

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

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

相关文章

【面试】PWM(脉冲宽度调制)相关问题 ——长期更新

1、PWM调节原理 答:通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 2、PWM占空比定义 答:在一个脉冲周期内,高电平的时间占整个周期时间的比例。 3、PWM波形的周期和调节精度由谁决定 答:当计数…

防止CSRF攻击

防止CSRF攻击 跨站点请求伪造(Cross-Site Request Forgery,简称CSRF)是一种常见的网络攻击类型。当用户在受信任的站点上通过身份验证后,访问攻击者精心准备的恶意网站、电子邮件、博客、即时消息或程序时,可能会导致…

软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考: 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列(1)—— 概述_some ip-CSDN博客 深入浅出SOME/IP协议:基本概念和原理-…

Node.js笔记(万字总结)

目录 前言 1.node介绍与使用 1.1 Node介绍 1.2 node.js的优势 1.3 node的安装 1.4 检验是否成功安装 1.5 第一个应用 1.5.1 服务器代码 server.js 1.5.2 完整代码 1.5.3 运行 1.5.4 测试 2.获取参数 3.模块系统 1.模块介绍 2.xiaoyu.js 3.xiaoyu.js完整代码 4…

单兵组网设备+指挥中心:集群系统技术详解

一、单兵设备功能特点 单兵组网设备是现代通信技术的重要成果,旨在为单个作战或工作单元提供高效的通信和数据传输能力。其主要功能特点包括: 1. 便携性:设备轻巧,便于单兵携带和使用,适应各种复杂环境。 2. 通信能…

Python爬虫实战:利用代理IP获取电商数据

文章目录 1.电商数据介绍2.爬取目标3.代理IP推荐4.准备工作4.1 模块安装4.2 代理IP获取 5.爬虫代码实战5.1分析网页5.1.1 获取cookie5.1.2 关键词分析5.1.3 翻页分析5.1.4 数据获取分析 5.2 发送请求5.3 提取数据5.4 保存数据5.5 完整源码5.6 数据分析六、总结 1.电商数据介绍 …

海山数据库(He3DB)代理ProxySQL使用详解:(二)功能实测

读写分离实测 ProxySQL官方demo演示了三种读写分离的方式:使用不同的端口进行读写分离、使用正则表达式进行通用的读写分离、使用正则和digest进行更智能的读写分离。最后一种是针对特定业务进行的优化调整,也可将其归结为第二种方式,下边分…

紫光展锐突破创新终端品类,搭载展锐芯的全球首款二合一5G云电脑正式发布

近日,搭载紫光展锐5G芯片T760的中兴云电脑逍遥系列正式发布,亮点: 全球首款二合一5G云电脑,支持本地/云端双模式,一键切换,用户可同时享有Android平板和Windows云电脑两种形态;支持5G蜂窝网络&…

【OceanBase诊断调优】—— 排查 IO 问题的方法

本文主要介绍 OceanBase 数据库 V4.x 版本中排查 IO 问题的方法以及 IO 相关的日志和视图。 IO 相关问题 -4013 内存爆、IoControl 模块内存泄漏 目前 IO 内存爆可能的原因如下,及相应的排查方法。 其他模块使用 IO 内存后未释放导致泄漏。 日志分析。 通过关键词…

视频批量剪辑神器:一键合并多个视频,轻松添加音频,高效创作无极限!

视频已经成为我们生活中不可或缺的一部分。无论是工作汇报、生活记录,还是创意表达,视频都扮演着至关重要的角色。然而,对于很多非专业剪辑师来说,视频剪辑却是一项既繁琐又耗时的工作。别担心,今天我要给大家介绍一款…

全球AI新闻速递527

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

Mysql中的慢查询

Mysql慢查询的一些sql命令 慢查询的默认事件为10秒 #注意:慢查询一般是在调试阶段开启的,在开发阶段中一般不会开启,会对效率产生延误 #查询慢查询是否开启 show variables like %general%; #慢查询时间设置 show variables like long_query…

酷开科技相伴童年 | 酷开系统六一特辑:亲子共赏,启迪成长

六一儿童节,属于每个茁壮成长的孩子,也属于每个童心未泯的“少年”。《小王子》里说,使生活如此美丽的是我们藏起来的真诚和童心。马上就到六一儿童节了,就让我们用温柔而富有童真的笔触,唤醒那份沉睡已久的童心吧。 在…

NVIDIA Orin/Jetson 平台+数字同轴GMSL 车载AI视觉方案,应用于车载,机器人等领域

专注于成像和视觉技术于近期正式发布了可适配NVIDIA DRIVE AGX Orin平台的一系列摄像头产品,该产品是自主开发的数字同轴GMSL2摄像头模组,可满足智能汽车的高质量成像需求。 目前,推出可适配于NVIDIA DRIVE AGX Orin平台的摄像头产品一共有11…

微软改进WSL子系统 新版将支持镜像宿主机网络接口及使用外部DNS

Windows SubSystem for Linux (即 WSL) 是微软在 Windows 10/11 中开发的子系统功能,该功能允许用户在 Windows 上安装 Linux 系统和相关环境,对开发者来说可以构建 Linux 开发环境进行工作。不过 WSL 系统在功能上也有不少缺点,典型的就是默…

docker安装Elasticsearch(ES)详细教程

使用Docker来安装Elasticsearch(简称ES)的详细教程如下: 1. 前提条件 确保你的系统已经安装了Docker,并且Docker服务正在运行。如果你使用的是Windows系统,还需要确保已经启用了Hyper-V和容器功能。 2. 拉取Elastic…

Python-opencv通过距离变换提取图像骨骼

文章目录 距离变换distanceTransform函数 距离变换 如果把二值图像理解成地形,黑色表示海洋,白色表示陆地,那么陆地上任意一点,到海洋都有一个最近的距离,如下图所示,对于左侧二值图像来说,【d…

工程技术SCI期刊,中科院4区,收稿范围非常广泛,审稿快易录用!

一、期刊名称 CMES-Computer Modeling in Engineering & Sciences 二、期刊简介概况 期刊类型:SCI 学科领域:工程技术 影响因子:2.4 中科院分区:4区 三、期刊征稿范围 本期刊在工程与科学的计算机建模领域发表具有合理永…

神经网络的工程基础(一)——利用PyTorch实现梯度下降法

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下:regression2chatgpt/ch06_optimizer/gradient_descent.ipynb 本文将讨论利用PyTorch实现…

力扣 第 399 场周赛 解题报告 | 珂学家 | 调和级数 + 分块DP

前言 T1. 优质数对的总数 I 题型: 签到 class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:res 0for v1 in nums1:for v2 in nums2:if v1 % (v2 * k) 0:res 1return resT2. 压缩字符串 III 思路: 模拟 感觉引入一个栈&…