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

Delta Lake テーブル機能を削除し、テーブル プロトコルをダウングレードする

この記事では、Delta Lake テーブル機能を削除し、プロトコル バージョンをダウングレードする方法について説明します。

この機能は、Databricks Runtime 16.3 以降で使用できます。すべての Delta テーブル機能を削除できるわけではありません。ドロップできるDeltaテーブル機能を参照してください。

DROP FEATURE は、以前の Databricks Runtime バージョン、Delta Sharing、または外部の Delta Lake リーダーまたはライター クライアントとの互換性をサポートする場合にのみ使用する必要があります。

注記

DROP FEATURE のレガシ サポートは、Databricks Runtime 14.3 LTS 以降で使用できます。Databricks では、すべての DROP FEATURE コマンドに Databricks Runtime 16.3 以降を使用することをお勧めします。これにより、従来の動作が置き換えられます。従来の機能のドキュメントについては、Delta テーブル機能のドロップ (レガシー)」を参照してください。

Delta Lake 機能のドロップ

テーブル機能を削除するには、次の構文を使用します。

SQL
ALTER TABLE <table-name> DROP FEATURE <feature-name>

Databricks Runtime 16.3 以降を使用し、ターゲットの Delta テーブルに対する MODIFY 権限を持っている必要があります。DROP FEATURE コマンドごとにドロップできるテーブル フィーチャは 1 つだけです。

詳細については、 ALTER TABLE を参照してください。

important

すべての DROP FEATURE 操作がすべての並列書き込みと競合します。

ストリーミング読み取りは、テーブルのメタデータを変更するコミットを検出すると失敗します。 ストリームを続行する場合は、ストリームを再起動する必要があります。 推奨される方法については、 構造化ストリーミングの本番運用に関する考慮事項を参照してください。

テーブル機能が削除されるとどうなりますか?

テーブル機能を削除すると、Delta Lake はテーブルへの変更をアトミックにコミットして、次のことを実現します。

  • テーブル機能を使用するテーブルプロパティを無効にします。
  • 現在のバージョンでテーブルをバッキングするデータファイルから、テーブル機能のトレースをすべて削除します。
  • リーダー・クライアントがテーブル・ヒストリーを正しく解釈できるように、保護されたチェックポイントのセットを作成します。
  • ライター テーブル機能 checkpointProtection をテーブル プロトコルに追加します。
  • テーブル・プロトコルを、残りのすべてのテーブル機能をサポートする最も低いリーダーおよびライター・バージョンにダウングレードします。可能な限り低いプロトコルを参照してください。

checkpointProtectionテーブル機能とは何ですか?

機能を削除すると、Delta Lake は、プロトコルのダウングレードを尊重するために、テーブルの履歴内のデータとメタデータを保護されたチェックポイントとして書き換えます。ダウングレード後、テーブルは常により多くのリーダー クライアントで読み取れるようにする必要があります。これは、テーブルのプロトコルが、テーブルを読み取るためにドロップされた機能のサポートが不要になったことを反映しているためです。保護されたチェックポイントと checkpointProtection 機能は、次のことを実現します。

  • ドロップされたテーブル機能を理解しているリーダークライアントは、使用可能なすべてのテーブル履歴にアクセスできます。
  • ドロップされたテーブル機能をサポートしていないリーダークライアントは、プロトコルのダウングレードバージョンからテーブル履歴を読み取るだけで済みます。
  • ライター クライアントは、プロトコルのダウングレード前にチェックポイントを書き換えません。
  • テーブルのメンテナンス操作は、プロトコルのダウングレードチェックポイントを保護としてマークする checkpointProtectionによって設定された要件に従います。

DROP FEATURE コマンドで削除できるテーブル機能は 1 つだけですが、テーブル履歴には複数の保護されたチェックポイントと削除された機能を含めることができます。

すべての Databricks Runtime バージョンでは checkpointProtection テーブル機能がサポートされているため、このテーブル機能は Databricks での読み取りや書き込みをブロックしません。

