Unity Catalog テーブルのシャロー クローン

Important

この機能は パブリック プレビュー段階です

Important

簡易クローンのサポートは、Unity カタログのマネージド テーブルと外部テーブルで異なります。 マネージド テーブルでは Databricks Runtime 13.3 LTS 以降を使用し、外部テーブルの場合は Databricks Runtime 14.3 LTS 以降を使用します。

Unity Catalog マネージド テーブルから Unity Catalog マネージド テーブルへ、Unity Catalog 外部テーブルから Unity Catalog 外部テーブルへの複製のみを行うことができます。 VACUUM の動作は、マネージドおよび外部のテーブルでそれぞれ異なります。 Unity カタログの浅いクローンでのVACUUM使用方法を参照してください。

浅い複製を使用して、基になるデータ ファイルをコピーせずに、ソース テーブルから独立したアクセス制御特権を持つ Unity カタログ テーブルを作成します。 Unity カタログの簡易クローンは、Delta Lake テーブルでのみサポートされます。 Iceberg やその他の Delta 以外のテーブルの浅いクローンを作成することはできません。

テーブルの複製の詳細については、「 Azure Databricks でテーブルを複製する」を参照してください。

Unity カタログで管理される浅いクローンを作成する

Unity カタログでマネージド テーブルの浅い複製を作成します。

CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>

Unity カタログで管理された浅い複製を作成するには、ソースリソースとターゲットリソースに対して次の権限が必要です。

Resource 権限が必要です
送信元スキーマ USE SCHEMA
ソースカタログ USE CATALOG
ターゲット スキーマ USE SCHEMACREATE TABLE
ターゲット カタログ USE CATALOG

他の create テーブル ステートメントと同様に、 SHALLOW CLONEを実行する場合は、ターゲット テーブルを所有します。 複製されたターゲット テーブルの所有者は、ソース テーブルとは別に、そのテーブルのアクセス権を制御します。 複製されたテーブルの所有者は、ソース テーブルの所有者とは異なる場合があります。

Unity Catalog の外部浅いクローンを作成する

外部の場所を指定して Unity カタログの外部浅いクローンを作成します。

CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
LOCATION 's3://<bucket-name>/<path-name>/<target-table-name>'

Unity カタログで外部の浅い複製を作成するには、ソースリソースとターゲットリソースに対して次の権限が必要です。

Resource 権限が必要です
送信元スキーマ USE SCHEMA
ソースカタログ USE CATALOG
ターゲット スキーマ USE SCHEMACREATE TABLE
ターゲット カタログ USE CATALOG
外部の場所をターゲットとする CREATE EXTERNAL TABLE

標準アクセス モードで浅い複製テーブルを操作する

標準アクセス モード (以前の共有アクセス モード) で浅い複製に対してクエリを実行するには、テーブルとリソースを含む次の特権が必要です。

Resource 権限が必要です
Catalog USE CATALOG
Schema USE SCHEMA
Table SELECT

次の操作を実行するには、複製操作のターゲットに対する MODIFY アクセス許可も必要です。

  • INSERT
  • DELETE
  • UPDATE
  • MERGE
  • CREATE TABLE
  • DROP TABLE

専用アクセス モードで浅い複製テーブルを操作する

Unity カタログの簡易クローンを専用アクセス モード (以前のシングル ユーザー アクセス モード) で使用する場合は、複製されたテーブル ソースとターゲット テーブルの両方のリソースに対するアクセス許可が必要です。

単純なクエリの場合、ターゲット テーブルに必要なアクセス許可に加えて、ソース カタログとスキーマに対する USE 権限と、ソース テーブルに対する SELECT 権限が必要です。 ターゲット テーブルにレコードを更新または挿入するクエリの場合は、ソース テーブルに対する MODIFY 権限も必要です。

Databricks では、標準アクセス モードのコンピューティングで Unity カタログ クローンを使用することをお勧めします。これにより、Unity カタログの簡易クローン ターゲットとそのソース テーブルに対するアクセス許可を個別に変更できます。

Unity カタログの浅いクローンで VACUUM を使用する

シャロー クローン操作のソースとターゲットに Unity Catalog テーブルを使用すると、Unity Catalog によって基になるデータ ファイルが管理され、複製操作のソースとターゲットの信頼性が向上します。 シャロークローンのソースに対して VACUUM を実行しても、クローンされたテーブルは壊れません。

通常、VACUUM で特定の保持しきい値の有効なファイルが識別される場合、現在のテーブルのメタデータのみが考慮されます。 ただし、Unity カタログの浅い複製サポートでは、複製されたすべてのテーブルとソース データ ファイルの間のリレーションシップが追跡されるため、有効なファイルが拡張され、浅い複製テーブルとソース テーブルの両方のクエリを返すために必要なデータ ファイルが含まれます。

