メインコンテンツまでスキップ
に最終更新

Apache Doris テーブル設計ガイド

Apache Doris では、テーブル設計が書き込み性能、クエリ効率、ストレージコストを直接左右します。この章では、典型的な設計シナリオに沿って、テーブルを一から設計する方法や既存テーブルの構造を最適化する方法を説明します。

設計の流れ​

Doris のテーブル設計は、通常、次の手順で進めます。

  1. テーブルモデルを選ぶ: データの保存、重複排除、集約の方法を決めます。
  2. カラムとデータ型を定義する: ビジネス上の各フィールドに適した型を選びます。
  3. パーティション分割とバケット分割を計画する: データを均等に分散し、不要なデータの読み取りを省けるようにします。
  4. インデックスを追加する: 特定の値の検索、範囲スキャン、全文検索を高速化します。
  5. ストレージを最適化する: 圧縮、行・列ハイブリッドストレージ、ホットデータとコールドデータの階層化によってコストを削減します。
  6. スキーマを変更する: ビジネスの変化に合わせてスキーマを調整したり、自動採番カラムを使用したりします。

テーブルの作成​

Doris でテーブルを作成するには、CREATE TABLE 文を使用します。既存のテーブルから新しいテーブルを作る場合は、次の方法を使用できます。

テーブル名の規則​

Doris のテーブル名は、デフォルトでは大文字と小文字を区別し、長さの上限は 64 バイトです。次の設定でこれらを調整できます。

設定デフォルト説明
lower_case_table_names大文字と小文字を区別クラスターの初期化時にのみ設定でき、その後は変更できません
table_name_length_limit64 バイト大きすぎる値の設定は推奨されません

主なテーブルプロパティ​

テーブルを作成するときは、PROPERTIES で一般的なプロパティを指定できます。詳細は CREATE TABLE を参照してください。

プロパティ用途
bucketsテーブル内でのデータ分散の粒度を決めます
storage_mediumHDD、SSD、リモートの共有ストレージなど、ストレージ媒体を制御します
replication_num冗長性と信頼性を確保するためのデータレプリカ数を制御します
storage_policyホットデータとコールドデータの階層間の移行ポリシーを設定します
ヒント

テーブルプロパティはパーティション単位で適用されます。テーブルプロパティを変更しても、その後に作成されるパーティションにのみ反映され、既存のパーティションには影響しません。詳細は ALTER TABLE PROPERTY と ALTER TABLE DISTRIBUTION を参照してください。動的パーティション分割では、これらのプロパティを個別に設定できます。

テーブルモデルの選択​

カラムとデータ型の定義​

パーティション分割とバケット分割の計画​

クエリの高速化: インデックス​

ストレージの最適化​

スキーマの変更​

特殊なテーブルとベストプラクティス​

設計時の考慮事項​

設計項目説明影響
データモデルテーブル作成後は変更できません。適切なデータモデルを事前に選んでくださいその後の書き込みとクエリのパターンを決めます
バケット数作成済みパーティションのバケット数は変更できませんが、パーティションの置換によって調整できます。動的パーティション分割で今後作成されるパーティションのバケット数は変更できますデータの均衡とクエリの並列度に影響します
カラムの変更VALUE カラムの追加・削除は軽量な操作です(数秒で完了します)。KEY カラムの追加・削除やデータ型の変更は高コストな操作です大規模なデータセットでは、可能な限り KEY カラムの変更を避けてください
ストレージポリシーホットデータとコールドデータの階層化を使い、コールドデータを HDD、S3、HDFS に移行しますストレージコストを大幅に削減します