ワークロードの実態を踏まえて 四つの決定を下す.
長く使えるテーブル設計は、行の意味を定めることから始まります。その後、ソートキー、パーティションの境界、物理的なデータ分散方法を選びます。
- モデル同じキーの扱い
- ソートキー読み取り時のデータ局所性
- パーティション範囲とライフサイクル
- バケットタブレットの分散
- 検証サイズ、偏り、実行計画
長く使えるテーブル設計は、行の意味を定めることから始まります。その後、ソートキー、パーティションの境界、物理的なデータ分散方法を選びます。
Duplicate はすべての行を保持し、Unique はキーごとに論理的な行を一つ保持します。Aggregate は宣言した関数で値列を集約します。
ファクト、ログ、詳細なイベントを、キーに基づいて統合せずに追記します。
更新されるエンティティを UPSERT し、最新の論理的な行を保持します。
SUM、MAX、MIN、REPLACE などの関数でメジャーを集約します。
Doris はキー列の順序に従ってデータを格納します。そのため、ソートキーの先頭部分は、データの絞り込み、圧縮、スキャンコストに大きく影響します。
よく使う条件に合ったコンパクトな列。
通常のアクセス方法と関係のない幅広い列。
パーティションはデータの範囲や値のグループを分離し、ライフサイクル操作を支え、クエリが無関係なデータを読み飛ばせるようにします。
RANGE または LIST の境界を明示的に指定し、運用者が直接管理します。
時間に基づくパーティションを、スケジュールに従って順次作成し、期限切れにします。
取り込み時の値に基づいて RANGE または LIST パーティションを作成します。
ハッシュ方式のバケット分割では、キーに基づいて配置先が決まります。ランダム方式では、分散キーを指定せずに行を分散します。
同じキー値は、決まった規則に従って配置先に割り当てられます。
キーを指定せずに行を分散できます。
優れた DDL には一貫性があります。行の意味、データの絞り込み、分散配置、取り込み時の動作が、いずれもワークロードに合っていることが重要です。
Duplicate Key で行を保持し、時間による絞り込みと均等な並列スキャンを行います。
一意のビジネスキーを使い、UPSERT を中心にデータを取り込みます。
安定したディメンションと、定義済みの値の集計方法を使います。
ワークロードを拡大する前に、パーティションの絞り込み、タブレットのサイズ、行の分布、クエリ実行計画、データロード時の動作を確認します。