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

Iceberg テーブルと Foundry データセット

Iceberg テーブルとデータセットは、どちらも Foundry で表形式のデータを表現できるリソースタイプです。Iceberg テーブルは、幅広い Iceberg エコシステムとの相互運用性に加え、行レベルの編集や変更履歴などの機能を提供します。一方、データセットは現在、より多くの Foundry 機能に対応しています。

Iceberg テーブルの利点

Foundry では現在、Iceberg テーブルの次の利点を利用できます。

  • 相互運用性: オープンな Iceberg 形式により、サードパーティーツールで Palantir の Iceberg テーブルをより簡単に読み書きできます。
  • コンパクション: インクリメンタル(差分)読み取りに影響を与えずにコンパクションを実行できます。
  • 行の編集:DELETE、UPDATE、MERGE INTO ステートメントに対応しており、スナップショットを再作成せずに条件に応じて行を変更できます。
  • 変更履歴: 行の削除と更新をインクリメンタルに読み取れます。
  • テーブル履歴の充実: 履歴表示が強化され、Iceberg のテーブルメタデータ ↗が表示されます。

Iceberg テーブルの履歴を表示するインターフェースを、次のスクリーンショットに示します。

データセットアプリケーションの Iceberg テーブル履歴表示。

Iceberg テーブルで利用できない Foundry 機能

現在、Iceberg テーブルでは、次のような Foundry 機能を利用できません。

きめ細かなアクセス制御

きめ細かなアクセス制御に対応する方法は、ユーザーがどこでデータにアクセスするかによって異なります。

  • オントロジー内: Iceberg テーブルを元データソースとするオブジェクトタイプでは、オブジェクトとプロパティのセキュリティポリシーを使用して、行レベルと列レベルのアクセス制御を行えます。Iceberg テーブルを元データソースとするオブジェクトタイプでこれらのポリシーを使用する機能は、お使いのエンロールメントでは利用できない場合があります。利用をご希望の場合は、Palantir サポートにお問い合わせください。
  • テーブルレベル: Iceberg テーブルは、制限付きビューの元データソースとして直接使用できません。オントロジーの外部で行レベルのアクセス制御が必要な場合は、Iceberg テーブルから読み取る Foundry データセットを作成し、そのデータセットから制限付きビューを作成します。

Iceberg テーブルは、テーブル全体のアクセス制御に使用するマーキングにも対応しています。Iceberg テーブルのマーキングを参照してください。

Marketplace への対応

管理対象の Iceberg テーブルを Marketplace 製品にパッケージ化し、対象環境にその製品をインストールできます。インストールする各テーブルは、パッケージ化済みのテーブルと同じストレージの種類、つまり Foundry 管理ストレージまたは bring-your-own-bucket (BYOB) ストレージを使用する必要があります。たとえば、Foundry 管理ストレージを使用するテーブルを、BYOB ストレージを使用するテーブルとしてインストールすることはできません。その逆も同様です。

Iceberg テーブルと Foundry データセットの主な違い

Iceberg テーブルと Foundry データセットの動作には、次のような重要な違いがあります。

  • デフォルトブランチ: Iceberg のメインブランチは main、Foundry のメインブランチは master という名前です。Foundry と Iceberg の統合では、main と master は同じものとして扱われます。そのため、master で実行される Foundry ジョブは、Iceberg テーブルの main に書き込みます。Foundry がブランチごとにスキーマの変更を分離する仕組みについては、ブランチを参照してください。
  • マーキング: 保持されているいずれかの Iceberg スナップショットが継承したマーキングにより、そのマーキングの条件を満たさないユーザーは、通常はマーキングのないブランチも含め、テーブル全体を読み取れなくなる場合があります。データセットでのマーキングの適用範囲は、リクエストされたビューに限定されます。詳細とマーキング解除ワークフローのガイダンスについては、Iceberg テーブルのマーキングを参照してください。
  • 自動スキーマ進化: Iceberg テーブルのスキーマ進化は、常に自動で行われるわけではありません。テーブルの置き換えなど、一部のワークフローではテーブルのスキーマが自動的に更新されます。ただし、それ以外のワークフローでは、ALTER TABLE などの明示的なスキーマ進化コマンドや設定が必要です。Foundry のトランスフォーム API および Pipeline Builder を通じて書き込む場合、インクリメンタルでない実行では、Foundry がテーブルの置き換えを使用してこの処理を行います。インクリメンタルなスキーマ進化など、ほかのワークフローでは、処理に失敗して手動での解決が必要になる場合があります。詳細については、スキーマ進化に関する Apache Iceberg ドキュメント ↗を参照してください。

Iceberg 用語の意味の違い

Iceberg で導入されている用語には、Foundry に直接対応する用語がないものもあります。

Iceberg の用語意味Foundry との意味の違い
テーブルメタデータ ↗Iceberg テーブルの構造、スキーマ、状態を記述するメタデータです。Foundry もすべての形式のテーブルとデータセットのメタデータを追跡しますが、このメタデータは Foundry サービスによって内部的に管理されます。Iceberg テーブルの場合、Foundry は Iceberg ネイティブのメタデータを、Iceberg カタログを通じて JSON ファイルとして明示的に公開します。
スナップショット ↗特定の時点におけるテーブルの状態の記録です。Iceberg は、データが変更されるたびに新しいスナップショットを作成します。Iceberg スナップショットは、Foundry のトランザクションにほぼ相当します。ただし、Foundry では「スナップショット」という用語を別の意味でも使用します。Foundry の「スナップショット」は、データセット内のすべてのデータを完全に置き換えるトランザクションを指します。一方、Iceberg スナップショットは、インクリメンタルな変更を含む、あらゆる種類のデータ操作を記録します。Foundry カタログのデータセットトランザクションの種類と Iceberg スナップショットの種類の意味の違いについては、Iceberg スナップショットの種類を参照してください。