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

ClickHouse Cloud クイックスタート

ClickHouse を最も手早く簡単に使い始める方法は、ClickHouse Cloud で新しいサービスを作成することです。
このクイックスタートガイドでは、3 つの簡単なステップでセットアップする手順を説明します。

ClickHouseサービスを作成する

ClickHouse Cloudで無料のClickHouseサービスを作成するには、以下の手順に従ってサインアップしてください:

  • サインアップページでアカウントを作成してください
  • メールアドレス、または Google SSO、Microsoft SSO、AWS Marketplace、Google Cloud、Microsoft Azure のいずれかを利用してサインアップできます
  • メールアドレスとパスワードでサインアップした場合は、届いたメール内のリンクから24時間以内にメールアドレスの確認を完了してください
  • 先ほど作成したユーザー名とパスワードでログインしてください
プランを選択

ログイン後、ClickHouse Cloudのオンボーディングウィザードが起動し、新しいClickHouseサービスの作成手順を案内します。サービスをデプロイするリージョンを選択し、新しいサービスに名前を付けてください。

新しい ClickHouse サービス

デフォルトでは、新規組織はScaleティアに配置され、各レプリカに4 vCPUと16 GiB RAMを持つ3つの^^replica^^が作成されます。Scaleティアでは、垂直オートスケーリングがデフォルトで有効になります。組織ティアは、後で「Plans」ページで変更できます。

必要に応じて、レプリカのスケール範囲となる最小サイズと最大サイズを指定して、サービスリソースをカスタマイズします。準備ができたら、Create serviceを選択します。

スケーリング制限

おめでとうございます!ClickHouse Cloudサービスが稼働し、オンボーディングが完了しました。データの取り込みとクエリの実行方法については、以下をご参照ください。

ClickHouseに接続する

ClickHouseへの接続方法は2つあります:

  • Web ベースの SQL コンソールから接続する
  • アプリケーションから接続する

SQLコンソールを使用して接続する

迅速に開始するには、ClickHouseがWebベースのSQLコンソールを提供しており、オンボーディング完了後に自動的にリダイレクトされます。

SQL コンソール

クエリタブを作成し、簡単なクエリを入力して接続が機能していることを確認します:

SHOW databases

リストには4つのデータベースと、追加したデータベースがあればそれらも表示されます。

SQL コンソール

以上で完了です。新しいClickHouseサービスの使用を開始できます。

アプリケーションへの接続

ナビゲーションメニューから接続ボタンをクリックします。モーダルが開き、サービスの認証情報と、使用するインターフェースまたは言語クライアントでの接続手順が表示されます。

サービス接続

ご使用の言語クライアントが表示されない場合は、インテグレーションの一覧を確認してください。

データを追加する

ClickHouseはデータを取り込むことで真価を発揮します。データを追加する方法は複数あり、そのほとんどはナビゲーションメニューからアクセス可能なData Sourcesページで利用できます。

データソース

以下の方法でデータをアップロードできます:

  • S3、Postgres、Kafka、GCS などのデータソースからデータを取り込み始めるために、ClickPipe を設定する
  • SQL コンソールを使用する
  • ClickHouse クライアントを使用する
  • ファイルをアップロード - JSON、CSV、TSV 形式に対応しています
  • ファイルの URL からデータをアップロードする

ClickPipes

ClickPipesは、多様なソースからのデータ取り込みを数クリックで実現するマネージド統合プラットフォームです。最も要求の厳しいワークロードに対応するよう設計されたClickPipesの堅牢でスケーラブルなアーキテクチャは、一貫したパフォーマンスと信頼性を保証します。ClickPipesは、長期的なストリーミングニーズや一回限りのデータロードジョブに使用できます。

データソースを選択

SQLコンソールを使用したデータの追加

多くのデータベース管理システムと同様に、ClickHouseはテーブルを論理的にデータベースにグループ化します。ClickHouseで新しいデータベースを作成するには、CREATE DATABASEコマンドを使用します:

CREATE DATABASE IF NOT EXISTS helloworld

以下のコマンドを実行して、helloworldデータベースにmy_first_tableという名前のテーブルを作成します:

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

