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

Delta Lake 機能の互換性とプロトコル

この記事では、Delta Lake プロトコル、テーブル機能、および読み取りと書き込みに関する Delta Lake クライアントとの互換性の概要について説明します。

Delta テーブルのトランザクション ログには、プロトコルのバージョン管理情報が含まれています。Delta Lake テーブルの詳細の確認と詳細の説明を参照してください。

テーブルプロトコルは、読み取りと書き込みの互換性をどのように指定しますか?

すべての Delta テーブルには、テーブルの読み取りと書き込みに必要な一連の機能を示すプロトコル仕様があります。プロトコル仕様は、テーブルから読み取ったり、テーブルに対してテーブルを書き込んだりするアプリケーションによって使用され、テーブルがサポートするすべての機能を処理できるかどうかを判断します。テーブルのプロトコルでサポート対象としてリストされている機能の処理方法をアプリケーションが知らない場合、そのアプリケーションはそのテーブルの読み取りまたは書き込みができません。

Delta Lake に追加されたほとんどの新機能では、テーブル プロトコルのアップグレードが必要です。

次の表は、Delta Lake プロトコルの説明に使用される主要な用語の概要を示しています。

用語

説明

Delta Lake クライアント

Delta テーブルの読み取りまたは書き込みを行う任意のシステム。

読み取りプロトコル

Delta Lake クライアントがテーブルを読み取るために必要なサポートを指定します。

書き込みプロトコル

Delta Lake クライアントがテーブルに書き込むために必要なサポートを指定します。

minReaderVersion

リーダープロトコルのコンポーネント。有効な値は、 12、または 3です。

minWriterVersion

ライター プロトコルのコンポーネント。有効な値は 2 から 7 の整数です。

テーブル機能

プロトコルバージョンに代わるきめ細かな代替品です。テーブルの機能は、オプションで有効にできる Delta Lakeの機能にマップされます。

ライター機能

書き込みプロトコルに関連付けられたテーブル機能。

リーダー機能

読み取りプロトコルに関連付けられたテーブル機能。

書き込みプロトコルとライター機能は、ライタークライアントとの互換性にのみ影響するため、レガシーワークロードからテーブルへの読み取り専用アクセスは引き続きサポートされます。読み取りプロトコルと読み取り機能は、読み取りと書き込みの両方の互換性に影響します。

すべての Delta Lake 機能が相互に互換性があるわけではありません。

一部のテーブル機能は、一度有効にすると削除できません。Delta Lake テーブル機能の削除およびテーブル プロトコルのダウングレードを参照してください。

プロトコル互換性のためのテーブル機能

Databricks Runtime 12.2 LTS 以降では、Databricks は テーブル機能 を使用して、機能のサポートとリーダーとライターとの互換性を示します。テーブル機能では、詳細なフラグを使用して、特定のテーブルでサポートされている機能を指定します。テーブル機能は、Delta Lake プロトコルに新機能を導入することで、従来のプロトコルのバージョン管理スキームを置き換えます。

テーブル ライター機能は 、データの書き込み方法に影響を与える機能を示します。テーブルライター機能には minWriterVersion == 7 が必要です。ライター機能として実装された機能は、リーダー クライアントをブロックしません。

テーブルリーダー機能は 、データの読み取り方法に影響を与える機能を示します。すべてのテーブルリーダー機能は、テーブルライター機能でもあります。テーブルリーダー機能には、 minReaderVersion == 3 と minWriterVersion == 7 が必要です。クライアントは、読み取れないテーブルに書き込むことはできません。

テーブル機能を有効にすると、テーブルのプロトコルでサポートされているすべての機能が、それぞれのリストに readerFeatures または writerFeaturesとして表示されます。テーブルからフィーチャを削除する場合、テーブルはこの動作を削除して、可能な限り低いプロトコルに解決する場合があります。可能な限り低いプロトコルを参照してください。

整数ベースのプロトコルバージョンとレガシー互換性

