すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:ホットデータとコールドデータの階層ストレージ

最終更新日:Oct 17, 2024

データストレージのコストを削減し、クエリパフォーマンスとシステムリソースの使用率を向上させるために、ApsaraDB for ClickHouseはホットデータとコールドデータの階層ストレージを提供します。 クエリ頻度に基づいて、さまざまな種類のディスクにデータを保存できます。 このトピックでは、ホットデータとコールドデータの階層ストレージを有効にし、階層ストレージポリシーを設定する方法について説明します。

前提条件

ApsaraDB for ClickHouseクラスター V20.8以降が作成されます。

説明
  • バージョンがこの機能をサポートしていないApsaraDB for ClickHouseクラスターでホットデータとコールドデータの階層ストレージを使用する場合は、V20.8以降のApsaraDB for ClickHouseクラスターを作成し、新しいクラスターにデータを移行できます。 詳細については、「ApsaraDB For ClickHouse Community-compatible Editionクラスター間のデータ移行」をご参照ください。

  • ApsaraDB for ClickHouse Enterprise Editionは、ホットデータをキャッシュに、コールドデータを共有ストレージに自動的に保存します。 ホットデータとコールドデータの階層ストレージは、ホットデータとコールドデータのストレージルールに依存しません。

背景情報

  • ホットデータは、頻繁にアクセスされ、拡張SSD (ESSD) またはウルトラディスクに保存されるデータです。 これらのディスクは、クラスターを作成するときに選択されます。 ホットデータストレージは、高性能なクエリを必要とするビジネスシナリオに適しています。

  • コールドデータは、頻繁にアクセスされないデータです。 コールドデータは、コスト効率の高いストレージの要件を満たすために、低ストレージコストでコールドデータディスクに保存されます。

    ホットデータとコールドデータの階層ストレージは、次のストレージポリシーを提供します。

    ストレージポリシー

    説明

    デフォルトのストレージポリシー

    新しく書き込まれたデータは、効率的なクエリをサポートするためにホットデータディスクに保存されます。 格納されたホットデータの量が格納しきい値に達すると、ホットデータディスク内で最大サイズの部品データファイルが自動的にコールドデータディスクに移行されます。 このようにして、新たに書き込まれたホットデータをホットデータディスクに記憶することができる。

    生存時間 (TTL) に基づくストレージポリシー

    デフォルトのストレージポリシーにTTL句を追加します。 このようにして、TTL句で指定された期間より前に生成されたすべてのデータは、自動的にコールドデータディスクに移行されます。

注意事項

  • ApsaraDB for ClickHouseのデータバックアップ機能を有効にした場合クラスターの場合、このクラスターでホットデータとコールドデータの階層ストレージを有効にすることはできません。

  • オフピーク時にのみホットデータとコールドデータの階層ストレージを有効にすることを推奨する場合。 ホットデータとコールドデータの階層ストレージを有効にすると、クラスターが再起動されます。 再起動中は、クラスター情報のみを表示できます。 クラスターのアップグレード、スケールアウト、スケールイン、またはパラメーター設定の変更はできません。

  • ホットデータとコールドデータの階層ストレージを使用する場合、テーブルのストレージポリシーを指定する必要があります。

    • テーブルを作成するときは、SETTINGS storage_policy = 'hot_to_cold 'を使用してデータストレージポリシーを指定できます。

    • 既存のテーブルのデータストレージポリシーを変更できます。

      2024年1月1日以降に有効になったホットデータとコールドデータの階層ストレージを持つクラスター

      次のステートメントを実行して、データストレージポリシーを変更します。

      ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';

      次の表に、上記のステートメントのパラメーターを示します。

      パラメーター

      説明

      table_name

      テーブルの名前。

      2024年1月1日より前に有効になったホットデータとコールドデータの階層ストレージを持つクラスター

      ホットおよびコールドデータストレージポリシーの追加を申請するチケットを起票します。 これにより、ポリシーを使用して、ホットデータディスクからコールドデータディスクにデータを移行できます。

  • ホットデータとコールドデータの階層ストレージ機能は、この機能を有効にした後は無効にできません。

