テーブルタイプ概要
Dorisでテーブルを作成する際、データの格納と管理方法を定義するためにtable タイプを指定する必要があります。Dorisは3つのtable タイプを提供しています:Duplicate Key table、Unique Key table、Aggregate Key tableで、それぞれ異なるアプリケーションシナリオに対応します。各タイプは、データの重複排除、集約、更新に対応するメカニズムを持ちます。適切なtable タイプを選択することで、データ処理の柔軟性と効率性を確保しながらビジネス目標を達成できます。
table タイプ分類
Dorisは3種類のtable タイプをサポートします:
-
Duplicate Key table:指定されたKey列の重複を許可し、Dorisのストレージ層は書き込まれた全データを保持します。このタイプは、すべての元データレコードを保持する必要がある状況に適しています。
-
Unique Key table:各行が一意のKey値を持つことを保証し、指定されたKey列に対して重複行がないことを保証します。Dorisストレージ層は各キーに対して最新の書き込みデータのみを保持するため、このタイプはデータ更新を伴うシナリオに適しています。
-
Aggregate Key table:Key列に基づいてデータを集約できます。Dorisストレージ層は集約されたデータを保持し、ストレージ容量を削減してクエリパフォーマンスを向上させます。このタイプは通常、サマリーや集約情報(合計や平均など)が必要な状況で使用されます。
テーブル作成後、table タイプのプロパティは確定され、変更できません。ビジネスに適したタイプの選択は重要です:
-
Duplicate Key tableは任意の次元でのアドホッククエリに適しています。事前集約の利点は活用できませんが、集約テーブルの制約を受けず、列指向ストレージの利点(すべてのキー列を読み取る必要なく、関連する列のみを読み取る)を活用できます。
-
Unique Key tableは一意キー制約が必要なシナリオ向けに設計されており、キーの一意性を保証します。ただし、ROLLUPなどの事前集約によるクエリの利点は活用できません。
-
Aggregate Key tableは事前集約により集約クエリに必要なデータと計算を大幅に削減でき、固定スキーマのレポートクエリに理想的です。ただし、このタイプは
count(*)クエリに適していません。また、Value列の集約方法が固定されているため、他のタイプの集約クエリを実行する際は、セマンティックの正確性を考慮する必要があります。 -
部分列の更新については、Unique Key tableでの部分列更新とAggregate Key tableでの部分列更新のドキュメントで関連する使用方法のアドバイスを参照してください。
Sort Key
Dorisでは、データは列指向形式で格納され、テーブルはKey列とValue列に分けることができます。Key列はグループ化とソートに使用され、Value列は集約に使用されます。Key列は1つ以上のフィールドで構成でき、テーブル作成時、データはAggregate Key、Unique Key、Duplicate Key tableの列に従ってソートされて格納されます。
異なるtable タイプでは、テーブル作成時にKey列の指定が必要で、それぞれ異なる意味を持ちます:Duplicate Key tableでは、Key列はソートを表し、一意性制約はありません。Aggregate KeyとUnique Key tableでは、Key列に基づいて集約が実行され、ソート機能だけでなく一意性制約も強制されます。
Sort Keyを適切に使用することで、以下の利点が得られます:
-
クエリパフォーマンスの向上:ソートキーは、スキャンする必要があるデータ量の削減に役立ちます。範囲クエリやフィルタリングクエリでは、ソートキーが直接データを特定できます。ソートが必要なクエリでは、ソートキーがソート処理を高速化することもできます。
-
データ圧縮の最適化:ソートキーに基づいてデータを順序立てて格納することで圧縮効率が向上し、類似データがグループ化されるため、圧縮率が大幅に向上し、ストレージ容量が削減されます。
-
重複排除コストの削減:Unique Key tableを使用する際、ソートキーによりDorisはより効率的に重複排除を実行でき、データの一意性を保証します。
ソートキーを選択する際は、以下の推奨事項に従うことができます:
-
Key列は全Value列より前に配置する必要があります。
-
整数型を選択することが推奨されます。整数型は文字列よりも計算と検索で効率が大幅に高いためです。
-
異なる長さの整数型を選択する場合は、十分なものを選択するという原則に従います。
-
VARCHARおよびSTRING型の長さについては、十分なものを選択するという原則に従います...
table タイプ比較
| Duplicate Key table | Unique Key table | Aggregate Key table | |
|---|---|---|---|
| Key列の一意性 | 非サポート、Key列の重複可 | サポート | サポート |
| 同期Materialized View | サポート | サポート | サポート |
| 非同期Materialized View | サポート | サポート | サポート |
| UPDATE文 | 非サポート | サポート | 非サポート |
| DELETE文 | 部分サポート | サポート | 非サポート |
| インポート時の全行更新 | 非サポート | サポート | 非サポート |
| インポート時の部分列更新 | 非サポート | サポート | 部分サポート |