すべてのテーブルには、 minReaderVersionminWriterVersionで表される整数ベースのプロトコル バージョンが含まれています。テーブル機能を使用して実装される機能は、これらのプロトコル バージョンに基づいて構築されていますが、多くのレガシ リーダーおよびライター クライアントでは、互換性を管理するためにプロトコル バージョンを引き続き使用します。Delta Lake は、最新の Delta クライアントとの互換性を最大限に維持するために、テーブル プロトコルを可能な限り低いバージョンに解決しようとします。可能な限り低いプロトコルを参照してください。

整数ベースのプロトコル バージョニング スキームでは、各バージョン番号に複数の機能がバンドルされ、バージョン番号間の機能が累積されます。つまり、Delta プロトコルに準拠するには、クライアントは、以前にリリースされたすべての機能を含む、特定のバージョンに存在するすべてのリーダーまたはライター機能のサポートを実装する必要があります。

注記

Databricks には、サポートされているすべての Databricks Runtime バージョンでテーブル機能に対する非破壊的な部分的なサポートが含まれています。OSS Delta クライアントは、特定の機能のサポートを実装する方法を選択します。

テーブルプロトコルはいつ変更されますか?

テーブルのプロトコルは、次の条件で変更されます。

  • 新しい機能を有効にすると、プロトコルがアップグレードされます。
  • テーブル機能がドロップされると、プロトコルはダウングレードされます。

テーブル機能を無効にしても、プロトコルはダウングレード されません 。テーブルプロトコルから完全に削除するには、フィーチャーを削除する必要があります。すべてのテーブル機能を削除できるわけではありません。Delta Lake テーブル機能の削除およびテーブル プロトコルのダウングレードを参照してください。

すべてのプロトコル変更操作は、すべての並列書き込みと競合します。

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

警告

ほとんどのプロトコル バージョンのアップグレードは元に戻せないため、プロトコル バージョンをアップグレードすると、既存の Delta Lake テーブル リーダー、ライター、またはその両方が中断される可能性があります。 Databricks では、Delta Lake の新機能にオプトインするなど、必要な場合にのみ特定のテーブルをアップグレードすることをお勧めします。 また、現在および将来のすべての本番運用ツールが、新しいプロトコルバージョンの Delta Lake テーブルをサポートしていることも確認する必要があります。

プロトコルのダウングレードは、一部の機能で使用できます。Delta Lake テーブル機能の削除およびテーブル プロトコルのダウングレードを参照してください。

テーブルプロトコルはいつアップグレードされますか?

テーブルで機能を有効にすると、テーブルプロトコルが自動的にアップグレードされます。一部の機能は、 CREATE または ALTER テーブルステートメントで使用される構文に基づいて自動的に有効になりますが、他の機能ではテーブルプロパティの設定を通じて明示的に有効にする必要があります。必要な機能をサポートするために、複数のテーブル機能を明示的に有効にする必要がある場合があります。また、機能を有効にすると、他のテーブル機能が自動的に有効になる場合もあります。使用している機能と構文については、 Databricksドキュメント を参照して、必要なテーブル機能を決定します。

リーダー機能を使用するには、読み取りプロトコルと書き込みプロトコルの両方をアップグレードする必要があります。ライター機能では、書き込みプロトコルのアップグレードのみが必要です。

たとえば、 CHECK 制約のサポートはライター機能であり、 CHECK 制約について認識し、それらを強制する必要があるのは、書き込みアプリケーションだけです。

これに対し、カラムマッピングでは、読み取りプロトコルと書き込みプロトコルの両方をアップグレードする必要があります。 データはテーブルに異なる方法で格納されるため、リーダー アプリケーションは、データを正しく読み取るために列のマッピングを理解する必要があります。

注記

Databricks では、 minReaderVersion テーブルと minWriterVersion テーブルのプロパティを変更しないことをお勧めします。これらのテーブル・プロパティを変更しても、プロトコルのアップグレードは妨げられません。これらの値を低い値に設定しても、テーブルはダウングレードされません。Delta Lake テーブル機能の削除およびテーブル プロトコルのダウングレードを参照してください。

可能な限り低いプロトコル

デフォルトでは、Delta Lake は、テーブルでサポートされているとマークされたすべての機能を表すために、可能な限り低いプロトコルを使用しようとします。

