Data Lake Formation (DLF) のストレージ最適化は、テーブルレベルのアダプティブコンパクション、期限切れスナップショットのクリーンアップ、パーティションライフサイクル管理、およびオーファンファイルのクリーンアップなどの機能を提供します。これらの機能により、Paimon テーブルの利用およびメンテナンスが簡素化され、コンピューティングおよびストレージ効率が向上します。本トピックでは、DLF がバックグラウンドで実行するインテリジェントなストレージ最適化ポリシーとその実行メカニズムについて説明します。
Iceberg テーブルではストレージの自動再利用は行われません。ストレージコストの増加を防ぐため、期限切れのスナップショットおよびオーファンファイルを手動でクリーンアップする必要があります。詳細については、「Iceberg テーブルのストレージ管理」をご参照ください。
ストレージ最適化戦略
ポリシー種別 | 説明 | DLF の実行メカニズム |
コンパクション機能は、小規模なファイルを大規模なファイルにマージします。これによりファイル数が削減され、クエリ時のメタデータ管理オーバーヘッドおよびファイル検索コストが低減されます。その結果、Paimon テーブルのクエリパフォーマンスおよび効率が向上します。 | DLF は、データ書き込みのコミット時に自動的にコンパクションをトリガーします。 | |
スナップショットが存在する限り、そのスナップショットが参照するデータファイルは削除できません。これにより、データの履歴状態が読み取り可能であることが保証されます。新しいスナップショットが作成されるにつれて、履歴データが消費するストレージ容量が増加します。非アクティブな履歴データが占めるスペースを解放するため、古いスナップショットを削除する必要があります。これにより、ストレージリソースの管理および解放が可能になります。 | DLF は、DLF ストレージ最適化ジョブの実行時に自動的にスナップショットのクリーンアップをトリガーします。スナップショットのデフォルト有効期間は 1 時間です。Paimon テーブルのパラメーターを使用して有効期間を調整できます。詳細については、「期限切れデータのクリーンアップ」をご参照ください。 | |
多くのビジネスシナリオでは、最新のデータのみへのアクセスが必要です。このような場合、データを時間単位でパーティション化し、パーティションの有効期間を設定することで、古い履歴パーティションを自動的に削除できます。これにより、ストレージスペースが解放されます。また、アクセス頻度が低いパーティションデータを、標準ストレージ(Standard)などの高性能ストレージから、低コストのストレージ(例:低頻度アクセス、アーカイブ、コールドアーカイブ)へ移行するストレージ階層化も構成可能です。これにより、ビジネス要件を満たしつつストレージコストを削減できます。 | Paimon テーブルのパラメーターを使用して有効期間を構成できます。詳細については、「パーティション有効期間の設定」をご参照ください。パラメーターを構成した後、DLF ストレージ最適化ジョブの実行時に自動的に処理がトリガーされます。また、「インテリジェントストレージ階層化」機能を使用して、指定された条件を満たすパーティションデータを、標準ストレージ、低頻度アクセス、アーカイブ、またはコールドアーカイブなどのストレージクラスへ自動的に移行することもできます。さらに、テーブル詳細ページで「ストレージクラスの手動変更」も可能です。また、「ストレージ概要」ページで、データカタログ、データベース、およびテーブルごとのストレージ階層化分布を確認できます。 | |
ジョブエラー、再起動、その他の問題により、Paimon テーブルディレクトリ内に未コミットの一時ファイルが残ることがあります。これらのオーファンファイルはどのスナップショットにも参照されておらず、スナップショットの有効期限によるクリーンアップメカニズムでは削除できません。これらのファイルは定期的にクリーンアップする必要があります。 | オーファンファイルのデフォルト保持期間は 7 日間です。この期間を超えたオーファンファイルは期限切れと見なされ、自動的にクリーンアップされます。DLF は 7 日ごとにクリーンアップタスクを実行します。 |
インテリジェントストレージ最適化の有効化/無効化
「ストレージ最適化」タブは、Paimon テーブルを作成した場合にのみ表示されます。
Data Lake Formation コンソールにログインします。Data Lake Formation コンソール。
データカタログ 一覧ページで、カタログ名をクリックします。
[データベース] タブで、ターゲットデータベースの名前をクリックして、データテーブルを表示します。
テーブル一覧 で、テーブル名をクリックしてカラム情報を表示します。
[ストレージ最適化] タブをクリックします。インテリジェントストレージ最適化スイッチは、デフォルトで有効になっています。
スイッチをクリックして無効にします。
ストレージ最適化戦略の表示および構成
コンパクション
ストレージ最適化 タブで、コンパクション をクリックします。小規模ファイルのマージ実行状況、Rescale レコード、および実行履歴を確認できます。
必要に応じてポリシーパターンを編集します:
動的リソースパターン(推奨)
システムはリアルタイムの負荷に基づいてコンピューティングリソースを自動的にスケーリングします。このパターンでは手動による容量計画は不要であり、トラフィックが変動するシナリオに適しています。
以下の 3 つの構成プリファレンスがサポートされています:
リソースとレイテンシのバランス:マージ速度とリソース消費量のバランスを取る(デフォルト)。
レイテンシ優先:より多くのリソースを割り当てることでマージを高速化し、データ可視性のレイテンシを短縮します。
リソース優先:コンピューティングコストを削減するためにリソース使用量を制限しますが、マージ時間が長くなる可能性があります。
動的リソース割り当ておよびスケーリングポリシー
固定リソースパターン
コンパクションに使用するコンピューティングリソース量を手動で指定します。このパターンは、トラフィックが安定しているシナリオや、厳格なコスト管理が求められるシナリオに適しています。
構成要件:コンピューティングユニット(CU)の構成は最低でも 2 CU 以上である必要があります。
パラメーター設定:コンパクションのトリガー間隔およびバケット数をカスタマイズできます。
実行状況の表示
現在のテーブルの最適化実行状況を確認でき、Cloud Monitor でカスタムアラートサブスクリプションを構成できます。メトリックおよび構成手順の詳細については、「Lakehouse テーブル最適化のモニタリング」をご参照ください。
Rescale レコードの表示
このセクションでは、データテーブルまたは特定のパーティションに対するバケットの Rescale 履歴イベントを記録します。これはテーブルの基盤となる物理ストレージ構造の変化を反映します。Rescale メカニズムは、主にデータ量の変化によって引き起こされるパフォーマンス問題に対処するために使用されます。Rescale レコードを活用して、テーブルが現在 Rescale 中であるためにコンパクションプロセスに入らないかどうかを判断できます。
実行履歴の表示
現在のテーブルにおける小規模ファイルのマージ実行履歴を確認できます。この履歴は、システムが断片化されたファイルをどのように処理して読み取りパフォーマンスおよびストレージ領域を最適化しているかを示します。これらのレコードは以下のような目的で活用できます:
タスク実行の確認:バックグラウンドのマージタスクが正しく実行されていることを確認し、小規模ファイルが無限に蓄積しないようにします。
圧縮効率の評価:マージ前後のファイル数およびファイルサイズを比較し、現在のコンパクション戦略が適切かどうかを判断します。
期限切れスナップショットのクリーンアップ
ストレージ最適化 タブで、スナップショットの有効期限切れ をクリックします。スナップショットのクリーンアップルールを構成し、結果を確認できます。
スナップショットのクリーンアップルールの構成
編集 をクリックし、スナップショット保持期間(デフォルト:1 時間)を設定した後、保存 をクリックして構成を完了します。
スナップショットのクリーンアップ結果の表示
現在のスナップショット数:リアルタイムで残存中のスナップショット数を表示します。
最も古いスナップショット情報:最も古いテーブルスナップショットの詳細(スナップショット ID、コミット時刻、コミットタイプ、テーブルの合計行数、今回のコミットで追加された行数)を表示します。
パーティション ライフサイクル管理
ストレージ最適化 タブで、パーティションライフサイクル をクリックします。パーティションのクリーンアップルールを構成し、クリーンアップ結果を確認し、ストレージ階層化を構成できます。
パーティションのクリーンアップルールの構成
「[パーティションのクリーンアップを有効化]」の右側にある
トグルをクリックすると、パーティションのクリーンアップを有効にできます。パーティションのクリーンアップを有効化した後、必要に応じて以下のルールを構成します。保存 をクリックして構成を完了します。
対応するテーブルオプションのキーと値のペアを設定することで、構成を完了できます。
構成項目
説明
有効期限ポリシー
(partition.expiration-strategy)
以下の有効期限ポリシーから 1 つを選択できます:
最終アクセス時刻(access-time):パーティションデータの最終アクセス時刻に基づいて有効期限を判定します。
パーティション値(values-time):パーティションのタイムスタンプフォーマットおよびパーティションフィールドパターンを構成できます。
タイムスタンプフォーマット(partition.timestamp-formatter):
yyyy-MM-dd、yyyyMMdd、dd/MM/yyyy、dd.MM.yyyyなどのフォーマットを構成できます。タイムスタンプパターン(partition.timestamp-pattern): デフォルトでは最初のパーティションフィールドが使用されます。
$dtや$year-$month-$dayなどのパターンを構成できます。
最終更新時刻(update-time):パーティションデータの最も細かい粒度での最終更新時刻に基づいて有効期限を判定します。
パーティション保持期間
(partition.expiration-time)
単位:日。
30dのような値を構成できます。最大値は 999,999 日です。保持期間の開始時刻は、選択した有効期限ポリシーによって決定されます。(任意)保存後に、ルール構成 の横にある 編集 をクリックして変更を加えることもできます。
パーティションを永続的に保持したい場合は、パーティションの有効期限ルールを構成しないでください。デフォルトでは、システムはパーティションデータを自動的にクリーンアップしません。
パーティションのクリーンアップ結果の表示
パーティションの表示 をクリックして、現在のテーブルのパーティション一覧を表示します。一覧には、パーティション名、行数(物理)、参照ファイル数、合計ファイルサイズ、作成者、ストレージクラス、最終更新者、作成時刻、最終更新時刻、操作が含まれます。
ストレージ階層化の構成
構成項目 | 説明 |
インテリジェント階層化 |
説明
|
階層化戦略 |
|
階層化ルール | 異なるストレージクラスごとに、最小ストレージ保持期間の要件が異なります。 以下の階層化ルールを構成できます:
|
インテリジェントストレージ階層化 機能に加えて、テーブル詳細ページで「ストレージクラスの手動変更」も可能です。また、「ストレージ概要」ページで、データカタログ、データベース、およびテーブルごとのストレージ階層化分布を確認できます。
オーファンファイルのクリーンアップ
ストレージ最適化 タブで、オーファンファイルの削除 をクリックします。オーファンファイルのクリーンアップルールを確認できます。たとえば、オーファンファイルのデフォルト保持期間は、ファイルの書き込み時刻に基づき 7 日間です。この期間を超えた期限切れのオーファンファイルは、システムによって自動的にクリーンアップされます。
ストレージクラスの手動変更
データベース 一覧で、データベース名をクリックしてテーブル一覧を表示します。
テーブル 一覧で、テーブル名をクリックしてテーブルのカラムを表示します。
テーブル詳細 タブをクリックします。パーティションテーブルおよび非パーティションテーブルのストレージクラスを手動で変更できます。
パーティションテーブル
パーティション タブで、異なるストレージクラスのパーティションのストレージクラスを変更できます。
標準、低頻度アクセス、またはアーカイブストレージクラスのパーティション:
操作 列で、ストレージクラスの変更 をクリックします。現在のストレージクラス以外の任意のクラスへ変更できます。
コールドアーカイブストレージクラスのパーティション:
まずデータを解凍する必要があります。解凍が完了し、ステータスが「解凍済み」に変更された後、ストレージクラスを変更できます。以下の手順を実行します:
「[復元]」をクリックします。「[復元状態の保持期間]」を設定します。バッチ復元用のパーティションを選択できます。
値の範囲:1~365。単位は日です。
デフォルト値:1 日です。
データが 解凍済み 状態になったら、操作 列で ストレージクラスの変更 をクリックしてストレージクラスを変更します。
非パーティションテーブル
テーブルの 基本情報 セクションで、ストレージクラス を変更できます。
標準、低頻度アクセス、またはアーカイブストレージクラス
ストレージクラス の横にある 編集 をクリックします。現在のストレージクラス以外の任意のクラスへ変更できます。
コールドアーカイブストレージクラス
まずデータを解凍する必要があります。解凍が完了し、ステータスが「解凍済み」に変更された後、ストレージクラスを変更できます。以下の手順を実行します:
解凍 を ストレージクラス の横でクリックし、解凍済み状態の有効期間 を構成します。
値の範囲:1~365。単位は日です。
デフォルト値:1 日です。
ストレージクラス が「コールドアーカイブ(解凍済み)」に変更されたら、編集 を ストレージクラス の横でクリックします。その後、他の任意のストレージクラスへ変更できます。
説明解凍時間: オブジェクトを解凍するのに必要な時間です。コールドアーカイブストレージクラスでは、標準解凍優先度のみがサポートされており、解凍プロセスには 2~5 時間かかります。
解凍済み状態の開始時刻: 解凍操作が完了した後、パーティション内の最初のコールドアーカイブオブジェクトが解凍済み状態になる時刻です。
解凍済み状態の有効期間: パーティション内の最初のコールドアーカイブオブジェクトが解凍された後、データが解凍済み状態で有効である期間です。パーティション内のすべてのオブジェクトが解凍された後、パーティションの読み取り、書き込み、またはストレージクラスの変更が可能です。解凍済み状態の有効期間が終了すると、パーティション内のデータはコールドアーカイブ状態に戻り、直接アクセスできなくなります。データに対して操作を行うには、再度解凍リクエストを送信して解凍が完了するのを待つ必要があります。
復元プロシージャ
最初に、オブジェクトは凍結ステータスにあります。
解凍リクエストを送信すると、オブジェクトは解凍中ステータスに移行します。実際の解凍時間は変動する場合があります。
サーバーが解凍タスクを完了すると、オブジェクトは解凍済みステータスに移行します。テーブルレベルのストレージ階層化の場合、パーティション内のすべてのオブジェクトが解凍された後、パーティションは通常通りアクセス可能になります。
パーティションの解凍済み状態の有効期間を調整することで、解凍済み状態の期間を延長できますが、その合計期間は該当ストレージクラスの最大制限を超えてはなりません。パーティションの解凍状態の期間を調整することで、解凍状態の期間を延長できます。ただし、合計期間はそのストレージクラスの上限を超えることはできません。
解凍済み状態の有効期間が終了すると、オブジェクトは元のストレージクラスを変更せずに凍結ステータスに戻ります。データに再度アクセスするには、新しい解凍リクエストを送信し、解凍が完了するのを待つ必要があります。
有効化すると、システムは構成したライフサイクルルールに基づいて、カタログ内のすべてのテーブルのストレージ階層化を自動的に実行します。必要に応じて階層化ポリシーおよびルールを指定します。