ClickHouseに入門してみた
ClickHouseとは
リアルタイムデータウェアハウスです。OLAPなのに超高速でコストがとても安いというのが魅力なサービスになります。インテグレーションも豊富で便利ということに尽きます。
似た製品はBigQuery
、Redshift
、Snowflake
あたりです。ログ補完とビジュアライズという文脈で使うのであればDatadog
、NewRelic
の代替製品にもなり得ます。
速度と料金は多くの場合上回るというメリットがあるのですが、彼らほど柔軟性に富んではいないため技術的ハードルと運用コストがデメリットになります。
※公式サイトを引用
ドキュメント
公式サイトのドキュメントがかなりきれいにまとまっており一通りできます。まずは、目を通すと良いでしょう。
Docker Composeで動作確認してみる
本番運用であれば、Cloud版を利用するのが良いでしょう。動作検証レベルではOSS版が良いと思います。ClickHouseはデータストア(とデータ操作UI)の提供になりますのでグラフなどのビジュアライズは別に用意する必要があります。ClickHouse専用コネクタが準備されているものは多数存在しますが、もっともメジャーなGrafana
で確認していこうと思います。
services:
clickhouse:
image: clickhouse/clickhouse-server:latest
container_name: clickhouse
environment:
CLICKHOUSE_DB: mydb
CLICKHOUSE_USER: myuser
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
CLICKHOUSE_PASSWORD: password
ports:
- "8123:8123" # http
- "9001:9000" # native tcp, 9000 portが私の環境では使用済だったので9001に振り替えた
volumes:
- ./click-data/var/lib/clickhouse:/var/lib/clickhouse
- ./click-data/var/log/clickhouse-server:/var/log/clickhouse-server
ulimits:
nproc: 65535
nofile:
soft: 262144
hard: 262144
networks:
- clickhouse-grafana
grafana:
image: grafana/grafana:latest
container_name: grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_INSTALL_PLUGINS=grafana-clickhouse-datasource
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=grafana-clickhouse-datasource
ports:
- "3000:3000"
volumes:
- grafana-storage:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
depends_on:
- clickhouse
networks:
- clickhouse-grafana
user: "472" # Grafanaの標準ユーザーID
networks:
clickhouse-grafana:
driver: bridge
volumes:
grafana-storage:
docker composeを起動しましょう
docker compose up -d
起動できましたら、ClickHouseにアクセスしてデータを投入していきます。8123
ポートでDBアクセスできますのでアクセスしていきましょう。
WEB SQL UI
ボタンでSQL実行画面にはいることができます。
※もしローカルのツールから接続が良い場合は、DBaver
が専用の接続を持っていますのでお勧めします。
DBを早速追加して、
CREATE DATABASE IF NOT EXISTS mydb
サンプルテーブル、データを作成します。公式にたくさんのサンプルがありますので選択するのがよいでしょう。コマンドも公式サイトに記載があるため、省略します。
9000
ポートへアクセスするとGrafanaでデータを可視化できます。ClickHouseのプラグインを導入済みになっていると思いますので、SQLでデータを抽出しグラフ化すればOKです。大量データが瞬時にグラフ化できたことが確認できたと思います。
GitHub(サンプル)
Docker ComposeなどはGitHubへ保存しておきましたので必要に応じで参照してください。Grafanaの設定も入っています。
さいごに
高速で安価なデータ分析基盤に興味がある方は、まずはローカルでClickHouseを触ってみるのがおすすめです。数百万件規模のデータを瞬時にクエリ・グラフ化できる性能は、初回の検証でも十分にインパクトを感じられるはずです。
Discussion