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 でシャロークローンを作成できます。
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name> SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Unity Catalog 上にシャロークローンを作成するには、次の表に示すように、ソース・リソースとターゲット・リソースの両方に対する十分な権限が必要です。
リソース |
必要なアクセス許可 |
---|---|
ソース テーブル |
|
ソーススキーマ |
|
ソース カタログ |
|
ターゲット スキーマ |
|
ターゲットカタログ |
|
Target 外部ロケーション (外部テーブルのみ) |
|
他の create table ステートメントと同様に、シャロークローンを作成するユーザーはターゲット表の所有者です。 ターゲット・クローン表の所有者は、ソーステーブルとは無関係に、そのテーブルのアクセス権を制御できます。
注
クローン表の所有者は、ソース表の所有者とは異なる場合があります。
Unity Catalog 上にシャロークローンされたテーブルのクエリーまたは変更
重要
このセクションの手順では、共有アクセス モードで構成されたコンピュートに必要な権限について説明します。 シングルユーザーアクセスモードについては、「 シングルユーザーアクセスモードでのシャロークローンテーブルの操作」を参照してください。
Unity Catalogでシャロークローンを作成するには、次の表に示すように、テーブルおよび格納リソースに対する十分な権限が必要です。
リソース |
必要なアクセス許可 |
---|---|
カタログ |
|
スキーマ |
|
テーブル |
|
また、次のアクションを実行するには、クローン・オペレーションのターゲットに対する 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
しない場合、ソース テーブルのデータ ファイルがガベージ コレクションされると、シャロー クローンは機能しなくなります。