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

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つのレプリカが作成されます。 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, 'こんにちは、ClickHouse!',                                 now(),       -1.0    ),
    (102, 'バッチごとに大量の行を挿入する',                     yesterday(), 1.41421 ),
    (102, 'よく使用するクエリに基づいてデータをソートする', today(),     2.718   ),
    (101, 'グラニュールは読み取られるデータの最小チャンク',      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 │ バッチごとに大量の行を挿入する                                │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ よく使用するクエリに基づいてデータをソートする                        │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ Hello, ClickHouse!                                 │ 2022-03-22 14:04:09 │      -1 │
│     101 │ グラニュールは読み取られるデータの最小チャンク                        │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4行が返されました。経過時間: 0.008秒
  1. FORMAT 句を追加して、ClickHouse がサポートする多様な出力フォーマット のいずれかを指定します。

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated

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

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

102 バッチごとに大量の行を挿入する      2022-03-21 00:00:00     1.41421
102 よく使用するクエリに基づいてデータをソートする  2022-03-22 00:00:00     2.718
101 Hello, ClickHouse!  2022-03-22 14:04:09     -1
101 グラニュールは読み取られるデータの最小チャンクである       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,これはファイル内のデータです,2022-02-22 10:43:28,123.45
101,カンマ区切りです,2022-02-23 00:00:00,456.78
103,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. SQL コンソールからクエリを実行すると、新しい行がテーブルに表示されていることが確認できます:

CSV ファイルからの新しい行

次のステップ