このトピックでは、MaxCompute のテーブルスナップショットを作成、復元、変更、削除する方法について説明します。
概要
テーブルスナップショットは、特定の時点におけるベーステーブルのデータを保持します。
テーブルスナップショットには、独立した有効期限を設定できます。スナップショットが作成されてから指定された時間が経過すると、システムは自動的にテーブルスナップショットを削除します。
テーブルスナップショットは読み取り専用です。テーブルスナップショットからテーブルを作成 (回復) して、テーブルデータを修復または復元できます。
テーブルスナップショットを使用する 2 つの主な利点:
データ保持と復元のためのより長いデータバックアップ期間。
テーブルスナップショットの最大保持期間は、現在の ローカルバックアップ 機能でサポートされている最大保持期間を超えています。必要に応じて、指定した時点のデータを保持できます。新しいビジネスルールやデータ更新によって問題が発生した場合、テーブルスナップショットに基づいてデータを以前の正しいバージョンに復元し、ビジネスへのさらなる影響を回避できます。
ストレージコストの最小化。
スナップショットとそのベーステーブルとの間で異なるバイトのみが保存されます。したがって、テーブルスナップショットが使用するストレージ領域は、通常、テーブルの完全なコピーよりも小さくなります。
適用範囲
サポートされるテーブルタイプ
標準テーブル (パーティションテーブル、非パーティションテーブル、クラスター化テーブルを含む)
PK/Append Delta テーブルのスナップショットの作成
サポートされないテーブルタイプ
トランザクションテーブル
ビュー
マテリアライズドビュー (Delta Live MV)
外部テーブル
リージョンとテナントの制限:テーブルスナップショットは、そのベーステーブルと同じリージョン、同じテナント内に存在する必要があります。
テーブルスナップショットは読み取り専用です。スナップショット内のデータを直接更新することはできません。データを変更するには、スナップショットから標準テーブルを作成し、その新しいテーブルを更新する必要があります。ただし、説明、有効期限、アクセス権限ポリシーなど、スナップショットのメタデータは更新できます。
ライフサイクルの制限:ライフサイクルが設定されたパーティションテーブルのスナップショットを作成した場合、そのライフサイクルルールはスナップショット内のデータには適用されません。
ストリーミング書き込みのレイテンシー:Streaming Tunnel を使用して書き込まれ、Tunnel ソフトウェア開発キット (SDK) の
streamRecordPack.flushを呼び出してフラッシュされたデータは、スナップショットに含まれるまでに 5〜10 分のレイテンシーがあります。削除されたテーブルスナップショットは復元できません。
ジョブの制限
テーブルあたりの最大スナップショット数:1,000。
プロジェクトあたりの同時 CREATE SNAPSHOT ジョブの最大数:100。
プロジェクトあたりの 1 日の CREATE SNAPSHOT ジョブの最大合計数:50,000。
テーブルあたりの 1 日の CREATE SNAPSHOT ジョブの最大数:50。
テーブルスナップショットの作成
コマンド構文
テーブルを作成する際に、データの有効期限を設定できます。現在、設定されていない場合、テーブルスナップショットはプロジェクトに設定されたデータの存続時間 (time to live) を継承します (将来的には、テーブルスナップショットの有効期限が完全に独立するように変更される予定です)。
CREATE [OR REPLACE] SNAPSHOT TABLE [IF NOT EXISTS] <table_snapshot_name>
CLONE <source_table_name>
[OPTIONS(<snapshot_option_list>)]パラメーター
パラメーター | 説明 |
table_snapshot_name | 作成するテーブルスナップショットの名前。 |
source_table_name | スナップショットを作成する対象のテーブル。 |
snapshot_option_list |
|
例
CREATE SNAPSHOT TABLE <table_snapshot_name>
CLONE <source_table_name>
OPTIONS(
expiration_timestamp=TIMESTAMP "2025-07-01 00:00:00",
description="xxx 日後に有効期限が切れるテーブルスナップショット"
);テーブルスナップショットからの回復
ソーステーブルに回復するか、新しいテーブルを作成できます。
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] <source_table_name>
CLONE <table_snapshot_name>テーブルスナップショットの変更
OPTIONS のみを変更できます。
ALTER SNAPSHOT TABLE [IF EXISTS] <snapshot_table_name>
SET OPTIONS(<snapshot_option_list>)テーブルスナップショットの削除
DROP SNAPSHOT TABLE [IF EXISTS] <table_snapshot_name>権限管理
テーブルスナップショットの操作は、テーブル の操作と似ています。権限管理には、テーブルスナップショットの作成、テーブルスナップショットからの回復、テーブルスナップショットの一覧表示、テーブルスナップショットの説明の取得、テーブルスナップショットのメタデータの更新、テーブルスナップショットの削除、およびテーブルスナップショットからのデータクエリが含まれます。
課金
ストレージ料金 がテーブルスナップショットに適用されます。ただし、MaxCompute は、他のテーブルにまだ含まれていないテーブルスナップショット内のデータに対してのみ課金します。詳細は次のとおりです:
テーブルスナップショットを作成しても、そのテーブルスナップショットに対してストレージ料金は発生しません。
テーブルスナップショットを作成した後にベーステーブルにデータを追加した場合、この新しいデータによってテーブルスナップショットにストレージ料金が発生することはありません。
テーブルスナップショットを作成した後にベーステーブルのデータを変更または削除した場合、ベーステーブル内の更新または削除されたデータに対してストレージ料金は発生しません。ただし、このデータはスナップショットテーブルに保持され、パージされないため、テーブルスナップショットに対してストレージ料金が発生します。
説明ベーステーブルで変更または削除されたデータは、ローカルバックアップ期間内であれば ローカルバックアップ を通じて復元でき、ローカルバックアップ料金は発生しません。
複数のテーブルスナップショットに変更または削除されたデータが含まれている場合、最大のストレージを消費するスナップショットに対してのみ課金されます。