Unity カタログの簡易クローンの VACUUM の場合、有効なデータ ファイルは、ソース テーブルまたは複製されたテーブルの指定された保持しきい値内の任意のファイルです。 マネージド テーブルと外部テーブルの動作は若干異なります。

メタデータの追跡が強化され、 VACUUM 操作が Delta Lake テーブルの基になるデータ ファイルに与える影響が次のように変わります。

  • マネージド テーブルの場合、浅い複製操作のソースまたはターゲットに対する操作を VACUUM すると、ソース テーブルからデータ ファイルが削除される可能性があります。
  • 外部テーブルの場合、VACUUM 操作では、ソース テーブルに対する実行時にのみ、ソース テーブルからデータ ファイルが削除されます。
  • ソース テーブルに対して有効と見なされないデータ ファイル、またはソースに対するシャロー クローンのみが削除されます。
  • 1 つのソース テーブルに対して複数のシャロー クローンが定義されている場合、複製されたテーブルのいずれかで VACUUM を実行しても、他の複製テーブルの有効なデータ ファイルは削除されません。

Note

Databricks では、実行時間の長いトランザクションが破損しないように、保持期間の設定が 7 日未満の VACUUM は実行しないことをお勧めします。 より低い保持しきい値が必要な場合は、Unity Catalog のシャロークローンに対する VACUUM の動作が、Azure Databricks 上の他のクローンテーブルに対する VACUUM の影響とどのように異なるかを検討してください。 詳細については、「 Azure Databricks でテーブルを複製する」を参照してください。

浅い複製テーブルを削除した場合でも、基本テーブルでSELECTを実行するには、その浅い複製テーブルへのVACUUMアクセスが必要になる場合があります。 Databricks は、シャロー クローンの Delta ログを読み取り、クローンが依然として参照しているベース テーブルのデータ ファイルを確認した上で、それらのファイルを vacuum します。 Databricks は、 UNDROP 操作をサポートするために浅い複製テーブルを削除した後、このリンクを 7 日間保持します。 ただし、標準アクセス モードでは、このアクセス許可は必要ありません。

浅いクローンのベース テーブルを削除する

浅いクローンのベース テーブルを削除すると、複製は使用できなくなります。 既定では、Databricks はベース テーブルを参照する浅い複製が残っている場合、そのテーブルを削除するのをブロックします。

この保護をオーバーライドするには、 DROP TABLE ... FORCE 構文を使用します。 FORCEを使用する場合:

  • ベース テーブルは直ちに削除されます。
  • 参照するすべてのシャロー クローンは、破損状態になり、次のようになります:
    • 浅い複製は、データまたはメタデータ ( SELECTINSERTUPDATEDESCRIBE HISTORYCLONEなど) の読み取りを必要とする操作で失敗します。
    • クリーンアップを可能にするために、浅いクローンはメタデータ レベルの操作 ( SHOW TABLESDROP TABLE など) を通じて引き続き表示されます。

この動作は、Unity カタログのマネージド テーブルにのみ適用されます。 詳細については、DROP TABLEを参照してください。

制限事項

  • シャロー クローンは、Delta Lake テーブルでのみサポートされています。 Iceberg やその他の Delta 以外のテーブルの浅いクローンを作成することはできません。
  • CREATE OR REPLACEを使用して既存の浅い複製を上書きすることはできません。 DROP TABLEの後にCREATE TABLEを使用するか、新しいテーブル名を使用します。
  • 外部テーブルのシャロー クローンは、外部テーブルでなければなりません。 マネージド テーブルにおけるシャロー クローンは、マネージド テーブルである必要があります。
  • OpenSharing を使用して浅い複製を共有することはできません。
  • シャロー・クローンを入れ子にすることはできません。つまり、シャロー クローンからシャロー クローンを作成できません。
  • マネージド テーブルの場合、ソース テーブルを削除すると、シャロー クローンのターゲット テーブルが破損します。 外部テーブルの基になるデータ ファイルは DROP TABLE 操作によって削除されないため、外部テーブルの浅い複製はソースの削除による影響を受けなくなります。
  • Unity Catalog を使用すると、ユーザーは UNDROP コマンドの実行後約 7 日間マネージド テーブルをDROP TABLEできます。 Databricks Runtime 13.3 LTS 以降では、ドロップされたソース テーブルの管理された浅い複製は、Unity カタログが UNDROPをサポートする 7 日間、引き続き機能します。 そのウィンドウ内でソース テーブルが復元されない場合、ガベージ コレクション中にソース データ ファイルが削除されると、浅い複製は機能を停止します。