メインコンテンツへスキップ
メインコンテンツへスキップ

ClickHouse OSS クイックスタート

このクイックスタートチュートリアルでは、いくつかの簡単なステップで OSS ClickHouse をセットアップします。ClickHouse CLI clickhousectl を使用して ClickHouse をインストールし、 ClickHouse サーバーを起動してサーバーに接続し、テーブルを作成して、 そのテーブルにデータを挿入し、SELECT クエリを実行します。

ClickHouse CLIのインストール \

ClickHouse CLI (clickhousectl) は、ローカルの ClickHouse バージョンのインストールと管理、サーバーの起動、クエリの実行に使用するツールです。次のコマンドでインストールします。

curl https://clickhouse.com/cli | sh

便宜上、chctl エイリアスも自動的に作成されます。

ClickHouseのインストール

ClickHouseはLinuxおよびmacOS上でネイティブに動作し、Windowsでは WSL経由で動作します。

CLIを使用して、ClickHouseの最新安定版をインストールします:

clickhousectl local install stable
注記

これは本番環境向けの ClickHouse インストール方法として推奨されていません。 本番環境に ClickHouse をインストールする場合は、インストールページをご参照ください。

サーバーの起動

ClickHouse サーバーインスタンスを起動します:

clickhousectl local server start --name my-first-server

サーバーはデフォルトでバックグラウンドで実行されます。起動していることを確認するには:

clickhousectl local server list

クライアントの起動

実行中の ClickHouse サーバーに接続します:

clickhousectl local client --name my-first-server

localhost で実行中のサービスに接続すると、スマイルフェイスが表示されます。

my-host :)

テーブルを作成する

CREATE TABLE を使用して新しいテーブルを定義します。一般的な SQL DDL コマンドは ClickHouse でも動作しますが、1 点追加事項があります。ClickHouse のテーブルには ENGINE 句が必要です。ClickHouse のパフォーマンス上の利点を最大限に活用するには、MergeTree を使用してください。

CREATE TABLE my_first_table
(
    user_id UInt32,
    message String,
    timestamp DateTime,
    metric Float32
)
ENGINE = MergeTree
PRIMARY KEY (user_id, timestamp)

データの挿入

ClickHouseでは使い慣れた INSERT INTO TABLE コマンドを使用できますが、MergeTree テーブルへの挿入ごとに、ClickHouseがストレージ上にパーツと呼ばれるものを作成する点を理解しておくことが重要です。これらのパーツは後でClickHouseによってバックグラウンドでマージされます。

ClickHouse では、バックグラウンドでマージが必要となるパーツの数を最小限に抑えるため、一度に大量の行 (数万〜数百万件) をバルク挿入することを推奨しています。

このガイドでは、その点についてはまだ気にしなくて構いません。以下のコマンドを実行して、テーブルにいくつかの行のデータを挿入してください。

INSERT INTO my_first_table (user_id, message, timestamp, metric) VALUES
    (101, 'Hello, ClickHouse!',                                 now(),       -1.0    ),
    (102, 'Insert a lot of rows per batch',                     yesterday(), 1.41421 ),
    (102, 'Sort your data based on your commonly-used queries', today(),     2.718   ),
    (101, 'Granules are the smallest chunks of data read',      now() + 5,   3.14159 )

新しいテーブルをクエリする

他のSQLデータベースと同様に、SELECT クエリを記述できます:

SELECT *
FROM my_first_table
ORDER BY timestamp

レスポンスが見やすい表形式で返ってくることに注目してください:

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│     102 │ Insert a lot of rows per batch                     │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ Sort your data based on your commonly-used queries │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ Hello, ClickHouse!                                 │ 2022-03-22 14:04:09 │      -1 │
│     101 │ Granules are the smallest chunks of data read      │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4 rows in set. Elapsed: 0.008 sec.

独自のデータを挿入する [#insert-own-data}

次のステップは、独自のデータを ClickHouse に取り込むことです。データの取り込みには、多数のテーブル関数およびインテグレーションを利用できます。以下のタブにいくつかの例を示しています。ClickHouse と連携するテクノロジーの一覧については、インテグレーションページをご覧ください。

s3 テーブル関数を使用して、 S3 からファイルを読み取ります。これはテーブル関数です。つまり、結果はテーブルとして返され、 次のように利用できます。

  1. SELECT クエリのソースとして使用する (アドホッククエリを実行しつつ、 データは S3 に置いたままにできます) 。または...
  2. 結果のテーブルを MergeTree テーブルに挿入する (データを ClickHouse に移す準備ができたら)

アドホッククエリは次のようになります。

SELECT
passenger_count,
avg(toFloat32(total_amount))
FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
GROUP BY passenger_count
ORDER BY passenger_count;

データを ClickHouse テーブルに移すには、次のようにします。ここで、 nyc_taxiMergeTree テーブルです。

INSERT INTO nyc_taxi
SELECT * FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
SETTINGS input_format_allow_errors_num=25000;

ClickHouse で S3 を使用する方法の詳細や、さらに多くの例については、AWS S3 に関するドキュメントページ集を参照してください。


データの探索

  • ClickHouse の内部的な仕組みの基本を学ぶには、コアコンセプト セクションを参照してください。
  • ClickHouseの主要な概念と機能をより深く理解するには、進階チュートリアルをご覧ください。
  • ClickHouse Academy の無料オンデマンドトレーニングコースを受講して、学習を続けてください。
  • 挿入手順を記載したサンプルデータセットの一覧を用意しています。
  • データを外部ソースから取り込む場合は、メッセージキュー、データベース、パイプラインなどへの接続方法をまとめた連携ガイド集を参照してください。
  • UI/BI可視化ツールを使用している場合は、UI を ClickHouse に接続するためのユーザーガイドを参照してください。
  • 主キー に関するユーザーガイドには、主キーについて知っておくべきことと、その定義方法が一通りまとめられています。