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