メインコンテンツまでスキップ

カタログ管理コミット

この記事では、トランザクションの調整をファイルシステムから Unity Catalog に移行し、カタログをテーブル状態の唯一の信頼できるソースにする Delta テーブル機能であるカタログ管理コミットを有効にする方法について説明します。

概要

従来の Delta Lake トランザクションは、個々のテーブル レベルでコミットを調整します。各テーブルは独自のトランザクション ログと競合検出を個別に管理します。カタログ管理コミットは、この調整をカタログ レベルに移動します。これにより、組織は Unity Catalog を通じてレイクハウスへのすべてのアクセスを一貫して管理し、管理されていないパスベースのアクセスを防ぐことができます。また、Unity Catalog は Delta Lake の ACID 保証を維持しながら、単一のトランザクション境界内で複数のテーブルにわたるコミットを調整することもできます。

要件

  • テーブルはUnity Catalogマネージドテーブルである必要があります。
  • カタログ管理コミットが有効になっているテーブルの読み取り、書き込み、または作成には、Databricks Runtime 16.4 以降が必要です。
  • 既存のテーブルでカタログ管理コミットを有効または無効にするには、Databricks Runtime 18.0 以上が必要です。

カタログ管理コミットを有効にする

新しいテーブルと既存のテーブルでカタログ管理コミットを有効にすることができます。

新しいテーブルに対してカタログ管理コミットを有効にする

テーブルを作成するときは、 delta.feature.catalogManagedテーブル プロパティを使用します。

SQL
CREATE TABLE sales_data (
sale_id BIGINT,
amount DECIMAL(10,2),
sale_date DATE
)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');

既存のテーブルに対してカタログ管理コミットを有効にする

既存のテーブルにカタログ管理コミットを追加するには、 ALTER TABLEを使用します。

SQL
ALTER TABLE sales_data SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
重要

カタログ管理コミットを有効にするには、テーブルの状態をカタログと同期するためのメタデータのみのトランザクションが必要です。このトランザクションは、大きなテーブルの場合、数分かかることがあります。同期中は並列書き込みが許可されますが、競合が自動的に解決できない場合、 Databricks書き込みを再試行またはキャンセルすることがあります。

カタログ管理コミットが有効になっているかどうかを確認する

テーブルでカタログ管理コミットが有効になっているかどうかを確認するには:

SQL
DESCRIBE DETAIL sales_data;

有効にすると、 tableFeatures列にcatalogManagedが表示されます。

カタログ管理コミットを無効にする

Databricks Runtime 18.0 以降を使用して、カタログ管理コミットを無効にすることができます。「Delta Lake テーブル機能の削除とテーブル プロトコルのダウングレード」を参照してください。

警告

ALTERまたはDROPステートメントの実行中は、アップグレードまたはダウングレード操作をキャンセルしないでください。中断により、テーブルが部分的にアップグレードまたはダウングレードされた状態になり、将来のすべての読み取りと書き込みがロックされる可能性があります。元に戻すには、キャンセルするのではなく、適切なコマンドを再度実行します。テーブルがロックされた場合は、Databricks サポートにお問い合わせください。

制限事項

次のステップ