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

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 に移行しますストレージコストを大幅に削減します