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