ClickHouse/docs/ja/guides/creating-tables.md

59 lines
3.3 KiB
Markdown
Raw Normal View History

2024-11-18 02:58:58 +00:00
---
sidebar_position: 1
sidebar_label: テーブルの作成
---
# ClickHouseにおけるテーブルの作成
ほとんどのデータベースと同様に、ClickHouseはテーブルを**データベース**に論理的にグループ化します。ClickHouseで新しいデータベースを作成するには、`CREATE DATABASE`コマンドを使用します。
```sql
CREATE DATABASE IF NOT EXISTS helloworld
```
同様に、`CREATE TABLE`を使用して新しいテーブルを定義します。(データベース名を指定しない場合、テーブルは`default`データベースに作成されます。)次のテーブルは`helloworld`データベース内に`my_first_table`という名前で作成されます。
```sql
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`データ型で、他のデータベースシステムの`VARCHAR`、`BLOB`、`CLOB`などの型の代替
- `timestamp`: 時間の瞬間を表す`DateTime`値
- `metric`: 32ビットの浮動小数点数
:::note
テーブルエンジンは以下を決定します。
- データの保存方法と保存場所
- サポートされているクエリ
- データがレプリケートされるかどうか
選択できるエンジンは多くありますが、単一ードのClickHouseサーバーでの単純なテーブルには、[MergeTree](/ja/engines/table-engines/mergetree-family/mergetree.md)が適しています。
:::
## 主キーの簡単な紹介
先に進む前に、ClickHouseにおける主キーの働きを理解することが重要です主キーの実装は意外に感じるかもしれません
- ClickHouseでは、主キーは各行に対して**一意ではありません**
ClickHouseテーブルの主キーは、データがディスクに書き込まれるときのソート方法を決定します。8,192行または10MBのデータごと**インデックスの粒度**と呼ばれる)に主キーインデックスファイルにエントリが作成されます。この粒度の概念により、メモリに簡単に収まる**スパースインデックス**が作成され、グラニュールは`SELECT`クエリの処理中に最小のカラムデータ量のストライプを表します。
主キーは`PRIMARY KEY`パラメータを使用して定義できます。`PRIMARY KEY`を指定せずにテーブルを定義すると、キーは`ORDER BY`句で指定されたタプルになります。`PRIMARY KEY`と`ORDER BY`の両方を指定した場合、主キーはソート順序の接頭辞でなければなりません。
主キーはまたソートキーでもあり、`(user_id, timestamp)`のタプルです。 したがって、各カラムファイルに保存されるデータは、`user_id`、次に`timestamp`の順にソートされます。
:::tip
詳細については、ClickHouse Academyの[データモデリングトレーニングモジュール](https://learn.clickhouse.com/visitor_catalog_class/show/1328860/?utm_source=clickhouse&utm_medium=docs)をチェックしてください。
:::