この動作は、テーブルプロトコル を下げる 結果になるだけであり、テーブルの minReaderVersion または minWriterVersion が低い値に変わる可能性があります。

DROP FEATURE コマンドを実行して、テーブル プロトコルでサポートされている機能のリストからテーブル機能を削除する必要があります。テーブル機能が自動的に削除されることはありません。

テーブルに存在するすべての Delta Lake 機能が下位のプロトコル バージョンで完全にサポートされている場合、テーブルは、リーダーとライターの互換性を示すためにテーブル機能を使用しないプロトコル バージョンに戻る可能性があります。このプロトコルのダウングレードが発生すると、テーブルは readerFeatures のいずれか、またはテーブルプロトコルから readerFeatureswriterFeatures の両方を削除する可能性があります。これにより、Delta Lake 機能が無効になるわけではなく、テーブル プロトコルでテーブル機能が必要でない場合にのみ発生します。

テーブル プロトコルを下位にするすべての変更により、リーダー クライアントとライター クライアントとの互換性が向上します。これは、リーダー クライアントとライター クライアントが、上位のプロトコル バージョンをサポートしている場合でも、下位のプロトコル バージョンを尊重する必要があるためです。

テーブル機能によって Delta Lake 機能の有効化方法が変わりますか?

Databricks を介してのみ Delta テーブルを操作する場合は、Databricks Runtime の最小要件を使用して、Delta Lake 機能のサポートを引き続き追跡できます。 Databricks では、テーブルで使用されるすべての機能がそのリリースでサポートされている限り、すべての Databricks Runtime LTS リリースでテーブル機能にアップグレードされた Delta テーブルの読み取りがサポートされています。

他のシステムを使用して Delta テーブルから読み取りと書き込みを行う場合は、アップグレードされたプロトコル バージョンをシステムが理解できないリスクがあるため、テーブル機能が互換性にどのように影響するかを考慮する必要があります。

important

テーブル機能は、ライター バージョン 7 とリーダー バージョン 3 の Delta Lake 形式に導入されました。Databricks は、サポートされているすべての Databricks Runtime LTS バージョンにコードをバックポートして、テーブル機能のサポートを追加しましたが、 その Databricks Runtime で既にサポートされている機能のみを対象としています 。 つまり、テーブル機能を使用してジェネレーテッドカラムを有効にし、Databricks Runtime 9.1 LTS でこれらのテーブルを引き続き操作することはできますが、ID 列が有効になっているテーブル (Databricks Runtime 10.4 LTS が必要) は、その Databricks Runtime ではまだサポートされていません。

Databricks は Delta Lake 機能の互換性をどのように管理していますか?

Databricks では、Databricks Runtime リリースで Delta Lake の上に構築される新しい Delta Lake 機能と最適化のサポートが導入されています。Delta Lake の機能を活用する Databricks の最適化では、互換性のために OSS Delta Lake で使用されるプロトコルが尊重されます。多くの Databricks 最適化では、テーブルで Delta Lake 機能を有効にする必要があり、DLT などの一部の Databricks 製品は多くのテーブル機能に依存しています。

  • 下位の Databricks Runtime バージョンによって書き込まれたすべてのテーブルは、上位の Databricks Runtime バージョンで完全な読み取りと書き込みをサポートします。
  • 上位の Databricks Runtime バージョンによって記述されたテーブルでは、下位の Databricks Runtime バージョンでサポートされていないテーブル機能が使用される場合があります。
    • 一部の機能では、有効なテーブル機能に関連するすべての最適化を完全に適用せずに、下位の Databricks Runtime バージョンからの書き込みが許可される場合があります。

下位の Databricks Runtime バージョンにバックポートされたサポートを持つテーブル機能を使用する場合、特定の Databricks Runtime バージョンで実行される一部の操作が、対応する OSS Delta バージョンでは実行されない場合があります。開発サイクルまたはデータアーキテクチャに OSS Delta Lakeが含まれている場合は、本番運用テーブルでテーブル機能を有効にする前に、必ず OSS Delta クライアントで互換性をテストする必要があります。

