介绍
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统。
来自不同列的值被单独存储,来自同一列的数据被存储在一起。
特性
- 真正的列式数据库管理系统
- 数据压缩
- 数据磁盘存储
- 多核心并行处理
- 多服务器分布式处理
- 支持SQL
- 向量引擎
- 实时数据更新
- 支持索引
- 适合在线查询
- 支持近似计算
- 支持嵌套的数据结构
- 支持数据复制和数据完整性
- 支持角色权限控制
缺陷
- 不支持事务
- 缺少高频修改删除操作,只能批量修改删除
数据库引擎
数据库引擎允许您使用表。
默认情况下,ClickHouse采用Atomic数据库引擎。他提供了可配置的表引擎和SQL查询语言。
数据库引擎有:MySQL、Atomic、MaterializeMySQL、Lazy、PostgreSQL、MaterializePostgreSQL、Relicated。
-
MySQL引擎
MySQL引擎用于将远程的MySQL服务器中的数据表映射到clickhouse中,并允许您对表进行Insert和select操作,以方便在CIickhouse与MySQL中进行数据交换。
ClickHouse中的MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到服务器中,因此您可以执行SHOW TABLES或SHOW CREATE TABLE之类的操作。
但无法对其执行:RENAME、CREATE TABLE、ALTER。 -
Atomic引擎
ClickHouse中的Atomic引擎支持非阻塞的DROP TABLE和RENAME TABLE查询和原子的EXCHANGE TABLES t1 AND t2查询。ClickHouse默认使用Atomic数据库引擎。
数据库Atomic的表都有唯一的UUID,并将数据存储在目录/clickhouse_path/store/xxx/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/中,其中xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy是UUID。通常UUID是自动生成的。
表引擎
表引擎在ClickHouse中的作用十分关键,直接决定了数据如何存储和读取、是否支持并发、是否支持index、支持的query种类、是否支持主备复制等。一共分为四个类型:Log、MergeTree、Integration、Special。
Log系列表引擎功能相对简单,只要用于快速写入表(1百万行左右),然后全部读出的场景。
Integeration表引擎主要用于将外部数据导入ClickHouse中,或者在ClickHouse中直接操作外部数据源。
Special引擎是为了特定的场景而定制。如:Memory、Buffer、File、Null。
MergeTree是官方推荐的存储引擎,支持几乎所有ClickHouse核心功能。
- MergeTree
ClickHouse中最强大的数据表引擎是MergeTree(合并树)引擎及该系列的(*MergeTree)中的其他引擎。MergeTree系列引擎被设计用于插入大量的数据到一张表中。数据可以以数据片段的形式一个接着一个快速写入,数据片段在后台按照一定的规则进行合并。相比于在插入时不断修改(重写)已存储的数据,这种策略会高很多。 - 主要特点:
1、存储的数据按主键排序。
2、可以指定分区键。
在相同数据集和相同结果集的情况下ClickHouse中某些带分区的操作会比普通操作快。查询时指定分区键时ClickHouse会自动截取分区。增加了查询性能。
3、支持数据副本
4、支持数据采样。