テーブル機能 checkpointProtection は、OSS Delta Lake クライアントからの読み取り専用アクセスをブロックしないでください。テーブルを完全にダウングレードし、 checkpointProtection テーブル機能を削除するには、 TRUNCATE HISTORYを使用する必要があります。Databricks では、 checkpointProtectionをサポートしていない外部 Delta クライアントを持つテーブルに書き込む必要がある場合にのみ、このパターンを使用することをお勧めします。レガシークライアントのテーブルプロトコルを完全にダウングレードするを参照してください。

どの Delta テーブル機能を削除できますか?

次の Delta テーブル機能を削除できます。

他の Delta テーブル機能は削除できません。

important

一部の Delta Lake 機能では、複数のテーブル機能が有効になります。 一部のテーブル機能は他のテーブル機能に依存しており、従属テーブル機能のドロップをブロックする場合があります。 一部のテーブル機能は削除できないため、一部の Delta Lake 機能の有効化をロールバックできません。

Databricks 本番運用データのリーダーまたはライタープロトコルをアップグレードする機能を有効にする前に、新しい機能との互換性について、依存するワークロードとシステムを常にテストすることをお勧めします。

レガシークライアントのテーブルプロトコルを完全にダウングレード

外部の Delta Lake クライアントとの統合で、 checkpointProtection テーブル機能をサポートしていない書き込みが必要な場合は、 TRUNCATE HISTORY を使用して、無効になっているテーブル機能のトレースをすべて完全に削除し、テーブル プロトコルを完全にダウングレードする必要があります。

Databricks では、TRUNCATE HISTORYに進む前に、DROP FEATURE のデフォルトの動作をテストすることをお勧めします。TRUNCATE HISTORYを実行すると、24 時間を超えるすべてのテーブル履歴が削除されます。

完全なテーブルのダウングレードは、少なくとも 24 時間間隔で行われる必要がある 2 つのステップで行われます。

ステップ 1: テーブル機能を削除する準備をする

最初のステージでは、ユーザーはテーブル機能を削除する準備をします。 このステージで何が起こるかを次に示します。

  1. ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY コマンドを実行します。
  2. テーブル機能を明示的に有効にするテーブル プロパティには、機能を無効にするように設定された値があります。
  3. 削除された機能に関連付けられた動作を制御するテーブル プロパティには、機能が導入される前にオプションがデフォルト値に設定されています。
  4. 必要に応じて、更新されたテーブルのプロパティを考慮して、データファイルとメタデータファイルが書き換えられます。
  5. コマンドの実行が終了し、機能の削除を続行するには 24 時間待つ必要があることをユーザーに通知するエラー メッセージが返されます。

最初に機能を無効にした後、プロトコルのダウングレードを完了する前にターゲットテーブルへの書き込みを続行できますが、削除するテーブル機能を使用することはできません。

注記

テーブルをこの状態のままにすると、テーブルに対する操作はテーブル機能を使用しませんが、プロトコルは引き続きテーブル機能をサポートします。 最後のダウングレード手順を完了するまで、テーブル機能を理解していない Delta クライアントはテーブルを読み取ることができません。

ステップ 2: プロトコルをダウングレードし、テーブル機能を削除する

機能に関連付けられているすべてのトランザクション履歴を完全に削除し、プロトコルをダウングレードするには:

  1. 少なくとも 24 時間が経過したら、 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY コマンドを実行します。
  2. クライアントは、指定された保有期間のしきい値内のトランザクションがテーブル機能を使用しないことを確認し、テーブル履歴をそのしきい値に切り捨てます。
  3. テーブル機能は、プロトコルのダウングレード中に削除されます。
  4. テーブルに存在するテーブル機能を下位のプロトコル バージョンで表すことができる場合、テーブルの minReaderVersionminWriterVersion は、Delta テーブルで使用されている残りの機能をサポートする最も低いバージョンにダウングレードされます。
important

ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORYを実行すると、24 時間以上経過したすべてのトランザクション ログ データが削除されます。このコマンドを使用してテーブルプロトコルをダウングレードした後は、テーブルの履歴やタイムトラベルにアクセスできなくなります。

Delta Lake 機能の互換性とプロトコルを参照してください。