この記事はラクス Advent Calendar 2021の16日目の記事です。
昨日は@r_numotoさんのLaravel SailでDocker環境を作ってみるでした。
ClickHouseとは
ラクスのOrganizationでClickHouseについて触れるのは初めてなので説明すると。
ClickHouseはオンライン分析用に開発されたオープンソースの列指向型データベース管理システムです。YandexというロシアのGoogle的な会社がアクセス解析を行う(Googleアナリティクス相当のYandex.Metricaを実現する)ために開発した製品で、現在はYandexから独立したClickHouse, incが開発を行っています。他の製品だとAWSのRedShiftや、GoogleのBigQueryが近い製品になります。
そのほか公式ドキュメントの概要を御覧ください。ちょっと古いですが↓の資料も特徴を知るにはいいと思います。
自前でホスティングすることも可能ですし、Altinity.cloudやYandex.cloudのサービスを使うこともできます。
ClickHouse 21.12
昨日(2021/12/15)、ClickHouse21.12のドキュメントが公開されました。日本時間2012/12/17 02:00からはRelease Webinarが開催され、リリースはその後されると思います。
Webinar
リリース記事
アドベントカレンダーの担当前日にタイミング良すぎ!ということで、本記事ではChangelogから目についた新機能を紹介したいと思います。
BOOL型のサポート
ClickHouseの特徴として、他の製品(MySQLやPostgreSQL、Kafkaなど)と連携が可能というものがあり、この機能追加もその一環です。テーブルにBool型のカラムを定義できるようになり、真(1
, true
, TRUE
)や偽(0
, false
, FALSE
)を扱えるようになりました。
CNFオプティマイザーの追加
フィルター条件により速度が出ない問題の解決のため、CNFでのオプティマイザーが追加されたようです。ドキュメントがないため使い方は見切れていませんが用途によりCNFとDNFを使い分けられるようです。
ファイルからデータ登録が複数並列で行えるように
例えば、次のクエリINSERT INTO t FROM INFILE hoge/*
を実行することでhoge以下の全ファイルをt
にロードすることができます。すべてのファイルは並列で処理されるので、かなりの速度が期待できそうです。
カスタムフォーマットの追加と、各種フォーマットのバグ修正
ClickHouseでは入出力にCSV、TSV、JSON、Parquetなど様々なフォーマットに対応しています。今回はそのフォーマットについてのバグ修正と、独自フォーマットの定義を作成可能にする機能追加が行われました。
URLテーブル関数にリトライオプションを追加
ClickHouseには様々なテーブル関数が用意されていて、その一つにurlがあります。例えばSELECT * FROM url(https://hoge.com/sample.csv, CSV, 'id Int32, value String')
とすればsample.csvにアクセスし、ファイルに対してSQL文を実行できます。
今回の機能追加で、アクセスに失敗した際に再試行を行えるようになりました。
最後に
今回の更新ではバグフィックスや、性能改善が多めになっていました。
2021年のロードマップもそれなりに完了していて、来年以降も活発に開発されていきそうです。