カタログコミット
このページでは、カタログコミットを有効にする方法について説明します。カタログコミットとは、コミット調整をファイルシステムからUnity Catalogに移行し、カタログをテーブル状態の唯一のソースにするDelta Lakeテーブル機能です。
概要
従来の 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を使用して共有されます。
-
マテリアライズドビューでカタログコミットを有効にすることはできません。
-
シングルユーザー クラスターでは、カタログ コミットが有効になっているストリーミングテーブルにはアクセスできません。