Unity Catalog テーブルの浅い複製

重要

Unity Catalog で管理されるテーブルの浅いクローンのサポートは、Databricks Runtime 13.3 以降でパブリック プレビュー段階にあります。 Unity Catalog 外部テーブルの浅いクローンのサポートは、Databricks Runtime 14.2 以降でパブリック プレビュー段階にあります。

浅い複製を使用して、既存の Unity Catalog テーブルから新しい Unity Catalog テーブルを作成できます。 Unity Catalog の浅い複製のサポートにより、基になるデータ ファイルをコピーすることなく、親テーブルから独立したアクセス制御特権を持つテーブルを作成できます。

重要

複製できるのは、Unity Catalog マネージド テーブルから Unity Catalog マネージド テーブルへの Unity Catalog 外部テーブルと Unity Catalog 外部テーブルのみです。 VACUUM 動作は、マネージ テーブルと外部テーブルで異なります。 「 Vacuum と Unity Catalog の浅いクローン」を参照してください。

Delta クローンの詳細については、「 Databricks でのテーブルのクローン作成」を参照してください。

Unity Catalog テーブルの詳細については、「 Unity Catalog でテーブルを作成する」を参照してください。

Unity Catalog 上に浅いクローンを作成する

次の構文例に示すように、製品全体の浅いクローンに使用できるのと同じ構文を使用して、Unity Catalog で浅いクローンを作成できます。

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

Unity Catalogに浅いクローンを作成するには、次の表に示すように、ソース・リソースとターゲット・リソースの両方に対する十分な権限が必要です。

リソース

必要なアクセス許可

ソース テーブル

SELECT

ソーススキーマ

USE SCHEMA

ソース カタログ

USE CATALOG

ターゲット スキーマ

USE SCHEMA, CREATE TABLE

ターゲットカタログ

USE CATALOG

Target 外部ロケーション (外部テーブルのみ)

CREATE EXTERNAL TABLE

他の create table ステートメントと同様に、浅いクローンを作成するユーザーはターゲット表の所有者です。 ターゲット・クローン表の所有者は、ソース表とは無関係に、その表のアクセス権を制御できます。

クローン表の所有者は、ソース表の所有者とは異なる場合があります。

クエリーまたは Unity Catalog の浅いクローンテーブルの変更

重要

このセクションの手順では、共有アクセス モードで構成されたコンピュートに必要な権限について説明します。 シングルユーザーアクセスモードについては、「 シングルユーザーアクセスモードでの浅いクローンテーブルの操作」を参照してください。

Unity Catalogで浅いクローンを作成するには、次の表に示すように、テーブルおよび格納リソースに対する十分な権限が必要です。

リソース

必要なアクセス許可

カタログ

USE CATALOG

スキーマ

USE SCHEMA

テーブル

SELECT

また、次のアクションを実行するには、クローン・オペレーションのターゲットに対する MODIFY 権限が必要です。

  • レコードの挿入

  • レコードの削除

  • レコードの更新

  • MERGE

  • CREATE OR REPLACE TABLE

  • DROP TABLE

Vacuumおよび Unity Catalog 浅いクローン

重要

この動作は、マネージド テーブルの場合は Databricks Runtime 13.3 LTS 以降、外部テーブルの場合は Databricks Runtime 14.2 以降でパブリック プレビューされています。

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

通常、 VACUUM が特定の保持しきい値に対して有効なファイルを識別すると、現在のテーブルのメタデータのみが考慮されます。 Unity Catalog の浅いクローンのサポートは、すべてのクローンテーブルとソースデータファイル間の関係を追跡するため、有効なファイルは、浅いクローンテーブルとソーステーブルのクエリーを返すために必要なデータファイルを含むように拡張されます。

つまり、Unity Catalog の浅い複製 VACUUM セマンティクスの場合、有効なデータ ファイルは、ソース テーブルまたは複製されたテーブルに対して指定された保有期間のしきい値内の任意のファイルです。 マネージ テーブルと外部テーブルでは、セマンティクスが若干異なります。

この強化されたメタデータの追跡により、 VACUUM 操作が Delta テーブルをバックアップするデータ ファイルに与える影響が、次のセマンティクスによって変更されます。

  • マネージド テーブルの場合、浅いクローン操作のソースまたはターゲットに対する VACUUM 操作によって、ソース テーブルからデータ ファイルが削除される可能性があります。

  • 外部テーブルの場合、 VACUUM 操作は、ソーステーブルに対して実行されたときにのみソーステーブルからデータファイルを削除します。

  • ソース表に対して有効と見なされないデータ・ファイル、またはソースに対する浅いクローンのみが削除されます。

  • 1 つのソース表に対して複数の浅いクローンが定義されている場合、いずれかのクローン表で VACUUM を実行しても、他のクローン表の有効なデータ・ファイルは削除されません。

Databricks では、進行中の長時間実行されるトランザクションの破損を回避するために、保有期間の設定が 7 日未満の VACUUM を実行しないことをお勧めします。 保持のしきい値を低くして VACUUM を実行する必要がある場合は、Unity Catalog の浅いクローンの VACUUM と、 VACUUM が Databricks 上の他のクローン テーブルと対話する方法とどのように異なるかを理解してください。 「 Databricks でのテーブルの複製」を参照してください。

シングルユーザーアクセスモードで の浅いクローンテーブルの操作

Unity Catalog の浅いクローンをシングル ユーザー アクセス モードで操作する場合は、クローン テーブル ソースとターゲット テーブルのリソースに対するアクセス許可が必要です。

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

Databricks では、コンピュート上の Unity Catalog クローンを共有アクセス モードで操作することをお勧めします。これにより、 Unity Catalog 浅いクローン ターゲットとそのソース テーブルに対するアクセス許可を個別に進化させることができます。

制限

  • 外部表のシャロー・クローンは、外部表である必要があります。 マネージド テーブルのシャロー クローンは、マネージド テーブルである必要があります。

  • Delta Sharingを使用して浅いクローンを共有することはできません。

  • 浅いクローンをネストすることはできません。つまり、浅いクローンから浅いクローンを作成することはできません。

  • マネージド テーブルの場合、ソース テーブルを削除すると、シャロー クローンのターゲット テーブルが壊れます。 外部テーブルをバッキングするデータファイルは DROP TABLE 操作によって削除されないため、外部テーブルのシャロークローンはソースを削除しても影響を受けません。

  • Unity Catalog を使用すると、ユーザーはDROP TABLEコマンドの実行後、約 7 日間テーブルをUNDROP管理できます。 Databricks Runtime 13.3 LTS 以降では、削除されたマネージド テーブルに基づくマネージド シャロー クローンはこの 7 日間の期間中も引き続き機能します。 このウィンドウでソース テーブルをUNDROPしない場合、ソース テーブルのデータ ファイルがガベージ コレクションされると、シャロー クローンは機能しなくなります。