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

59 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)をチェックしてください。
:::