カタログコミット
カタログコミットは、コミット調整をファイルシステムからUnity Catalogに移行し、カタログをDelta LakeとApache Icebergテーブルの状態に対する唯一の信頼できるソースとします。これにより、複数テーブルにわたるトランザクション、高速なクエリ計画、およびすべてのテーブル操作に対するガバナンスされたアクセスが可能になります。
従来の Delta Lake トランザクションは、個々のテーブルレベルでコミットを調整します。各テーブルは、独自のトランザクションログと競合検出を個別に管理します。コミット調整をカタログレベルに移動することで、組織はUnity Catalog を介してレイクハウスへのすべてのアクセスを一貫して管理できます。これにより、Unity Catalog は、Delta Lake の ACID 保証を維持しながら、単一のトランザクション境界内で複数のテーブルにわたるコミットを調整することもできます。
メリット
カタログコミットは以下の機能を提供します。
- 複数のテーブルにまたがるトランザクション :複数のSQLステートメントを複数のテーブル間で単一のアトミックコミットとして実行します。すべての変更は同時に成功するか、同時に失敗します。「トランザクション」を参照してください。
プレビュー
Unity CatalogマネージドDeltaテーブルに書き込むトランザクションはパブリックプレビューです。
Unity Catalog で管理される Iceberg テーブルに書き込みを行うトランザクションは、プライベートプレビューで利用可能です。このプレビューに参加するには、マネージド Iceberg テーブル プレビュー登録フォームを送信してください。
-
ガバナンスされたアクセス :読み取りと書き込みはUnity Catalogを通じて調整されるため、エンジンは最新のコミットされた状態を認識し、ガバナンスポリシーが適用されます。
-
クエリ計画と書き込みの高速化: Unity Catalogは、テーブルにアクセスすると、Deltaクライアントにテーブルレベルのメタデータを直接通知し、クラウドストレージをスキップして、メタデータ待機時間の主要な原因を解消します。
-
適用可能な制約 :Unity Catalog は、スキーマおよび制約の変更を検証または拒否します。これにより、データ完全性やダウンストリームワークロードを破損する可能性のある、互換性のない更新を防ぎます。
-
外部アクセス:外部エンジンからUnity Catalogマネージドテーブルに安全に書き込みます。Unity Catalog はコミットを調整して、破損と同時実行の競合を防ぎます。外部システムを使用した Databricks データへのアクセスを参照してください。
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
要件
- テーブルはUnity Catalogマネージドテーブル(DeltaまたはIceberg)でなければなりません。
- カタログコミットが有効になっているテーブルを読み取ったり、書き込んだり、作成したりするには、Databricks Runtime 16.4 以降が必要です。
- 既存のテーブルに対するカタログコミットの有効化または無効化には、Databricks Runtime 18.0 以降が必要です。
カタログコミットを有効にする
新規テーブルおよび既存のテーブルでカタログコミットを有効にできます。
新しいテーブルのカタログコミットを有効にする
テーブル作成時には、delta.feature.catalogManaged テーブルプロパティを使用します。
CREATE TABLE sales_data (
sale_id BIGINT,
amount DECIMAL(10,2),
sale_date DATE
)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
既存のテーブルのカタログコミットを有効にする
ALTER TABLEを使用して、既存のテーブルにカタログコミットを追加します。
ALTER TABLE sales_data SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
既存のテーブルでカタログコミットを有効にすると、テーブルの状態がカタログと同期されます。この操作は、書き込み操作が大量に行われるテーブルでは、数分かかることがあります。
カタログコミットが有効になっているか確認します。
テーブルにカタログコミットが有効になっているかを確認するには、
DESCRIBE DETAIL sales_data;
有効にすると、catalogManagedがtableFeatures列に表示されます。
カタログコミットをオフにする
Databricks Runtime 18.0以降を使用して、カタログコミットをオフにできます。Delta Lake テーブル機能の削除およびテーブルプロトコルのダウングレードを参照してください。
ALTER または DROP ステートメントの実行中にアップグレードまたはダウングレード操作をキャンセルしないでください。中断が発生すると、テーブルが部分的にアップグレードまたはダウングレードされた状態のままになり、それ以降のすべての読み取りと書き込みがロックされる可能性があります。元に戻すには、キャンセルするのではなく適切なコマンドを再度実行してください。テーブルがロックされた場合は、Databricksサポートにお問い合わせください。
制限事項:
-
既存のテーブルでカタログコミットをオンまたはオフにすることは、
CREATE OR REPLACE TABLEまたはREPLACE TABLEを使用してはできません。テーブルの作成時にそれを有効にするには、delta.feature.catalogManagedプロパティと共にCREATE TABLEを使用します。また、既存のテーブルで有効または無効にするには、ALTER TABLEを使用します。 -
ストリーミングテーブルでカタログコミットを使用するには、Databricks アカウントチームにお問い合わせいただき、パブリックプレビューへのアクセスをリクエストしてください。
-
カタログコミットは、ストリーミングテーブルにおける外部データアクセスと互換性がありません。カタログコミットを使用するには、まず外部アクセスを無効にする必要があります。ストリーミングテーブルとマテリアライズドビューへの外部データアクセスを有効にする をご覧ください。
-
カタログコミットが有効になっているテーブルは、OpenSharingを通じて、クラウドトークンの代わりに事前署名付きURLを使用して共有されます。
-
マテリアライズドビューでカタログコミットを有効にすることはできません。
-
シングルユーザー クラスターでは、カタログ コミットが有効になっているストリーミングテーブルにはアクセスできません。