メインコンテンツへスキップ
ClickHouse® は、オンライン分析処理 (OLAP) 向けの高性能なカラム指向 SQL データベース管理システム (DBMS) です。オープンソースソフトウェアクラウド版 の両方で提供されています。

アナリティクスとは

アナリティクスは、OLAP (オンライン分析処理) とも呼ばれ、大規模なデータセットに対して複雑な計算 (例: 集計、文字列処理、算術演算) を行う SQL クエリを指します。 トランザクションクエリ (または OLTP: Online Transaction Processing) は、1 回のクエリで読み書きする行数がごく少ないためミリ秒単位で完了しますが、アナリティクスクエリでは通常、数十億から数兆行を処理します。 多くのユースケースでは、アナリティクスクエリは「リアルタイム」である必要があります。つまり、1 秒未満で結果を返さなければなりません。

行指向ストレージとカラム指向ストレージ

このレベルの性能は、適切なデータの”向き”によってのみ実現できます。 データベースは、データを行指向またはカラム指向のいずれかの方式で格納します。 行指向データベースでは、テーブルの連続する行が順に1つずつ格納されます。このレイアウトでは、各行のカラム値がまとめて保存されるため、行をすばやく取り出せます。 ClickHouse はカラム指向データベースです。このようなシステムでは、テーブルはカラムの集合として格納され、つまり各カラムの値が順に1つずつ保存されます。このレイアウトでは、単一の行を取り出しにくくなります (行の値の間にギャップが生じるため) が、フィルタや集約などのカラム単位の処理は、行指向データベースよりもはるかに高速になります。 この違いは、実際の匿名化された Web アナリティクスデータ 1 億行に対して実行するクエリ例を見ると最もよくわかります。
SELECT MobilePhoneModel, COUNT() AS c
FROM metrica.hits
WHERE
      RegionID = 229
  AND EventDate >= '2013-07-01'
  AND EventDate <= '2013-07-31'
  AND MobilePhone != 0
  AND MobilePhoneModel not in ['', 'iPad']
GROUP BY MobilePhoneModel
ORDER BY c DESC
LIMIT 8;
ClickHouse SQL Playground でこのクエリを実行できます。このクエリは、存在する100 個超のカラムのうちごく一部だけを選択してフィルタリングし、結果を数ミリ秒で返します。 上の図の統計セクションを見るとわかるように、このクエリは 1 億行を 92 ミリ秒で処理しており、スループットは毎秒 10 億行超、データ転送量にすると毎秒 7 GB 弱に相当します。 行指向 DBMS 行指向データベースでは、上のクエリで既存のカラムのうちごく一部しか処理しない場合でも、システムは他のカラムのデータもディスクからメモリに読み込む必要があります。その理由は、データが blocks と呼ばれるチャンク (通常は 4 KB や 8 KB などの固定サイズ) 単位でディスクに保存されているためです。blocks は、ディスクからメモリに読み込まれる最小のデータ単位です。アプリケーションやデータベースがデータを要求すると、オペレーティングシステムのディスク I/O サブシステムが必要な blocks をディスクから読み取ります。block の一部だけが必要な場合でも、メモリには block 全体が読み込まれます (これはディスクおよびファイルシステムの設計によるものです) 。 カラム指向 DBMS 各カラムの値はディスク上に順番に連続して格納されるため、上記のクエリを実行しても不要なデータは読み込まれません。 また、ディスクからメモリへのブロック単位での保存と転送は、分析クエリのデータアクセスパターンに適しているため、クエリに必要なカラムだけがディスクから読み込まれ、使われないデータに対する不要な I/O を避けられます。これは、無関係なカラムを含む行全体を読み込む行ベースのストレージと比べて、はるかに高速です

データのレプリケーションと整合性

ClickHouse は、データを複数のノードに冗長保存するために、非同期のマルチマスター レプリケーション方式を採用しています。利用可能な任意のレプリカに書き込まれると、残りのレプリカはバックグラウンドでそのコピーを取得します。これにより、各レプリカで同一のデータが維持されます。ほとんどの障害からの復旧は自動的に行われ、複雑なケースでは半自動的に行われます。

ロールベースのアクセス制御

ClickHouse は、SQL クエリによるユーザーアカウント管理を実装しており、ANSI SQL 標準や一般的なリレーショナルデータベース管理システムで採用されているものと同様の、ロールベースのアクセス制御を設定できます。

SQL サポート

ClickHouse は、多くのケースで ANSI SQL 標準と同一の SQL ベースの宣言型クエリ言語をサポートしています。サポートされているクエリの構成要素には、GROUP BYORDER BYFROM 内のサブクエリ、JOIN 句、IN 演算子、window functions、およびスカラーサブクエリが含まれます。

近似計算

ClickHouse には、精度をある程度犠牲にしてパフォーマンスを向上させる方法があります。たとえば、一部の集約関数では、一意な値の数、中央値、分位点を近似的に計算できます。また、データのサンプルに対してクエリを実行し、近似結果をすばやく求めることもできます。さらに、集計はすべてのキーではなく、限られた数のキーに対して実行することもできます。キーの分布にどの程度偏りがあるかによっては、これにより、厳密な計算よりもはるかに少ないリソースで、十分に正確な結果を得られる場合があります。

適応型 JOIN アルゴリズム

ClickHouse は JOIN アルゴリズムを適応的に選択します。まず高速なハッシュ結合を使用し、大きなテーブルが複数ある場合はマージ結合に切り替えます。

優れたクエリパフォーマンス

ClickHouseは、極めて高速なクエリパフォーマンスで広く知られています。 ClickHouseがこれほど高速な理由については、ClickHouseはなぜ高速なのか?ガイドをご覧ください。
最終更新日 2026年6月10日