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

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

Delta Lakeは、Linux Foundationのガバナンス下にある独立したオープンソースプロジェクトです。 Databricks では、Databricks Runtime リリースで Delta Lake の上に構築される新しい Delta Lake 機能と最適化のサポートが導入されています。

Delta Lake の機能を活用する Databricks の最適化では、互換性のために OSS Delta Lake で使用されるプロトコルが尊重されます。

多くの Databricks 最適化では、テーブルで Delta Lake 機能を有効にする必要があります。 Delta Lake の機能には常に下位互換性があるため、下位の Databricks Runtime バージョンによって書き込まれたテーブルは、常に上位の Databricks Runtime バージョンで読み書きできます。 一部の機能を有効にすると、下位の Databricks Runtime バージョンで実行されているワークロードとの上位互換性が損なわれます。 上位互換性を損なう機能については、アップグレードされたテーブルを参照するすべてのワークロードを更新して、準拠している Databricks Runtime バージョンを使用する必要があります。

注記

Databricks では、 deletionVectorsv2CheckpointcolumnMappingtypeWidening-previewcollations-preview をドロップできます。 ドロップDeltaテーブル機能を参照してください。

important

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

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

Delta Lake のどの機能に Databricks Runtime のアップグレードが必要ですか?

次の Delta Lake 機能は、上位互換性を破ります。 機能はテーブルごとに有効になります。 次の表に、Databricks で引き続きサポートされている最も低い Databricks Runtime バージョンを示します。

機能

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

ドキュメント

CHECK 制約

Databricks Runtime 9.1 LTS

Databricks で CHECK 制約を設定する

チェンジデータフィード

Databricks Runtime 9.1 LTS

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

生成済み列

Databricks Runtime 9.1 LTS

Delta Lake で生成された列

列マッピング

Databricks Runtime 10.4 LTS

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

ID 列

Databricks Runtime 10.4 LTS

Delta Lake で ID 列を使用する

tableFeatures

Databricks Runtime 12.2 LTS

テーブル機能とは?

削除ベクトル

Databricks Runtime 12.2 LTS

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

タイムスタンプNTZ

Databricks Runtime 13.3 LTS

TIMESTAMP_NTZ タイプ

UniForm

Databricks Runtime 13.3 LTS

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

リキッドクラスタリング

Databricks Runtime 13.3 LTS

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

行追跡

Databricks Runtime 14.1

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

型拡張

Databricks Runtime 15.2

型拡張

バリエーション

Databricks Runtime 15.3

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

照合 順序

Databricks Runtime 16.1

Delta Lake の照合のサポート

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

注記

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

テーブルプロトコル仕様とは何ですか?

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

プロトコル仕様は、 読み取りプロトコルと書き込みプロトコルの2つのコンポーネントに分かれています。

警告

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

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

読み取りプロトコル

読み取りプロトコルには、テーブルがサポートし、アプリケーションがテーブルを正しく読み取るために理解する必要のあるすべての機能がリストされています。 テーブルの読み取りプロトコルをアップグレードするには、すべてのリーダーアプリケーションが追加機能をサポートしている必要があります。

important

Delta テーブルに書き込むすべてのアプリケーションは、テーブルのスナップショットを構築できる必要があります。 そのため、Delta テーブルに書き込むワークロードは、リーダーとライターの両方のプロトコル要件を尊重する必要があります。

Databricks のワークロードでサポートされていないプロトコルに遭遇した場合は、そのプロトコルをサポートする上位の Databricks Runtime にアップグレードする必要があります。

書き込みプロトコル

書き込みプロトコルには、テーブルがサポートするすべての機能と、テーブルに正しく書き込むためにアプリケーションが理解する必要があるすべての機能がリストされています。 テーブルの書き込みプロトコルをアップグレードするには、すべてのライター・アプリケーションが追加機能をサポートしている必要があります。 読み取りプロトコルもアップグレードされない限り、読み取り専用アプリケーションには影響しません。

