介绍
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。关于ClickHouse是特性,[4]官方文档有详细说明,不再赘述。简单理解,一个字“快”,两个字“很快”,高性能是其最大的卖点,[5]有ClickHouse与各种分析性数据库的性能对比,从各大公司的实际使用情况看,相比Hive等有几十、几百倍的性能提升。本文通过docker-compose的方式在单机上模拟多机分布式环境,试玩ClickHouse的基本操作,对ClickHouse有一个基本认识。
值得注意的是,ClickHouse也有一些缺陷[4]。
- 没有完整的事务支持。
- 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据,但这符合 GDPR。
- 稀疏索引使得ClickHouse不适合通过其键检索单行的点查询。
实操
基本操作
docker-compose配置放置在github上clickhouse-playgrounds。
- clone仓库
git clone /lzshlzsh/
- 启动ClickHouse集群
cd clickhouse-playgrounds/playground-docker-compose
docker-compose up -d
- 启动ClickHouse client,以下称之为
控制台1
docker-compose run --no-deps --rm client
启动了6个节点的集群cluster_3shards_2replicas
,共3个分片,每个分片2备份。在client命令行运行如下sql。
select * from ;
┌─cluster───────────────────────────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐
│ cluster_3shards_2replicas │ 1 │ 1 │ 1 │ ck1 │ 172.18.0.7 │ 9000 │ 1 │ default │ │ 0 │ 0 │
│ cluster_3shards_2replicas │ 1 │ 1 │ 2 │ ck2 │ 172.18.0.8 │ 9000 │ 0 │ default │ │ 0 │ 0 │
│ cluster_3shards_2replicas │ 2 │ 1 │ 1 │ ck3 │ 172.18.0.4 │ 9000 │ 0 │ default │ │ 0 │ 0 │
│ cluster_3shards_2replicas │ 2 │ 1 │ 2 │ ck4 │ 172.18.0.6 │ 9000 │ 0 │ default │ │ 0 │ 0 │
│ cluster_3shards_2replicas │ 3 │ 1 │ 1 │ ck5 │ 172.18.0.2 │ 9000 │ 0 │ default │ │ 0 │ 0 │
│ cluster_3shards_2replicas │ 3 │ 1 │ 2 │ ck6 │ 172.18.0.5 │ 9000 │ 0 │ default │ │ 0 │ 0 │
- 关闭集群,注意所有的数据都会清理
docker