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 セマンティクスの場合、有効なデータ ファイルは、ソース テーブルまたは複製されたテーブルに対して指定された保有期間のしきい値内の任意のファイルです。 マネージ テーブルと外部テーブルでは、セマンティクスが若干異なります。
このメタデータの追跡機能の強化により、Delta テーブルの基となるデータ ファイルに対するVACUUM操作の影響が、以下の意味論に従って変更されます。
- マネージドテーブルの場合、シャロークローン操作のソースまたはターゲットに対する
VACUUM操作によって、ソース テーブルからデータ ファイルが削除される可能性があります。 - 外部テーブルの場合、
VACUUM操作は、ソース テーブルに対して実行される場合にのみ、ソース テーブルからデータ ファイルを削除します。 - ソース表に対して有効と見なされないデータ・ファイル、またはソースに対するシャロークローンのみが削除されます。
- 1 つのソーステーブルに対して複数のシャロークローンが定義されている場合、いずれかのクローンテーブルで
VACUUMを実行しても、他のクローンテーブルの有効なデータ・ファイルは削除されません。
Databricksは、進行中の長時間実行トランザクションが破損するのを避けるため、保持設定を7日未満にしてVACUUMを実行しないことを推奨します。VACUUMより低い保持しきい値で実行する必要がある場合は、Unity Catalog の浅いクローンでのVACUUMが、Databricks 上の他のクローンされたテーブルとのVACUUM相互作用とどのように異なるかを理解してください。詳細については、 Databricksでテーブルを複製する」を参照してください。
また、浅いクローンテーブルが削除された場合でも、ベーステーブルでVACUUMを実行するために、その浅いクローンテーブルへのSELECTアクセスが必要になる場合があります。Databricks 、シャローク ローンのDeltaログを読み取り、 vacuumを行う前に、クローンがまだ参照しているベース テーブル データ ファイルを確認します。 Databricks は、 UNDROP操作をサポートするために、浅いクローンされたテーブルが削除されてから 7 日間このリンクを維持します。ただし、標準アクセスモードでは、この権限は必要ありません。
シャロークローンのベーステーブルをドロップする
シャロークローンのベーステーブルがドロップされると、クローンは使用できなくなります。 デフォルトでは、 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ステートメントを実行します。- Delta Sharingを使用してシャロークローンを共有することはできません。
- シャロークローンをネストすることはできません。つまり、シャロークローンからシャロークローンを作成することはできません。
- マネージドテーブルの場合、ソース テーブルをドロップすると、シャロー クローンのターゲット テーブルが壊れます。 外部テーブルの基となるデータファイルは
DROP TABLE操作では削除されないため、外部テーブルの浅いクローンはソースの削除による影響を受けません。 - Unity Catalog使用すると、ユーザーは
DROP TABLEコマンドの後、約 7 日間、UNDROPマネージドテーブルを使用できます。 Databricks Runtime 13.3 LTS 以降では、削除されたソース テーブルのマネージド シャロー クローンは、Unity Catalog がUNDROPをサポートする 7 日間は引き続き動作します。ソーステーブルがその期間内に復元されない場合、ガベージコレクション中にソースデータファイルが削除されると、シャロークローンは機能しなくなります。