速さの哲学は不必要なデータを読まないこと──徹底的なチューニングの中身
いま求められるスピード、スケール、コストを満たせるとして、松本氏が挙げるのが「ClickHouse」だ。オープンソースのカラム型OLAPデータベースで、膨大なデータを超高速で分析できるように設計されている。特徴はSQLが使えてあらゆるワークロードに対応できること、PB級でもミリ秒で応答できること、数十倍ものデータ圧縮率でコストを削減できることの3点が挙げられる。
なかでも松本氏が強調するのがSQLをインターフェースに持つことだ。これはAI時代の現在でも有利に働くという。松本氏は「SQLは開発が始まってから50年経っています。学習データが豊富なので、生成AIがSQLを作る精度が非常に高い。インターフェースがSQLというのは、非常にAIの時代にマッチしていると言えます」と説明する。
簡単に歴史を振り返ると、ClickHouseは2009年にプロトタイプが誕生し、2016年にオープンソース化。2021年に米国でClickHouse社が設立され、2022年からマネージドサービスのClickHouse Cloudを提供。日本では2024年にAWSの東京リージョン、2025年にGoogle Cloudの東京リージョンが開設済みだ。
DB-Enginesの分析系OSSデータベースランキングで1位、GitHubスターは4万8400以上、ClickHouse Cloud利用企業は4000社を超える。1年前に2000社、3か月前に3000社だったので、いま急速に普及しているところだ。
ClickHouseを使うとしたら、選択肢はOSS版とマネージドサービスのClickHouse Cloud(Cloud版)がある。PB規模をミリ秒で処理し、高QPSの同時実行と高圧縮を備え、SQLでシンプルに扱えるというOSS版の強みはそのままに、Cloud版ではクラウドネイティブなアーキテクチャが加わる。コンピュートとストレージを分離することでリニアにスケールし、ワークロードに応じて即時にスケールアップ・ダウンできる。マルチゾーン構成で可用性を確保しつつ、使わないときはコンピュートをゼロにするScale-to-Zeroでコストを最適化できる。
エンジニアとして最も興味があるのは「なぜ速いのか」ではないだろうか。松本氏は「徹底的にチューニングしています」と言う。仕掛けは4つある。
1点目はカラム型ストレージ。列単位でデータを保持するため、クエリに必要な列だけを読むことでI/Oを劇的に減らしている。同じ種類のデータが並ぶため圧縮も効き、オブザーバビリティ用途なら元データの10分の1から20分の1になる。
2点目は大容量インサートと参照クエリが競合しない設計。INSERTはPartsと呼ばれる小さなイミュータブルな単位を作るだけとして、SELECTはその時点のPartsを読むだけなので、ロック競合なしで読み書きを並行できる。
3点目はマルチスレッド×分散並列スキャンで、1つのクエリを複数のサーバーに分割し、さらに各サーバーのCPUコアへ分散する。
4点目はSIMDベクトル化とJITコンパイル。1クロックで複数データを同時処理するCPU命令を最大限使い、クエリをネイティブコードに変換する。ストレージからCPU命令まで全レイヤーで「読まない・無駄にしない」を徹底しているのが速さの正体だ。
ClickHouseが自社で、分析クエリの処理効率を速度とコストの2軸で検証したところ、主要な データプラットフォームに対して23倍から101倍のコスト効率の差が出たという。検証はCostBenchの43クエリによるもので、テストセットやクエリ、各社の課金モデルを含む算出方法は同社のブログで公開されている。

