Unity Catalogテーブルのシャロークローン
プレビュー
この機能は パブリック プレビュー段階です。
Unity Catalog マネージドテーブルと外部テーブルでは、シャロークローンのサポートが異なります。マネージドテーブルには Databricks Runtime 13.3 以降を、外部テーブルには Databricks Runtime 14.2 以降を使用します。
Unity CatalogマネージドテーブルからUnity Catalogマネージドテーブルへのクローン、およびUnity Catalog外部テーブルからUnity Catalog外部テーブルへのクローンのみが可能です。VACUUM の動作は、マネージドテーブルと外部テーブルで異なります。Unity CatalogシャロークローンでのVACUUMの使用を参照してください。
シャロークローンを使用して、既存の Unity Catalog テーブルから新しい Unity Catalog テーブルを作成できます。 Unity Catalog のシャロークローンのサポートにより、基になるデータファイルをコピーすることなく、親テーブルから独立したアクセス制御特権を持つテーブルを作成できます。
テーブルの複製に関する情報については、 「Databricks でのテーブルの複製」を参照してください。
Unity Catalog マネージド シャロークローンを作成する
Unity Catalog でマネージドテーブルのシャロークローンを作成します。
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Unity Catalog 上にマネージドシャロークローンを作成するには、ソースとターゲットのリソースに対する次の権限が必要です。
リソース | 必要な権限 |
|---|---|
ソーススキーマ |
|
ソースカタログ |
|
ターゲットスキーマ |
|
ターゲットカタログ |
|
他の create table ステートメントと同様に、シャロークローンを作成するユーザーはターゲット表の所有者です。クローンターゲットテーブルの所有者は、ソーステーブルとは無関係に、そのテーブルのアクセス権を制御できます。これは、クローンテーブルの所有者がソーステーブルの所有者と異なる場合があるということです。
Unity Catalog 外部シャロークローンを作成する
外部ロケーションを指定して Unity Catalog 外部シャロークローンを作成します。
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 Catalog 上に外部シャロークローンを作成するには、ソースリソースおよびターゲットリソースに対して以下の権限が必要です。
リソース | 必要な権限 |
|---|---|
ソーススキーマ |
|
ソースカタログ |
|
ターゲットスキーマ |
|
ターゲットカタログ |
|
ターゲットの外部ロケーション |
|
標準アクセスモードでのシャロークローンテーブルの操作
標準アクセス モード(以前の共有アクセス モード)でシャロークローンをクエリするには、テーブルおよび格納リソースに対する次の特権が必要です。
リソース | 必要な権限 |
|---|---|
カタログ |
|
スキーマ |
|
テーブル |
|
以下の操作を完了するには、クローン操作のターゲットに対するMODIFY権限も持っている必要があります。
- レコードの挿入
- レコードを削除
- レコードを更新します
MERGECREATE TABLEDROP TABLE
専用アクセス・モードでのシャロークローン・テーブルの操作
専用アクセス・モード (以前のシングル・ユーザー・アクセス・モード) で Unity Catalog のシャロークローンを操作する場合は、クローンテーブルソースとターゲットテーブルのリソースに対するアクセス許可が必要です。
単純なクエリでは、ターゲットテーブルに必要な権限に加えて、ソースカタログおよびスキーマに対するUSE権限と、ソーステーブルに対するSELECT権限が必要です。ターゲットテーブルにレコードを更新または挿入するクエリーについては、ソーステーブルに対するMODIFY権限も必要です。
Databricks は、標準アクセス モードのコンピュート上で Unity Catalog クローンを操作することをお勧めします。これにより、Unity Catalog シャロークローンターゲットとそのソーステーブルに対するアクセス許可を個別に進化させることができます。
Unity Catalog シャロークローンで VACUUM を使用する
シャロークローン操作のソースとターゲットに Unity Catalog テーブルを使用すると、Unity Catalog によって基になるデータ ファイルが管理され、複製操作のソースとターゲットの信頼性が向上します。 シャロークローンのソースで VACUUM を実行しても、クローンされたテーブルは壊れません。
通常、VACUUM が特定の保持しきい値に対して有効なファイルを識別すると、現在のテーブルのメタデータのみが考慮されます。ただし、Unity Catalog のシャロークローンサポートは、すべてのクローンテーブルとソースデータファイル間の関係を追跡するため、有効なファイルは、シャロークローンされた任意のテーブルとソーステーブルのクエリを返すために必要なデータファイルを含むように拡張されます。
つまり、Unity Catalog のシャロークローン VACUUM セマンティクスの場合、有効なデータ ファイルは、ソース テーブルまたは複製されたテーブルに対して指定された保有期間のしきい値内の任意のファイルです。 マネージ テーブルと外部テーブルでは、セマンティクスが若干異なります。
この拡張されたメタデータ追跡は、VACUUM操作がDelta Lakeテーブルの基になるデータファイルに与える影響を、以下のセマンティクスで変更します。
- マネージドテーブルの場合、シャロークローン操作のソースまたはターゲットに対する
VACUUM操作によって、ソース テーブルからデータ ファイルが削除される可能性があります。 - 外部テーブルの場合、
VACUUMの操作は、ソーステーブルに対して実行された場合にのみ、ソーステーブルからデータファイルを削除します。 - ソース表に対して有効と見なされないデータ・ファイル、またはソースに対するシャロークローンのみが削除されます。
- 1 つのソーステーブルに対して複数のシャロークローンが定義されている場合、いずれかのクローンテーブルで
VACUUMを実行しても、他のクローンテーブルの有効なデータ・ファイルは削除されません。
Databricksでは、進行中の長期間にわたるトランザクションの破損を回避するために、保有期間の設定が7日未満のVACUUMを実行しないことをお勧めします。保持のしきい値を低くして VACUUM を実行する必要がある場合は、Unity Catalog のシャロークローンの VACUUM と、 VACUUM が Databricks 上の他のクローン テーブルと対話する方法とどのように異なるかを理解してください。詳細については、「Databricks でのテーブルのクローン」を参照してください。
また、シャロークローンテーブルが削除された場合でも、ベーステーブルでVACUUMを実行するには、そのシャロークローンテーブルへのSELECTアクセスが必要になる場合があります。Databricks は、それらのファイルを vacuum 処理する前に、クローンがどのベーステーブルのデータファイルをまだ参照しているかを確認するために、シャロークローンの Delta ログを読み込みます。Databricksは、シャロークローンされたテーブルが削除されてから7日間、UNDROP操作をサポートするためにこのリンクを保持します。ただし、標準アクセスモードではこの権限は必要ありません。
シャロークローン用のベーステーブルを削除する
シャロークローンのベーステーブルがドロップされると、そのクローンは使用できなくなります。デフォルトでは、Databricks は、参照するシャロークローンが残っている場合、ベーステーブルの削除をブロックします。
この保護を上書きするには、DROP TABLE ... FORCE構文を使用します。FORCEを使用する場合:
- ベーステーブルはすぐに削除されます。
- 参照元のすべてのシャロークローンは無効になります:
- データまたはメタデータの読み取りを必要とする操作で失敗します(例:
SELECT、INSERT、UPDATE、DESCRIBE HISTORY、CLONE)。 - クリーンアップを可能にするために、メタデータレベルの操作(例:
SHOW TABLES、DROP TABLE)を介して引き続き表示されます。
- データまたはメタデータの読み取りを必要とする操作で失敗します(例:
この動作はUnity Catalog マネージドテーブルにのみ適用されます。詳細については、DROP TABLEを参照してください。
制限事項:
- 外部テーブルのシャロー・クローンは、外部テーブルである必要があります。 マネージド テーブルのシャロー クローンは、マネージド テーブルである必要があります。
REPLACEまたはCREATE OR REPLACEを使用して既存のシャロークローンを上書きすることはできません。代わりに、シャロークローンをDROPし、新しいCREATEステートメントを実行してください。- OpenSharingを使用してシャロークローンを共有することはできません。
- シャロークローンをネストすることはできません。つまり、シャロークローンからシャロークローンを作成することはできません。
- マネージドテーブルのシャロークローンでは、ソーステーブルを削除するとターゲットテーブルが破損します。外部テーブルの基礎となるデータファイルは、
DROP TABLE操作では削除されないため、外部テーブルのシャロー・クローンはソースの削除によって影響を受けません。 - Unity Catalog を使用すると、ユーザーは
DROP TABLEコマンドの実行後、約 7 日間マネージド テーブルUNDROPことができます。Databricks Runtime 13.3 LTS 以降では、ドロップされたソーステーブルのマネージドシャロークローンは、Unity Catalog がUNDROPをサポートする7日間機能し続けます。その期間内にソース表が復元されない場合、ソースデータファイルがガベージコレクション中に削除されると、シャロークローンは機能しなくなります。