Delta Lake の機能と必要な Databricks Runtime のバージョン

機能はテーブルごとに有効になります。次の表に、示された機能を完全にサポートしている最も低い Databricks Runtime バージョンを示します。フル サポートとは、読み取りと書き込みの両方で一般に利用可能なすべての機能がサポートされていることを意味します。

機能

Databricks Runtime バージョン以降が必要です

ドキュメント

CHECK 制約

サポートされているすべての Databricks Runtime バージョン

Databricks で CHECK 制約を設定する

チェンジデータフィード

サポートされているすべての Databricks Runtime バージョン

DatabricksでDelta Lakeのチェンジデータフィードを使用する

ジェネレーテッドカラム

サポートされているすべての Databricks Runtime バージョン

Delta Lakeのジェネレーテッドカラム

列マッピング

サポートされているすべての Databricks Runtime バージョン

Delta Lake列マッピングを使用した列の名前変更と削除

ID 列

サポートされているすべての Databricks Runtime バージョン

Delta Lake で ID 列を使用する

テーブルの機能

Databricks Runtime 12.2 LTS

プロトコル互換性のためのテーブル機能

削除ベクトル

Databricks Runtime 12.2 LTS

削除ベクトルとは何ですか?

TimestampNTZ

Databricks Runtime 13.3 LTS

TIMESTAMP_NTZ タイプ

UniForm

Databricks Runtime 13.3 LTS

Iceberg クライアントを使用した Delta テーブルの読み取り

リキッドクラスタリング

Databricks Runtime 13.3 LTS

Deltaテーブルにリキッドクラスタリング使用する

行追跡

Databricks Runtime 14.3 LTS

Delta テーブルの行追跡を使用する

型拡張

Databricks Runtime 15.4 LTS

型拡張

バリエーション

Databricks Runtime 15.4 LTS

Delta Lake でのバリアントのサポート

照合 順序

Databricks Runtime 16.1

Delta Lake の照合のサポート

保護されたチェックポイント

Databricks Runtime 16.3

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

Databricks Runtimeリリースノートのバージョンと互換性を参照してください。

注記

DLT と Databricks SQL は、新機能をサポートするために、定期的なリリースでランタイム環境を自動的にアップグレードします。DLT リリースノートとリリースアップグレードプロセスおよびDatabricks SQLリリースノートを参照してください。

プロトコルバージョン別の機能

OSS Delta Lake プロトコルはテーブル機能で標準化されていますが、一部のリーダーおよびライター クライアントはテーブル機能のサポートを実装しておらず、従来の minWriterVersion プロトコルと minReaderVersion プロトコルを引き続き使用しています。

一部のクライアントは、レガシ プロトコルのバージョン管理を使用する機能を含め、すべての Delta Lake 機能をサポートしていない場合があります。Delta Lake クライアントのドキュメントを参照して、機能のサポートを確認してください。本番運用テーブルで新機能を有効にする前に、必ず互換性をテストしてください。

次の表は、Delta Lake 機能に必要なリーダーとライターの最小プロトコル バージョンと、テーブル機能を書き込みのみに考慮する必要があるか、読み取りと書き込みの両方に考慮する必要があるかを示しています。

注記

Databricks Runtime の互換性のみに関心がある場合は、「 Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。

機能

minWriterVersion

minReaderVersion

テーブル機能

基本機能

2

1

作家

CHECK 制約

3

1

作家

チェンジデータフィード

4

1

作家

ジェネレーテッドカラム

4

1

作家

列マッピング

5

2

リーダーとライター

ID 列

6

1

作家

行追跡

7

1

作家

削除ベクトル

7

3

リーダーとライター

TimestampNTZ

7

3

リーダーとライター

リキッドクラスタリング

7

3

リーダーとライター

Iceberg リーダー (UniForm)

7

2

ライター (1)

型拡張

7

3

リーダーとライター

バリエーション

7

3

リーダーとライター

照合 順序

7

3

リーダーとライター

保護されたチェックポイント

7

1

作家

(1): 列マッピングが有効になっている必要があります。