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官方的安装方式,否则可以使用离线安装的方法。
离线安装
- 首先,进入https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/下载离线安装包,共需下载三个包,分别是clickhouse-client/clickhouse-server/clickhouse-common-static,下载时需要注意版本要保持一致。
- 上传离线包到待安装服务器中。
- 执行安装命令 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表引擎的数据表。
- 作者:luxinfeng
- 链接:https://www.luxinfeng.top/article/20230130
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。