Delta Lake テーブル プロトコルでは、クライアントがテーブルの読み取りまたは書き込みをサポートする必要がある機能を指定します。 このページでは、プロトコルのバージョン、表の機能、互換性の要件、およびプロトコルのアップグレードAzure Databricks管理する方法について説明します。 テーブルの 詳細の確認と詳細の説明も参照してください。
テーブル プロトコルと互換性
すべての Delta Lake テーブルには、テーブルの読み取りと書き込みに必要な一連の機能を示すプロトコル仕様があります。 アプリケーションでは、プロトコル仕様を使用して、テーブルで使用されるすべての機能をサポートできるかどうかを判断します。 アプリケーションがテーブルの現在のプロトコルの機能をサポートできない場合、そのアプリケーションはそのテーブルの読み取りまたは書き込みを行うことはできません。
ほとんどの新機能 Delta Lake では、テーブル プロトコルをアップグレードする必要があります。
次の表に、Delta Lake プロトコルについて説明する主な用語を示します。
| 任期 | Description |
|---|---|
| Delta Lake クライアント | Delta Lake テーブルの読み取りまたは書き込みを行うシステム。 |
| 読み取りプロトコル | Delta Lake クライアントがテーブルを読み取るために必要なサポートを指定します。 |
| 書き込みプロトコル | Delta Lake クライアントがテーブルに書き込むのに必要なサポートを指定します。 |
minReaderVersion |
リーダー プロトコルの整数値。 有効な値は、1、2、または 3です。 |
minWriterVersion |
ライター プロトコルの整数値。 有効な値は、27整数です。 |
| テーブル機能 |
minReaderVersion = 3、minWriterVersion = 7 の場合に使用されるプロトコル バージョンに代わる詳細な代替手段。 テーブル機能は、オプションで有効化されるDelta Lake機能にマップされます。 |
| ライター機能 | 書き込みクライアントのサポートを必要とするが、読み取り専用アクセスをブロックしないテーブル機能。 |
| 閲覧者機能 | 読み取りと書き込みの両方のクライアント サポートを必要とするテーブル機能。 プロトコルのバージョンと表の機能を参照してください。 |
書き込みプロトコルとライター機能はライター クライアントとの互換性にのみ影響し、レガシ ワークロードからテーブルへの読み取り専用アクセスを許可します。
すべての Delta Lake 機能が互いに互換性があるわけではありません。
一部のテーブル機能は、一度有効にすると削除できません。 Delta Lake テーブル機能の削除とテーブル プロトコルのダウングレードに関する記事を参照してください。
プロトコルのバージョンと表の機能
すべての Delta Lake テーブルには、 minReaderVersion と minWriterVersionで表される整数ベースのプロトコル バージョンが含まれています。 各バージョンは複数の機能をバンドルし、機能はバージョン間で累積されます。 Delta Lake プロトコルに準拠するには、クライアントは、以前にリリースされたすべての機能を含め、特定のバージョンのすべての機能のサポートを実装する必要があります。
Databricks Runtime 12.2 LTS 以降では、 テーブル機能 によって整数ベースのプロトコルが、テーブルで使用される機能を示す詳細なフラグに置き換えられます。 これにより、クライアントとテーブル間の互換性チェックをきめ細かく行うことができます。
テーブル ライター機能 は、データの書き込み方法に影響します。
minWriterVersion=7が必要ですが、リーダー クライアントはブロックされません。
テーブル リーダー機能は、 データの読み取り方法に影響します。 すべてのリーダー機能もライター機能であり、 minReaderVersion=3 と minWriterVersion=7が必要です。 クライアントは、読み取ることができないテーブルに書き込むことはありません。
テーブル機能を有効にすると、プロトコルに readerFeatures または writerFeaturesとして表示されます。 Delta Lake は、テーブル プロトコルを、すべての有効な機能をサポートする最小バージョンに解決します。 可能 な限り低いプロトコルを参照してください。
Note
Azure Databricksには、サポートされているすべての Databricks Runtime バージョンのテーブル機能に対する破壊的な部分的なサポートが含まれています。 OSS Delta Lake クライアントは、特定の機能のサポートを実装する方法を選択します。
プロトコルの変更
テーブルのプロトコルは、次の条件で変更されます。
- 新しい機能が有効になっている場合、プロトコルはアップグレードされます。
- テーブル機能が削除されると、プロトコルがダウングレードされます。
テーブル機能をオフにしても、プロトコルのダウングレードは行われません。 この機能をプロトコルから完全に削除するには、この機能を削除する必要があります。 すべてのテーブル フィーチャを削除できるわけではありません。 Delta Lake テーブル機能の削除とテーブル プロトコルのダウングレードに関する記事を参照してください。
すべてのプロトコル変更操作は、同時書き込みと競合します。 ストリーミング読み取りは、テーブルメタデータを変更するコミットに遭遇すると失敗します。 続行するには、影響を受けるストリームを再起動します。 推奨される方法については、「 構造化ストリーミングの運用に関する考慮事項」を参照してください。
Note
Databricks では、 minReaderVersion と minWriterVersion テーブルのプロパティを直接変更することはお勧めしません。 これらのプロパティを変更してもプロトコルのアップグレードが妨げられることはありません。また、低い値に設定してもテーブルはダウングレードされません。
Delta Lake テーブル機能の削除とテーブル プロトコルのダウングレードに関する記事を参照してください。
プロトコルのアップグレードをトリガーする内容
機能を有効にすると、テーブル プロトコルが自動的にアップグレードされます。
プロトコルのアップグレードは、次の方法でトリガーされます。
-
CREATEステートメントまたはALTERステートメントで使用される構文に基づいて自動的に有効にします。 たとえば、CLUSTER BYステートメントでCREATE TABLEすると、液体クラスタリングが自動的に有効になり、GENERATED ALWAYS ASによって生成された列が有効になります。 - テーブルのプロパティを使用して明示的に有効にします。 たとえば、
'delta.enableDeletionVectors' = true設定すると、削除ベクトルが有効になります。 - 機能を有効にすると、必要な機能が自動的に有効になる場合があります。 たとえば、UniForm を自動的に有効にすると列マッピングが有効になり、液体クラスタリングを有効にするとチェックポイント V2 が自動的に有効になります。 関連するAzure Databricksドキュメントを確認して、特定の機能に必要なテーブルの特徴を特定します。
リーダー機能は、読み取りプロトコルと書き込みプロトコルの両方をアップグレードします。 たとえば、列マッピングはリーダー機能であり、データがストレージに異なる方法で格納されるため、両方のプロトコルをアップグレードする必要があります。
CHECK制約などのライター機能は、書き込みプロトコルのみをアップグレードします。
警告
ほとんどのプロトコル バージョンのアップグレードは元に戻すことができないので、既存の Delta Lake テーブル リーダー、ライター、またはその両方が中断される可能性があります。 必要な場合にのみ特定のテーブルをアップグレードし、現在および将来のすべての運用ツールで新しいプロトコル バージョンがサポートされていることを確認します。
プロトコルのダウングレードは、一部の機能で利用できます。 Delta Lake テーブル機能の削除とテーブル プロトコルのダウングレードに関する記事を参照してください。
可能な限り低いプロトコル
Delta Lake は、テーブル プロトコルを、すべての有効な機能をサポートする最小バージョンに解決します。 これは、 minReaderVersion または minWriterVersionのみを下げることができ、それらを上げることはありません。 テーブル フィーチャは自動的に削除されることはありません。
DROP FEATUREを使用して、プロトコルからテーブル機能を削除します。
有効なすべての機能が、より低い整数ベースのプロトコル バージョンで完全にサポートされている場合、テーブルはそのバージョンに戻り、プロトコルから readerFeatures または writerFeatures を削除する可能性があります。 これにより、機能は無効になりません。 プロトコル バージョンを低くすると、すべてのクライアントがそれらを尊重する必要があるため、互換性が向上します。
Azure Databricksと Databricks ランタイムの互換性
Azure Databricksでは、Databricks Runtime リリースの新しい Delta Lake 機能のサポートが導入されています。
- 下位の Databricks Runtime バージョンによって書き込まれたテーブルでは、上位の Databricks Runtime バージョンで完全な読み取りと書き込みがサポートされます。
- より高いバージョンの Databricks Runtime によって書き込まれたテーブルでは、下位の Databricks Runtime バージョンではサポートされていないテーブル機能が使用される場合があります。
- 一部の機能では、有効な機能のすべての最適化を完全に適用することなく、Databricks Runtime の下位バージョンからの書き込みを許可します。
Azure Databricksでのみ Delta Lake テーブルを使用する場合は、Databricks ランタイムの最小要件を使用して機能のサポートを追跡するだけで済みます。 外部システムからテーブルを読み書きする場合は、それらのクライアントがテーブルで有効になっているテーブル機能をサポートしていることを確認する必要があります。
バックポートテーブル機能のサポート
Databricks Runtime 12.2 LTS 以降では、 テーブル機能 によって整数ベースのプロトコルが、テーブルで使用される機能を示す詳細なフラグに置き換えられました。
Azure Databricksでは、整数プロトコル バージョンのみをサポートするのではなく、Databricks Runtime 11.3 LTS 以降に対するテーブル機能のサポートをバックポートしていますが、そのリリースで既にサポートされている機能に対してのみサポートされています。
たとえば、Databricks Runtime 9.1 LTS のテーブル機能を使用して、生成された列が有効になっているテーブルの読み取りと書き込みを行うことができます。 ただし、Databricks Runtime 9.1 LTS を使用して、テーブル機能を使用して ID 列が有効になっているテーブルの読み取りと書き込みを行うことはできません。ID 列には Databricks Runtime 10.4 LTS 以降が必要であるためです。
バックポートがサポートされているテーブル機能を使用する場合、特定の Databricks Runtime バージョンで使用できる一部の操作が、対応する OSS Delta Lake バージョンでは使用できない場合があります。 アーキテクチャに OSS Delta Lake クライアントが含まれている場合は、実稼働テーブルでテーブル機能を有効にする前に互換性をテストします。
Delta Lake の機能と必要な Databricks ランタイム バージョン
次の表は、読み取りと書き込みの両方で一般公開されているすべての機能がサポートされるように、各機能を完全にサポートする最下位の Databricks Runtime バージョンを示しています。
| 機能 | 必要な最小の Databricks Runtime バージョン | Documentation |
|---|---|---|
CHECK 制約 |
サポートされているすべての Databricks ランタイム バージョン |
CHECK 制約 |
| データ フィードの変更 | サポートされているすべての Databricks ランタイム バージョン | Azure Databricksで変更データ フィードを使用する |
| 生成列 | サポートされているすべての Databricks ランタイム バージョン | Delta Lake で生成された列 |
| 列マッピング | サポートされているすべての Databricks ランタイム バージョン | Delta Lake の列マッピングを使用して列の名前変更と削除を行う |
| 識別列 | サポートされているすべての Databricks ランタイム バージョン | ID 列 |
| テーブルの機能 | サポートされているすべての Databricks ランタイム バージョン | プロトコルのバージョンと表の機能 |
| ベクトルの削除 | サポートされているすべての Databricks ランタイム バージョン | Databricks の削除ベクトル |
| TimestampNTZ | Databricks Runtime 13.3 LTS |
TIMESTAMP_NTZ 型 |
| UniForm | Databricks Runtime 13.3 LTS | UniForm を使用して Iceberg クライアントで Delta Lake テーブルを読み取る |
| リキッド クラスタリング | Databricks Runtime 13.3 LTS | テーブルに液体クラスタリングを使用する |
| 行の追跡 | Databricks Runtime 14.3 LTS | Azure Databricksでの行の追跡 |
| 型の拡大 | データブリックス Databricks Runtime 15.4 LTS | 型の拡張 |
| Variant | データブリックス Databricks Runtime 15.4 LTS | Apache Iceberg と Delta Lake のバリアント型のサポート |
| Collations | Databricks Runtime 16.1 | Delta Lake の照合順序のサポート |
| 保護されたチェックポイント | Databricks Runtime 16.3(データブリックス ランタイム 16.3) | Delta Lake テーブル機能を削除し、テーブル プロトコルをダウングレードする |
| カタログコミット | Databricks Runtime 16.4 LTS | カタログのコミット |
「Databricks Runtime リリース ノートのバージョンと互換性」を参照してください。
Note
Lakeflow パイプラインと Databricks SQL は、新しい機能をサポートするために、通常のリリースでランタイム環境を自動的にアップグレードします。 Lakeflow パイプラインのリリース ノートとリリース アップグレード プロセスと Databricks SQL リリース ノートを参照してください。
プロトコル バージョン別の機能
Note
Databricks ランタイムの互換性については、「Azure Databricksと Databricks Runtime の互換性」を参照してください。
Delta Lake では、個別の minReaderVersion 値と minWriterVersion 値を使用してプロトコル機能を指定します。 オープン ソースの Delta Lake プロトコルはテーブル機能で標準化されていますが、一部のクライアントではレガシ プロトコルのバージョン管理が引き続き使用されています。 一部のクライアントではすべての機能がサポートされない場合があるため、Databricks では、運用環境のテーブルで新機能を有効にする前に、クライアント ドキュメントで確認し、互換性をテストすることをお勧めします。
Apache Iceberg では、リーダーとライターのバージョンを分離するのではなく、1 つの format-version を使用します。 Iceberg 形式のバージョンは、使用可能な機能を示しますが、その使用は必須としません。 機能はオプトインです。ただし、形式バージョン 3 では必須の行追跡を除きます。 フィーチャーが Iceberg 列に N/A と表示されている場合、これは直接の Iceberg に相当しないデルタ固有の機能です。
次の表に、Delta Lake および Apache Iceberg テーブル機能のプロトコル バージョン要件を示します。 機能の種類は、書き込み専用または読み取りと書き込みの両方に対して機能を尊重する必要があるかどうかを示します。
| 機能 | デルタ minWriterVersion |
デルタ minReaderVersion |
氷山 format-version |
機能の種類 |
|---|---|---|---|---|
| 基本的な機能 | 2 | 1 | 1 | 作家 |
CHECK 制約 |
3 | 1 | N/A | 作家 |
| データ フィードの変更 | 4 | 1 | N/A | 作家 |
| 生成された列 | 4 | 1 | N/A | 作家 |
| 列マッピング | 5 | 2 | N/A | 読み手と書き手 |
| ID 列 | 6 | 1 | N/A | 作家 |
| 行の追跡 | 7 | 1 | 3 | 作家 |
| 削除ベクトル | 7 | 3 | 3 | 読み手と書き手 |
| TimestampNTZ | 7 | 3 | 1 | 読み手と書き手 |
| 液体クラスタリング | 7 | 3 | 1 | リーダーとライター (1) |
| アイスバーグリーダー (UniForm) | 7 | 2 | N/A | ライター (2) |
| 型の拡張 | 7 | 3 | N/A | 読み手と書き手 |
| Variant | 7 | 3 | 3 | 読み手と書き手 |
| バリアントシュレッディング | 7 | 3 | 3 | 読み手と書き手 |
| 照合順序 | 7 | 3 | N/A | 読み手と書き手 |
| 保護されたチェックポイント | 7 | 1 | N/A | 作家 |
| カタログのコミット | 7 | 3 | N/A | 読み手と書き手 |