どのプロトコルをアップグレードする必要がありますか?

一部の機能では、読み取りプロトコルと書き込みプロトコルの両方をアップグレードする必要があります。 その他の機能では、書き込みプロトコルをアップグレードするだけで済みます。

例として、CHECK 制約のサポートは書き込みプロトコル機能です。CHECK 制約について知って適用する必要があるのは、書き込みアプリケーションだけです。

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

リーダーとライターの最低バージョン

注記

列マッピングを有効にする場合は、テーブル プロトコル バージョンを明示的にアップグレードする必要があります。

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

テーブル機能とは?

Databricks Runtime 12.2 LTS 以降では、Delta Lake テーブル機能によって、特定のテーブルでサポートされている機能を指定する詳細なフラグが導入されます。 Databricks Runtime 11.3 LTS 以下では、Delta Lake の機能は プロトコル バージョン と呼ばれるバンドルで有効になっていました。 テーブル機能は、プロトコル バージョンの後継であり、Delta Lake の読み取りと書き込みを行うクライアントの柔軟性を向上させることを目的として設計されています。 「プロトコル バージョンとは」を参照してください。

注記

テーブル機能には、プロトコルバージョン要件があります。 プロトコルバージョン別の機能を参照してください。

Delta テーブル フィーチャは、テーブルが特定のフィーチャをサポートしていることを示すマーカーです。 すべての機能は、書き込みプロトコル機能(書き込みプロトコルをアップグレードするだけ)または読み取り/書き込みプロトコル機能(読み取りプロトコルと書き込みプロトコルの両方がアップグレードされて機能が有効になる)のいずれかです。

Delta Lake でサポートされているテーブル機能の詳細については、 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 Runtime 11.3 LTS 以下では、テーブル機能を個別に有効にすることはできません。 プロトコル バージョンには、機能のグループがバンドルされています。

Delta テーブルでは、読み取りプロトコルと書き込みプロトコルに個別のプロトコル バージョンが指定されています。 Delta テーブルのトランザクション ログには、Delta Lake の進化をサポートするプロトコルのバージョン管理情報が含まれています。 「Delta Lake テーブルの詳細の確認と詳細の説明」を参照してください。

プロトコルバージョンには、以前のプロトコルのすべての機能がバンドルされています。 プロトコルバージョン別の機能を参照してください。

注記

ライター バージョン 7 とリーダー バージョン 3 以降、Delta Lake ではテーブル機能の概念が導入されました。 テーブル機能を使用して、データ エコシステム内の他のクライアントでサポートされている機能のみを有効にすることを選択できるようになりました。 テーブル機能とはを参照してください。

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

次の表は、Delta Lake の機能に必要な最小プロトコル バージョンを示しています。

注記

Databricks Runtime の互換性のみに関心がある場合は、「 Databricks Runtime のアップグレードが必要な Delta Lake 機能」を参照してください。 Delta Sharing では、 minReaderVersion = 1を必要とする機能を持つテーブルの読み取りのみがサポートされています。

機能

minWriterVersion

minReaderVersion

ドキュメント

基本機能

2

1

Delta Lakeとは?

CHECK 制約

3

1

Databricks で CHECK 制約を設定する

チェンジデータフィード

4

1

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

生成済み列

4

1

Delta Lake で生成された列

列マッピング

5

2

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

ID 列

6

2

Delta Lake で ID 列を使用する

テーブルの特徴は読めます

7

1

テーブル機能とは?

テーブルの特徴の書き込み

7

3

テーブル機能とは?

行追跡

7

1

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

削除ベクトル

7

3

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

タイムスタンプNTZ

7

3

TIMESTAMP_NTZ タイプ

リキッドクラスタリング

7

3

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

UniForm

7

2

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

型拡張

7

3

型拡張

バリエーション

7

3

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

照合 順序

7

3

Delta Lake の照合のサポート