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-previewをドロップできます。 Drop Delta テーブルの機能を参照してください。

重要

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

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

どの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 列の使用

テーブル機能

Databricks Runtime 12.2 LTS

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

削除ベクトル

Databricks Runtime 12.2 LTS

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

タイムスタンプNTZ

Databricks Runtime 13.3 LTS

TIMESTAMP_NTZタイプ

UniForm

Databricks Runtime 13.3 LTS

UniForm を使用して 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 バージョンと互換性を参照してください。

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

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

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

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

警告

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

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

読み取りプロトコル

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

重要

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 テーブルから読み取りと書き込みを行う場合は、アップグレードされたプロトコルのバージョンをシステムが理解できないリスクがあるため、テーブル機能が互換性に与える影響を考慮する必要があります。

重要

テーブル機能は、ライター バージョン 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

UniForm を使用して Iceberg クライアントで Delta テーブルを読み取る

拡張型

7

3

拡張型

バリエーション

7

3

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