ClickHouse docker-compose初试

时间:2024-10-11 18:18:09

介绍

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