課金

  • 次のルールに基づいて、ホットデータおよびコールドデータ機能の階層ストレージに対して課金されます。

    ストレージタイプ

    課金の詳細

    ホットデータ保存

    クラスター用に購入したストレージスペースは、ホットデータ用のストレージスペースです。 クラスターを購入した後、ホットデータ用のストレージを購入する必要はありません。

    コールドデータストレージ

    従量課金の課金方法に基づいて、コールドデータストレージに対して課金されます。 ストレージを使用する前に、コールドデータ用のストレージを購入する必要はありません。 使用済みストレージに基づいて、1時間ごとにコールドデータストレージに対して課金されます。

  • コールドデータストレージの単価の詳細については、「ApsaraDB For ClickHouseクラスターのストレージ料金」をご参照ください。

  • 課金式: コールドストレージスペースの料金=コールドデータストレージの単価 × 使用済みコールドデータストレージ × 使用期間。

  • たとえば、コールドデータストレージの単価がGB時間あたりUSD 0.000026で、19:00から20:00まで2,000 GBのコールドデータが保存されている場合、合計料金は次の式に基づいて計算されます。GB時間あたりUSD 0.000026 × 2,000 GB × 1時間=USD 0.052。 20:00〜21:00の間にコールドデータ用に500 GBのストレージスペースを解放した場合、1,500 GBのストレージのみが使用されます。 この場合、20:00〜21:00の間に発生する合計料金は、次の式に基づいて計算されます。GB時間あたりのUSD 0.000026 × 1,500 GB × 1時間=USD 0.039。

説明

前述の価格はあなたの参照のためにだけ提供されます。 実際の課金シナリオでは、ApsaraDB for ClickHouseコンソールに表示される料金が優先されます。

ホットデータとコールドデータの階層化ストレージの有効化

  1. ApsaraDB for ClickHouseコンソールにログインします。

  2. 上部のナビゲーションバーで、クラスターがデプロイされているリージョンを選択します。

  3. [クラスター] ページで、[コミュニティ互換版のクラスター] タブをクリックし、管理するクラスターのIDをクリックします。

  4. 左側のナビゲーションウィンドウで、[コールドおよびホットレイヤードストレージ] をクリックします。

  5. クリックして階層ストレージを有効にするをクリックします。

  6. [階層ストレージの有効化] メッセージで、[OK] をクリックします。

    その後、システムはクラスターを再起動します。 クラスターの状態が [設定の変更] から [実行中] に変更されると、ホットデータとコールドデータの階層ストレージが有効になります。

ホットデータとコールドデータの階層ストレージが有効化された後に使用されるデフォルトストレージポリシー

次の表に、ホットデータとコールドデータの階層ストレージが有効になった後に使用されるデフォルトのストレージポリシーのパラメーターを示します。

パラメーター

説明

move_factor

ホットデータの全ストレージに対するホットデータの使用可能なストレージの割合がmove_factorパラメーターの値より小さい場合、ホットデータディスク内で最大のサイズの部品データファイルが自動的にコールドデータディスクに移行されます。

有効値: 0〜1 move_factorパラメーターを0に設定すると、ディスクストレージ容量に基づくホットデータとコールドデータの階層ストレージ機能が無効になります。 デフォルト値は 0.1 です。 デフォルト値は、ホットデータの使用可能なストレージの割合が10% 未満の場合にデータが自動的に移行されることを指定します。 TTLベースの階層ストレージポリシーを追加することもできます。 詳細については、このトピックの「TTLベースの階層ストレージポリシーの追加」をご参照ください。

説明

ディスク領域の表示方法の詳細については、このトピックの「ディスク領域の表示」をご参照ください。

prefer_not_to_merge

コールドデータディスク上のデータをマージするかどうかを指定します。 有効な値:

  • true: コールドデータディスクのデータはマージされません。 これはデフォルト値です。

  • false: コールドデータディスク上のデータがマージされます。

TTLベースの階層ストレージポリシーの追加

デフォルトのストレージポリシーにTTL句を追加します。 このようにして、TTL句で指定された期間より前に生成されたすべてのデータは、自動的にコールドデータディスクに移行されます。

次のサンプルコードは、TTL句を追加する方法の例を示しています。

TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk'

下表に、各パラメーターを説明します。

パラメーター

説明

time_column

DATEまたはDATETIMEデータ型の列。

数値

移行するデータが生成されるまでの期間。

