ClickHouse 初步认识
概述
Clickhouse 是分析型数据库,真正的面向列式存储,支持高维度表。它免费开源、具备高效的数据导入和查询性能,能达到 50M/200M 每秒。支持实时查询、支持不同功能底层存储引擎,例如:MergeTree、Replicate、Distributed、Kafka 等。
特性
1、面向分析型数据库、SQL、结构化、MPP,独立于 hadoop 生态。
2、C++ 开发,支持 Linux。
3、高速写入 (50M/200M) 每秒,支持实时查询。
4、列式存储结构,高效压缩,SIMD、向量化计算。
5、充分利用硬件资源,既能水平扩展,也能垂直扩展。
6、支持不能底层存储引擎,例如:MergeTree、Replicate、Distributed、Kafka 等。
应用场景
1、大多数是读请求
2、数据总是以相当大的批(> 1000 rows)进行写入
3、不修改已添加的数据
4、每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
5、宽表,即每个表包含着大量的列
6、较少的查询(通常每台服务器每秒数百个查询或更少)
7、对于简单查询,允许延迟大约50毫秒
8、列中的数据相对较小: 数字和短字符串(例如,每个URL 60个字节)
9、处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
10、事务不是必须的
11、对数据一致性要求低
12、每一个查询除了一个大表外都很小
13、查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中
使用 Docker 方式安装ClickHouse
创建数据持久化目录
mkdir $HOME/some_clickhouse_database
创建并运行 clickhouse-server 容器
docker run -d -p 8123:8123 --name some-clickhouse-server --ulimit nofile=262144:262144 --volume=$HOME/some_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server
创建并运行 clickhouse-client 容器
docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
简单使用
创建表
:) create table t (id UInt16, name String) engine=MergeTree order by (id);
插入数据
:) insert into t(id, name) values (1, 'first');
:) insert into t(id, name) values (2, 'second');
:) insert into t(id, name) values (3, 'three');
查询数据
:) select * from t;
更新数据
:) alter table t update name='first1' where id=1;
删除数据
:) alter table t delete where id=1;
相关参考
1、https://gitbook.cn/books/5dc5c2e6573506442c3b30c2/index.html
2、https://clickhouse.tech/docs/zh/
3、https://uzshare.com/view/819521