テーブルエンジン
テーブルエンジン(テーブルの種類)は以下を決定します:
- データの保存方法と場所、書き込み先および読み込み先。
- サポートされているクエリとその方法。
- 同時データアクセス。
- インデックスの使用(存在する場合)。
- マルチスレッドリクエスト実行が可能かどうか。
- データレプリケーションパラメータ。
エンジンファミリー
MergeTree
高負荷タスクに最も汎用的で機能的なテーブルエンジンです。これらのエンジンに共通する特性は、迅速なデータ挿入とその後のバックグラウンドデータ処理です。 MergeTreeファミリーのエンジンは、データレプリケーション(Replicated*バージョンのエンジン)、パーティショニング、セカンダリデータスキッピングインデックス、その他のエンジンではサポートされていない機能をサポートしています。
ファミリー内のエンジン:
| MergeTree エンジン |
|---|
| MergeTree |
| ReplacingMergeTree |
| SummingMergeTree |
| AggregatingMergeTree |
| CollapsingMergeTree |
| VersionedCollapsingMergeTree |
| GraphiteMergeTree |
| CoalescingMergeTree |
Log
最小機能を持つ軽量のエンジンです。大量の小さなテーブル(約100万行まで)を迅速に書き込み、後でそれらを全体として読む必要がある場合に最も効果的です。
ファミリー内のエンジン:
| Log エンジン |
|---|
| TinyLog |
| StripeLog |
| Log |
統合エンジン
他のデータストレージおよび処理システムと通信するためのエンジンです。
ファミリー内のエンジン:
| 統合エンジン |
|---|
| ODBC |
| JDBC |
| MySQL |
| MongoDB |
| Redis |
| HDFS |
| S3 |
| Kafka |
| EmbeddedRocksDB |
| RabbitMQ |
| PostgreSQL |
| S3Queue |
| TimeSeries |
特殊エンジン
ファミリー内のエンジン:
| 特殊エンジン |
|---|
| Distributed |
| Dictionary |
| Merge |
| Executable |
| File |
| Null |
| Set |
| Join |
| URL |
| View |
| Memory |
| Buffer |
| External Data |
| GenerateRandom |
| KeeperMap |
| FileLog |
仮想カラム
仮想カラムは、エンジンのソースコードで定義された不可欠なテーブルエンジン属性です。
CREATE TABLEクエリで仮想カラムを指定することはできず、SHOW CREATE TABLEやDESCRIBE TABLEクエリの結果にも表示されません。仮想カラムは読み取り専用であり、データを挿入することはできません。
仮想カラムからデータを選択するには、その名前をSELECTクエリで指定する必要があります。SELECT *は仮想カラムからの値を返しません。
同じ名前のカラムを持つテーブルを作成すると、仮想カラムがアクセスできなくなります。これを行うことはお勧めしません。競合を避けるために、仮想カラムの名前は通常アンダースコアで始まります。
-
_table— データが読み取られたテーブルの名前を含みます。タイプ: String。使用されているテーブルエンジンにかかわらず、各テーブルには
_tableという名前の普遍的な仮想カラムが含まれています。マージテーブルエンジンを持つテーブルをクエリするとき、
WHERE/PREWHERE句で_tableに定数条件を設定できます(例:WHERE _table='xyz')。この場合、条件が満たされたテーブルに対してのみ読み取り操作が行われるため、_tableカラムはインデックスとして機能します。SELECT ... FROM (... UNION ALL ... )のようにフォーマットされたクエリを使用する場合、戻された行が実際にどのテーブルから由来するのかを_tableカラムを指定することで判断できます。