データ接続と統合Iceberg tablesFoundryでのIcebergの使用スナップショット

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Iceberg テーブルのスナップショット

Iceberg スナップショットは、ある時点におけるテーブルの状態を記録したものです。スナップショットがコミットされた時点で、どのデータファイルがテーブルを構成しているかを正確に記録します。Iceberg テーブルへのデータ書き込みのたびに、新しいスナップショットが生成されます。

このページでは、スナップショットとは何か、Foundry でスナップショットを探索できる場所、スナップショットの操作の種類、およびスナップショットと Foundry データセットのトランザクションとの対応について説明します。

スナップショットの仕組み

Iceberg では、データ書き込みのたびに現在のスナップショットに続く新しいスナップショットがコミットされ、テーブルの変化の履歴が記録されます。スナップショット自体はデータを保存しません。代わりに、テーブルのメタデータを通じて記録された、その時点でテーブルを構成するデータファイルを参照します。

スナップショットは、有効期限切れによって削除できます。有効期限はメンテナンスタブで設定できます。有効期限切れによる削除は元に戻せません。有効期限が切れたスナップショットを表示したり、そのスナップショットにタイムトラベルしたり、ロールバックしたりすることはできません。

Iceberg のスナップショットとメタデータモデルに関する詳細な技術説明については、Apache Iceberg テーブル仕様 ↗を参照してください。

スキーマ、識別子列、パーティションの更新など、メタデータのみの操作では Iceberg スナップショットは作成されず、スナップショットタブにも表示されません。新しいスキーマバージョンは、次にスナップショットを生成する操作が行われたときにタブに表示されます。

Foundry でスナップショットを表示する

データセットプレビューのスナップショットタブには、Iceberg テーブルの履歴が一連のスナップショットとして表示されます。このタブは、テーブルに対して実行された Foundry ジョブを一覧表示する履歴タブを補完します。

複数のスナップショットが表示された Iceberg のスナップショットタブ。

トレンドセクションには、Iceberg のスナップショット概要メトリクス ↗を使用して、選択した期間のスナップショットの概要が視覚的に表示されます。X 軸はコミット時刻を表し、各点は1個のスナップショットを表して、そのコミット時刻にプロットされます。

  • 合計サイズ: Iceberg の total-files-size です。バイト単位で測定され、1024を基数とする IEC の2進単位 ↗で表示されます。選択したブランチの各スナップショット時点における、有効なデータファイルと削除ファイルの合計サイズの推移を表します。メタデータファイルと孤立ファイルは含まれません。
  • レコード数: Iceberg の total-records です。有効なデータファイルに物理的に含まれるレコードを表します。Iceberg は、以前の合計に追加されたデータファイルのレコード数を加え、削除されたデータファイルのレコード数を差し引いて算出します。位置削除または等価削除の対象となる行も引き続き含まれるため、このメトリクスは読み取り時に表示される行数を上回ることがあります。
  • ファイル数: Iceberg の total-data-files です。指定されたスナップショットで有効なデータファイルの件数を表します。削除ファイル、メタデータファイル、孤立ファイルは含まれません。
  • スキーマバージョン: 指定されたスナップショットに関連付けられたスキーマバージョンです。

スナップショットテーブルには、選択した期間のすべてのスナップショットが新しい順に表示され、次の列が含まれます。

  • Timestamp: スナップショットがコミットされた日時です。スナップショットが Foundry のビルドによって生成された場合、ジョブを表示リンクでそのジョブが開きます。
  • スナップショット ID: テーブルのメタデータファイルに記録されたスナップショット ID です。選択するとコピーできます。
  • タイプ: スナップショットを生成した操作(追加、上書き、置換、削除)です。スナップショットの種類で説明しています。
  • サイズ、レコード数、ファイル数: 操作後のテーブルの合計値、およびそのスナップショットによる追加と削除の数値です。
  • スキーマ: スナップショットのスキーマバージョンです。新しいバージョンを導入したスナップショットは、マーカーで強調表示されます。
  • 帰属: 書き込みを開始したユーザーまたはグループです。情報が利用可能な場合に表示されます。

この表示には、現在のメタデータファイルに存在するスナップショットのみが表示されます。有効期限が切れたスナップショットはメタデータに存在しなくなり、表示されません。

テーブルでスキーマバージョンを選択すると、そのスキーマバージョンの詳細と、以前のスキーマバージョンからの変更点を示すダイアログが開きます。

現在のスキーマと以前のバージョンからの変更点を示すスキーマバージョンのダイアログ。

スナップショットの種類

すべてのスナップショットには、それを生成した操作の種類が記録されます。Iceberg では、4種類のスナップショットが定義されています。

追加

新しいデータファイルが追加され、既存のものは変更も削除もされません。通常の追加操作では追加スナップショットが生成されます。空のテーブルへの最初の書き込みでも同様です。

新しい Iceberg テーブルへの最初の書き込みは、テーブルの内容を完全に置き換える意図であっても、追加スナップショットとして記録されます。これは想定どおりの動作です。

テーブルが空の場合、上書きするものがないため、データの追加とデータの置き換えは論理的に同じです。ファイルが追加されただけで、削除されたファイルはないため、Iceberg はこの操作を「追加」として記録します。

上書き

データファイルの追加と削除の両方が行われ、テーブル内のレコードの論理的な集合が変更されます。上書きスナップショットには、部分的な上書きと全体の上書きの両方が含まれます。空ではないテーブルを完全に書き換えると、上書きスナップショットが生成されます。「上書き」および「更新」の Data Connection 同期でも同様です。

削除

データファイルを削除するか、削除対象の行を指定する削除ファイルを追加することで、データが論理的に削除されます。

置換

テーブルの論理的な内容を変更せずに、データファイルが書き換えられます。代表的な例は、メンテナンスタブから実行するコンパクションです。コンパクションは、テーブルが表すレコードを変更せずに、パフォーマンス向上のためにファイルを再編成します。

スナップショットと Foundry データセットのトランザクションとの対応

Foundry データセットのトランザクションの種類は、次のように Iceberg スナップショットの種類に対応します。

Iceberg スナップショットの種類Foundry データセットのトランザクション
APPEND スナップショットAPPEND トランザクション
OVERWRITE スナップショットUPDATE トランザクション
SNAPSHOT トランザクション
DELETE スナップショットDELETE トランザクション
REPLACE スナップショット(対応するものなし)