一般的な単位は、日、週、月、年です。

説明

TTL句の詳細については、「TTL」をご参照ください。

日付列に基づいて、90日前に生成されたすべてのデータをコールドデータディスクに移行します。 日付列には、データが生成された日付が含まれます。 次の文を実行して、テーブルを作成します。

CREATE TABLE ttl_test_tbl
(
    `f1` String,
    `f2` String,
    `f3` Int64,
    `f4` Float64,
    `date` Date
)
ENGINE = MergeTree()
PARTITION BY date
ORDER BY f1
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
SETTINGS storage_policy = 'hot_to_cold';

ホットデータとコールドデータのTTLベースの階層化ストレージの変更

DATEまたはDATETIMEデータ型の列とTTL句の期間を変更して、TTLベースの階層ストレージポリシーを変更できます。

説明
  • デフォルトでは、TTLベースの階層ストレージポリシーが変更された後、履歴データと新しいデータは新しいストレージポリシーに基づいて保存されます。

  • 履歴データのTTLベースの階層ストレージポリシーを変更しない場合は、TTLベースの階層ストレージポリシーを変更する前に、set materialize_ttl_modify=0; ステートメントを実行できます。 ステートメントの実行後、TTLベースの階層ストレージポリシーを変更できます。 履歴データは、元のストレージポリシーに基づいて保存されます。 新しいストレージポリシーに基づいて、新しいデータのみが保存されます。

  • TTLベースの階層ストレージポリシーを変更した後、元のストレージポリシーに基づいてコールドデータディスクに移行されたデータは、自動的にホットデータディスクに移行されません。 このようなコールドデータをホットデータディスクに移行する場合は、このトピックの「ホットデータディスクとコールドデータディスクへのデータの移行」をご参照ください。

次のサンプルコードは、TTLベースの階層ストレージポリシーを変更する方法の例を示しています。

ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk';

下表に、各パラメーターを説明します。

パラメーター

説明

table_name

<td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td>

time_column

DATEまたはDATETIMEデータ型の新しい列。

数値

移行するデータが生成される前の新しい期間。

一般的な単位は、日、週、月、年です。

ホットデータディスクとコールドデータディスクのデータを移行する

  • 次のステートメントを実行して、ホットデータディスクからコールドデータディスクにデータを移行します。

    ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk';
  • 次の文を実行して、データをコールドデータディスクからホットデータディスクに移行します。

    ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';
    説明

    partitionはパーティション名を指定します。 system.partsシステムテーブルで値を表示できます。

ホットデータディスクとコールドデータディスクのデータを表示する

  • 次のステートメントを実行して、ホットデータディスク上のデータを表示します。

    SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1;
  • 次のステートメントを実行して、コールドデータディスク上のデータを表示します。

    SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;

ディスク領域の表示

ホットデータとコールドデータの階層ストレージが有効になったら、次のステートメントを実行してディスク容量を表示できます。

SELECT * FROM system.disks;

次の応答が返されます。

┌─name─────┬─────────path───────────────────────────┬─free_space───────────┬─total_space ─────────┬─used_space───┬─keep_free_space───┬──type──┐
│ cold_disk│ /clickhouse/data/data/disks/cold_disk/ │ 18446744073709551615 │ 18446744073709551615 │ 115312080698 │   0               │   OSS  │
│ default  │ /clickhouse/data/data/                 │ 201663209472         │ 207083249664         │ 5420040192   │   0               │  local │ 
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘

次の表に、返された結果のパラメーターを示します。

パラメーター

説明

name

ディスク名。 有効な値:

  • cold_disk: コールドデータディスクの名前。

  • default: ホットデータディスクの名前。

パス

ディスク上のデータが格納されるパス。

free_space

ディスク上の使用可能なスペース。 コールドデータディスク上の利用可能なスペースは制限されない。 単位はバイトです。

total_space

合計ディスク容量。 コールドデータディスク上の利用可能なスペースは制限されない。 単位はバイトです。

used_space

ディスク上で使用されるスペース。 単位はバイトです。

keep_free_space

ディスク上の予約済みの空き容量。 単位はバイトです。

type

ストレージメディア。 有効な値:

  • OSS: コールドデータはOSS (Object Storage Service) に保存されます。

  • local: データはローカルディスクに保存されます。