上記の例では、my_first_tableは4つのカラムを持つMergeTreeテーブルです:

  • user_id: 32ビット符号なし整数(UInt32
  • message: 他のデータベースシステムにおける VARCHARBLOBCLOB などの型に代わる String データ型
  • timestamp: ある瞬間を表す DateTime
  • metric: 32ビット浮動小数点数(Float32
テーブルエンジン

テーブルエンジンは以下を決定します:

  • データの保存場所と方法
  • サポートされているクエリ
  • データがレプリケーションされているかどうか

選択可能なテーブルエンジンは多数ありますが、単一ノードのClickHouseサーバー上のシンプルなテーブルには、MergeTreeが最適な選択となるでしょう。

プライマリキーの概要

先に進む前に、ClickHouse におけるプライマリキーの仕組みを理解しておくことが重要です(プライマリキーの実装は、少し意外に感じられるかもしれません):

  • ClickHouse のプライマリキーは、テーブル内の各行に対して一意ではありません

ClickHouseテーブルの^^主キー^^は、ディスクへの書き込み時にデータがどのようにソートされるかを決定します。8,192行または10MBごとのデータ(インデックス粒度と呼ばれます)が、^^主キー^^インデックスファイルにエントリを作成します。この粒度の概念により、メモリに容易に収まる**^^スパースインデックス^^**が作成されます。各粒度は、SELECTクエリの実行時に処理される最小単位のカラムデータのストライプを表します。

^^プライマリキー^^は PRIMARY KEY パラメータを使用して定義できます。PRIMARY KEY を指定せずにテーブルを定義した場合、キーは ORDER BY 句で指定されたタプルになります。PRIMARY KEYORDER BY の両方を指定した場合、^^プライマリキー^^はソート順を構成する列のサブセットである必要があります。

^^プライマリキー^^は^^ソートキー^^でもあり、(user_id, timestamp)のタプルです。したがって、各カラムファイルに格納されるデータは、user_id、次にtimestampの順でソートされます。

ClickHouseの中核概念について詳しく知るには、"コア概念"を参照してください。

テーブルにデータを挿入する

ClickHouseでは、おなじみのINSERT INTO TABLEコマンドを使用できますが、MergeTreeテーブルへの各挿入により、ストレージ内にパートが作成されることを理解しておく必要があります。

ClickHouseのベストプラクティス

バッチごとに、数万行から数百万行といった大量の行をまとめて挿入してください。心配はいりません。ClickHouseはこの程度のボリュームであれば容易に処理でき、サービスへの書き込みリクエスト数を減らすことでコストを削減できます。


簡単な例でも、一度に複数行を挿入してみましょう:

INSERT INTO helloworld.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 )
注記

timestampカラムは、さまざまなDateおよびDateTime関数を使用して値が設定されています。ClickHouseには数百の便利な関数があり、関数セクションで確認できます。

動作したか確認してみましょう:

SELECT * FROM helloworld.my_first_table

ClickHouseクライアントを使用したデータの追加

clickhouse clientというコマンドラインツールを使用して、ClickHouse Cloud サービスに接続することもできます。左側のメニューでConnectをクリックしてこれらの詳細にアクセスします。ダイアログのドロップダウンからNativeを選択します:

ClickHouse クライアントの接続情報

  1. ClickHouse をインストールします。

  2. ホスト名、ユーザー名、パスワードをご自身の環境に合わせた値に置き換えて、コマンドを実行します。

./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password>

スマイリーフェイスのプロンプトが表示されたら、クエリを実行できます。

:)
  1. 次のクエリを実行してみましょう:

SELECT *
FROM helloworld.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.
  1. FORMAT 句を追加して、ClickHouse がサポートする多様な出力フォーマットのいずれかを指定します。

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated

上記のクエリでは、出力は次のようにタブ区切りで返されます:

Query id: 3604df1c-acfd-4117-9c56-f86c69721121

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.005 sec.
  1. clickhouse client を終了するには、exit と入力します。

exit

ファイルのアップロード

データベースを使い始めるときによく行う作業の一つは、すでにファイルにあるデータを挿入することです。クリックストリームデータを表すサンプルデータをオンラインで提供しており、これを挿入できます。このデータにはユーザーID、訪問したURL、そしてイベントのタイムスタンプが含まれます。

data.csvという名前のCSVファイルに以下のテキストが含まれているとします:

102,This is data in a file,2022-02-22 10:43:28,123.45
101,It is comma-separated,2022-02-23 00:00:00,456.78
103,Use FORMAT to specify the format,2022-02-21 10:43:30,678.90
  1. 次のコマンドでデータを my_first_table に挿入します。

./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password> \
--query='INSERT INTO helloworld.my_first_table FORMAT CSV' < data.csv
  1. Notice the new rows appear in the table now if querying from the SQL console:

CSV ファイルから追加された行

IP アクセスリストフィルタリング

次に進む前に、IP アクセスリストフィルタリングを設定しておくことを推奨します。 詳細は「IP フィルタの設定」を参照してください。

次のステップは?