ClickHouse/docs/ja/guides/creating-tables.md
2024-11-18 11:58:58 +09:00

3.3 KiB
Raw Blame History

sidebar_position sidebar_label
1 テーブルの作成

ClickHouseにおけるテーブルの作成

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

CREATE DATABASE IF NOT EXISTS helloworld

同様に、CREATE TABLEを使用して新しいテーブルを定義します。(データベース名を指定しない場合、テーブルはdefaultデータベースに作成されます。)次のテーブルは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は四つのカラムを持つMergeTreeテーブルです。

  • user_id: 32ビットの符号なし整数
  • message: Stringデータ型で、他のデータベースシステムのVARCHARBLOBCLOBなどの型の代替
  • timestamp: 時間の瞬間を表すDateTime
  • metric: 32ビットの浮動小数点数

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

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

選択できるエンジンは多くありますが、単一ードのClickHouseサーバーでの単純なテーブルには、MergeTreeが適しています。 :::

主キーの簡単な紹介

先に進む前に、ClickHouseにおける主キーの働きを理解することが重要です主キーの実装は意外に感じるかもしれません

  • ClickHouseでは、主キーは各行に対して一意ではありません

ClickHouseテーブルの主キーは、データがディスクに書き込まれるときのソート方法を決定します。8,192行または10MBのデータごとインデックスの粒度と呼ばれる)に主キーインデックスファイルにエントリが作成されます。この粒度の概念により、メモリに簡単に収まるスパースインデックスが作成され、グラニュールはSELECTクエリの処理中に最小のカラムデータ量のストライプを表します。

主キーはPRIMARY KEYパラメータを使用して定義できます。PRIMARY KEYを指定せずにテーブルを定義すると、キーはORDER BY句で指定されたタプルになります。PRIMARY KEYORDER BYの両方を指定した場合、主キーはソート順序の接頭辞でなければなりません。

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

:::tip 詳細については、ClickHouse Academyのデータモデリングトレーニングモジュールをチェックしてください。 :::