概要
ClickHouseの性能が良さそうで、aws redshift
より優れているそうですので、ちょっとローカルで環境構築し、使ってみました。情報を忘れないために、このブログで記載します。
ClickHouseとは
ClickHouseは、クエリのオンライン分析処理(OLAP)用の列指向のデータベース管理システム(DBMS)です。
環境構築
バージョン
OS
macOS
docker
ClickHouse
19.1.13
デモのgithub
docker-compose.yml作成
version: '3'
services:
clickhouse:
image: yandex/clickhouse-server
container_name: ck
ports:
# httpリクエスト使うport
- 8123:8123
# クライアントport
- 9000:9000
volumes:
- type: bind
source: "./database"
target: "/var/lib/clickhouse"
- type: bind
source: "./config/clickhouse-config.xml"
target: "/etc/clickhouse-server/config.xml"
- type: bind
source: "./config/users.xml"
target: "/etc/clickhouse-server/users.xml"
networks:
clickhouse-net:
aliases:
- clickhouse.local.me
houseclient:
build: ./houseclient
container_name: hc
command: "tail -f /dev/null"
networks:
clickhouse-net:
aliases:
- houseclient.local.me
tabix:
image: spoonest/clickhouse-tabix-web-client
container_name: tb
ports:
- 8888:80
networks:
clickhouse-net:
aliases:
- houseclient.local.me
networks:
clickhouse-net:
config/clickhouse-config.xml 作成
ClickHouseのconfig.ymlのファイルコピーペース利用すれば良い
config/users.yml 作成
ClickHouseのusers.ymlのファイルコピーペース利用すれば良い
各ファイル作成し終わったら、ディレクトリのイメージ
├── config
├── clickhouse-config.xml
├── users.xml
├── database (clickhouseのデータベースファイル)
├── docker-compose.yml (docker-compse.ymlファイル)
tabix、clickhouse-cli、clickhouseなど起動
今回いろんなツールを使ってみようと思い、lighthouse
、tabix
、clickhouse-cli
なども設定しました。詳細はここに記載しました。自分のおすすめはtabix
です。
docker-compose up
ClickHouseのメリット
- 学習コストは低くて、SQLはほぼMySQLと一緒、データのタイプもMySQLと一緒.
- 素早い
- データをインサートする時、たくさんデータを集めて、インサートするのは早い。一行ずつインサートなら、逆にパフォマンスはよくないらしい。(これはメリットとはいえないですね。)
ClickHouseのデメリット
- Transactionはサポートしていない
- MySQLみたいなupdate・deleteなどサポートしてない
- aws・gcpにはClickHouseのcloud manangeサービスが提供されていない
use case
log analysis
メモ
- ClickHouseのデフォルトユーザ名は: defaultで、パスワードはない。clickhouse-cliを叩けば、アクセスできる
docker exec -it hc clickhouse-cli -h clickhouse.local.me -p 8123 -u default
テーブルエンジン編
参考した記事
1: qiitaの記事
2: zhihu
3: wiki
4: ClicHouseのドキュメントサイト
5: 一番分かりやすいMergeTreeの説明