🗒️ClickHouse架构概述
00 分钟
2023-1-30
2024-6-29
type
status
date
summary
slug
tags
category
password
URL
icon

ClickHouse架构概述

完备的DBMS功能

● 支持DDL ● 支持DML ● 权限控制:按照用户粒度设置数据库/表的权限 ● 数据备份与恢复:提供了数据备份导出和导入恢复机制 ● 分布式管理:提供集群模式,能够自动管理多个数据库节点

列式存储与数据压缩

按列存储与按行存储相比,扫描的数据量更少,同时,针对同一列相同的数据类型,压缩效果也更好。 向量化执行引擎 借助CPU的SIMD指令,在CPU的寄存器层面实现数据的并行操作 关系模型与SQL查询 ● ClickHouse使用关系模型 ● 与MySQL不同,ClickHouse是大小写敏感的
ClickHouse是多主架构,而不是主从架构。客户端访问任何一个节点都能得到相同的效果。

ClickHouse支持横向分片

ClickHouse提供了本地表(Local Table)和分布式表(Distributed Table)。一张本地表等同于一份数据的分片。分布式表不存储任何数据,是本地表的访问代理,其作用类似于分库中间件。

ClickHouse安装与部署

如果服务器可以联网的话,推荐使用ClickHouse官方的安装方式,否则可以使用离线安装的方法。 离线安装
  1. 首先,进入https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/下载离线安装包,共需下载三个包,分别是clickhouse-client/clickhouse-server/clickhouse-common-static,下载时需要注意版本要保持一致。
  1. 上传离线包到待安装服务器中。
  1. 执行安装命令 rpm -ivh clickhouse-common-xxxxx rpm -ivh clickhouse-sever-xxxxxx rpm -ivh clickhouse-client-xxxxxx
安装完成后,可以通过修改配置来增加账号或者访问权限等。一般情况下,默认配置文件是禁止远程访问连接的,需要修改配置文件来支持该功能。 通用配置文件默认位置为/etc/clickhouse-server/config.xml。 如果想允许远程访问,需要修改配置文件。

ClickHouse数据定义

基本类型

有符号整数类型 Int8/16/32/64 无符号整数类型 UInt8/16/32/64 有限浮点数类型 Float32/Float64(支持保存正负无穷) 有限定点数类型 Decimal(P,S) P代表精度,决定总位数,取值范围是1-38,S代表规模,决定小数位数,取值范围是0-P String 不定长字符串类型 FixedString 定长字符串类型(插入超过长度的字符串会报错,不超过长度的部分会自动填充NULL) UUID 共32位,格式为8-4-4-4-12,如果该类型的字段在写入数据时没有被赋值,则会填充0 DateTime 时间类型,精确到秒 DateTime64 时间类型,精确到亚秒 Date 时间类型,精确到天

复合类型

Array类型,数组类型。指定数组类型后,如果插入的数组数据中存在与规定字段不相符的类型,则该数组数据插入为空,不会提示报错。 比如有定义
插入以下数据后,ch_arr会插入空数据
下述数据,可以正常插入
Tuple类型,元组类型。每个元素允许设置不同的数据类型。

数据库搜索引擎

Ordinary:默认引擎,在绝大多数情况下我们都会使用默认引擎,使用时无需刻意声明。 Dictionary:字典引擎,此类数据库会自动为所有数据字典创建它们的数据表。 Memory:内存引擎,用于存放临时数据,当服务重启时数据会被清除。 Lazy:日志引擎,此类数据库只能使用Log系列的表引擎。 MySQL:此类数据库下会自动拉取远端MySQL中的数据,并为它们创建MySQL表引擎的数据表。
上一篇
解决实际项目中stalled时间过久的问题
下一篇
2022年度总结与2023未来规划