Compatibiliteit en protocollen van Delta Lake-functies

Delta Lake-tabelprotocollen geven aan welke functies een client moet ondersteunen voor het lezen of schrijven van een tabel. Deze pagina bevat protocolversies, tabelfuncties, compatibiliteitsvereisten en hoe Azure Databricks protocolupgrades beheert. Zie ook Tabeldetails controleren met een beschrijving.

Tabelprotocol en compatibiliteit

Elke Delta Lake-tabel heeft een protocolspecificatie die de set mogelijkheden aangeeft die nodig zijn om van de tabel te lezen en naar de tabel te schrijven. Toepassingen gebruiken de protocolspecificatie om te bepalen of ze alle functies kunnen ondersteunen die in de tabel worden gebruikt. Als een toepassing geen ondersteuning biedt voor een functie in het huidige protocol van een tabel, kan die toepassing die tabel niet lezen of schrijven.

Voor de meeste nieuwe mogelijkheden van Delta Lake moet u het tabelprotocol upgraden.

De volgende tabel bevat de belangrijkste termen die Delta Lake-protocollen beschrijven:

Termijn Description
Delta Lake-client Elk systeem dat naar een Delta Lake-tabel leest of schrijft.
Leesprotocol Dit specificeert de ondersteuning die vereist is voor een Delta Lake-client om een tabel te lezen.
Schrijfprotocol Hiermee geeft u de ondersteuning op die nodig is voor een Delta Lake-client om naar een tabel te schrijven.
minReaderVersion Integerwaarde van het lezerprotocol. Geldige waarden zijn 1, 2of 3.
minWriterVersion Integerwaarde van het writer-protocol. Geldige waarden zijn gehele getallen 2 tot en met 7.
Tabelfunctie Een fijnmazig alternatief voor protocolversies die worden gebruikt bij minReaderVersion = 3 en minWriterVersion = 7. Tabelfuncties komen overeen met optioneel ingeschakelde Delta Lake-functies.
Schrijverfunctie Een tabelfunctie waarvoor ondersteuning voor schrijfclients is vereist, maar die geen alleen-lezentoegang blokkeert.
Lezerfunctie Een tabelfunctie waarvoor zowel ondersteuning voor lezen als schrijven is vereist. Zie Protocolversies en tabelfuncties.

Schrijfprotocollen en schrijffuncties zijn alleen van invloed op de compatibiliteit met schrijfclients, waardoor alleen-lezentoegang tot de tabel mogelijk is vanuit verouderde workloads.

Niet alle Delta Lake-functies zijn compatibel met elkaar.

Sommige tabelfuncties kunnen niet eenmaal worden verwijderd. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Protocolversies en tabelfuncties

Alle Delta Lake-tabellen bevatten een protocolversie op basis van gehele getallen die wordt vertegenwoordigd door minReaderVersion en minWriterVersion. Elke versie bundelt meerdere functies en functies zijn cumulatief in verschillende versies. Om te voldoen aan het Delta Lake-protocol, moeten clients ondersteuning implementeren voor alle functies in een bepaalde versie, inclusief alle eerder uitgebrachte functies.

In Databricks Runtime 12.2 LTS en hoger vervangen tabelfuncties het protocol op basis van gehele getallen door gedetailleerde vlaggen die aangeven welke functies een tabel gebruikt. Hierdoor kunnen nauwkeurigere compatibiliteitscontroles tussen clients en tabellen worden uitgevoerd.

Tabelschrijverfuncties zijn van invloed op de manier waarop gegevens worden geschreven. Ze vereisen minWriterVersion=7 , maar blokkeren geen lezerclients.

De functies van de tabellezer zijn van invloed op de manier waarop gegevens worden gelezen. Alle lezerfuncties zijn ook schrijffuncties en vereisen minReaderVersion=3 en minWriterVersion=7. Een client kan niet schrijven naar een tabel die niet kan worden gelezen.

Wanneer tabelfuncties zijn ingeschakeld, worden ze weergegeven in het protocol als readerFeatures of writerFeatures. Delta Lake lost het tabelprotocol op naar de laagste versie die ondersteuning biedt voor alle ingeschakelde functies. Zie het laagste mogelijke protocol.

Note

Azure Databricks bevat niet-belangrijke gedeeltelijke ondersteuning voor tabelfuncties in alle ondersteunde Databricks Runtime-versies. OSS Delta Lake-clients kiezen hoe ondersteuning voor bepaalde functies moet worden geïmplementeerd.

Protocolwijzigingen

Het protocol voor een tabel verandert onder de volgende voorwaarden:

  • Als een nieuwe functie is ingeschakeld, wordt het protocol bijgewerkt.
  • Als een tabelfunctie wordt verwijderd, wordt het protocol gedowngraded.

Het uitschakelen van een tabelfunctie leidt niet tot een protocol downgrade. U moet de functie verwijderen om deze volledig uit het protocol te verwijderen. Niet alle tabelfuncties kunnen worden verwijderd. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Alle protocolwijzigingsbewerkingen conflicteren met gelijktijdige schrijfbewerkingen. Streaming-leesbewerkingen mislukken wanneer ze een doorvoer tegenkomen die metagegevens van de tabel wijzigt. Start de betrokken streams opnieuw om door te gaan. Zie voor aanbevolen methoden Productieoverwegingen voor Gestructureerde Streaming.

Note

Databricks raadt u aan de eigenschappen van de tabel en minReaderVersion de minWriterVersion tabel nooit rechtstreeks te wijzigen. Als u deze eigenschappen wijzigt, voorkomt u geen protocolupgrades en worden ze ingesteld op een lagere waarde, wordt de tabel niet gedowngraded. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Wat een protocolupgrade activeert

Wanneer u een functie inschakelt, wordt het tabelprotocol automatisch bijgewerkt.

Protocolupgrades worden op de volgende manieren geactiveerd:

  • Automatisch inschakelen op basis van de syntaxis die wordt gebruikt in CREATE of ALTER instructies. In een CLUSTER BY instructie wordt bijvoorbeeld CREATE TABLE automatisch vloeistofclustering ingeschakeld en GENERATED ALWAYS AS worden gegenereerde kolommen ingeschakeld.
  • Schakel deze optie expliciet in via tabeleigenschappen. Met de instelling 'delta.enableDeletionVectors' = true kunt u bijvoorbeeld verwijderingsvectoren inschakelen.
  • Het inschakelen van een functie kan automatisch vereiste functies inschakelen. Als u UniForm bijvoorbeeld inschakelt, wordt kolomtoewijzing automatisch ingeschakeld en schakelt u liquid clustering automatisch in op controlepunt V2. Raadpleeg de relevante Azure Databricks documentatie om te bepalen welke tabelfuncties een bepaalde functie nodig heeft.

Lezerfuncties upgraden zowel de lees- als schrijfprotocollen. Kolomtoewijzing is bijvoorbeeld een lezerfunctie en vereist een upgrade van beide protocollen omdat gegevens anders worden opgeslagen in de opslag.

Schrijffuncties, zoals CHECK beperkingen, upgraden alleen het schrijfprotocol.

Warning

De meeste upgrades van protocolversies kunnen niet ongedaan worden genomen en kunnen bestaande Delta Lake-tabellezers, schrijvers of beide breken. Werk specifieke tabellen alleen bij wanneer dat nodig is en controleer of alle huidige en toekomstige productiehulpprogramma's ondersteuning bieden voor de nieuwe protocolversie.

Protocol downgrades zijn beschikbaar voor sommige functies. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Laagst mogelijke protocol

Delta Lake lost het tabelprotocol op naar de laagste versie die ondersteuning biedt voor alle ingeschakelde functies. Dit kan alleen lager minReaderVersion of minWriterVersion, nooit verhogen. Tabelfuncties worden nooit automatisch verwijderd. Hiermee DROP FEATURE verwijdert u een tabelfunctie uit het protocol.

Als alle ingeschakelde functies volledig worden ondersteund in een lagere protocolversie op basis van gehele getallen, wordt de tabel mogelijk teruggezet naar die versie en wordt verwijderd readerFeatures of writerFeatures van het protocol. Hiermee worden geen functies uitgeschakeld. Lagere protocolversies vergroten de compatibiliteit omdat alle clients deze moeten respecteren.

compatibiliteit met Azure Databricks en Databricks Runtime

Azure Databricks introduceert ondersteuning voor nieuwe Delta Lake-functies in Databricks Runtime-releases:

  • Tabellen die zijn geschreven door een lagere Databricks Runtime-versie, hebben volledige ondersteuning voor lezen en schrijven in hogere Versies van Databricks Runtime.
  • Tabellen die zijn geschreven door een hogere Databricks Runtime-versie, gebruiken mogelijk tabelfuncties die niet worden ondersteund in lagere Databricks Runtime-versies.
  • Sommige functies bieden schrijfbewerkingen van lagere Databricks Runtime-versies zonder dat alle optimalisaties voor de ingeschakelde functie volledig worden toegepast.

Als u alleen Delta Lake-tabellen gebruikt via Azure Databricks, hoeft u alleen functieondersteuning bij te houden met behulp van minimale Databricks Runtime-vereisten. Als u tabellen van externe systemen leest of schrijft, moet u controleren of deze clients de tabelfuncties ondersteunen die zijn ingeschakeld voor uw tabellen.

Ondersteuning voor backported table-functies

In Databricks Runtime 12.2 LTS en hoger hebben tabelfuncties het protocol op basis van gehele getallen vervangen door gedetailleerde vlaggen die aangeven welke functies een tabel gebruikt.

Azure Databricks biedt ondersteuning voor backported tablefuncties voor Databricks Runtime 11.3 LTS en lager, in plaats van alleen ondersteunde gehele protocolversies, maar alleen voor functies die al in die release worden ondersteund.

U kunt bijvoorbeeld lezen van en schrijven naar een tabel waarvoor gegenereerde kolommen zijn ingeschakeld met behulp van tabelfuncties in Databricks Runtime 9.1 LTS. U kunt Databricks Runtime 9.1 LTS echter niet gebruiken om van en naar een tabel te schrijven met identiteitskolommen die zijn ingeschakeld met behulp van tabelfuncties, omdat voor identiteitskolommen Databricks Runtime 10.4 LTS en hoger is vereist.

Wanneer u tabelfuncties gebruikt met ondersteuning voor backported, zijn sommige bewerkingen die beschikbaar zijn in een bepaalde Databricks Runtime-versie mogelijk niet beschikbaar in de bijbehorende OSS Delta Lake-versie. Als uw architectuur OSS Delta Lake-clients bevat, test u de compatibiliteit voordat u tabelfuncties voor productietabellen inschakelt.

Delta Lake-functies en vereiste Databricks Runtime-versies

De volgende tabel bevat de laagste Databricks Runtime-versie met volledige ondersteuning voor elke functie, zodat alle algemeen beschikbare mogelijkheden voor zowel lees- als schrijfbewerkingen worden ondersteund.

Feature Vereist Databricks Runtime, versie of hoger Documentation
CHECK Beperkingen Alle ondersteunde Databricks Runtime-versies CHECK beperking
Gegevensfeed wijzigen Alle ondersteunde Databricks Runtime-versies Wijzigingenfeed gebruiken voor Azure Databricks
Gegenereerde kolommen Alle ondersteunde Databricks Runtime-versies door Delta Lake gegenereerde kolommen
Kolomtoewijzing Alle ondersteunde Databricks Runtime-versies Kolommen hernoemen en verwijderen met Delta Lake-kolomtoewijzing
ID-kolommen Alle ondersteunde Databricks Runtime-versies Identiteitskolommen
Kenmerken van de tabel Alle ondersteunde Databricks Runtime-versies Protocolversies en tabelfuncties
Verwijderingsvectoren Alle ondersteunde Databricks Runtime-versies Verwijderingsvectoren in Databricks
TimestampNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ Type
Uniform Databricks Runtime 13.3 LTS Delta Lake-tabellen lezen met Iceberg-clients met UniForm
Clusteren van vloeistoffen Databricks Runtime 13.3 LTS Liquid clustering gebruiken voor tabellen
Rijvolgsysteem Databricks Runtime 14.3 LTS Rijtracering in Azure Databricks
Type-uitbreiding Databricks Runtime 15.4 LTS Type breder maken
Variant Databricks Runtime 15.4 LTS Ondersteuning voor varianttypen voor Apache Iceberg en Delta Lake
Sorteerwijzen Databricks Runtime 16.1 ** Collatie-ondersteuning voor Delta Lake
Beveiligde controlepunten Databricks Runtime 16.3 Een Delta Lake-tabelfunctie verwijderen en tabelprotocol downgraden
Catalogusdoorvoeringen Databricks Runtime 16.4 LTS Catalogusdoorvoeringen

Zie de release-opmerkingen voor versies en compatibiliteit van Databricks Runtime.

Note

Lakeflow-pijplijnen en Databricks SQL upgraden automatisch runtime-omgevingen met regelmatige releases ter ondersteuning van nieuwe functies. Zie releaseopmerkingen voor Lakeflow-pijplijnen en het release-upgradeproces en de releaseopmerkingen voor Databricks SQL.

Functies volgens protocolversie

Delta Lake maakt gebruik van afzonderlijke minReaderVersion waarden en minWriterVersion waarden om protocolmogelijkheden op te geven. Het opensource Delta Lake-protocol is gestandaardiseerd op tabelfuncties, maar sommige clients gebruiken nog steeds verouderde protocolversiebeheer. Omdat sommige clients mogelijk niet alle functies ondersteunen, raadt Databricks u aan om te controleren met uw clientdocumentatie en de compatibiliteit te testen voordat nieuwe functies in productietabellen worden ingeschakeld.

Apache Iceberg maakt gebruik van één format-version in plaats van afzonderlijke lezers- en schrijfversies. Een Iceberg-indelingsversie geeft aan welke functies beschikbaar zijn, maar vereist geen gebruik. Functies zijn optioneel inschakelbaar, behalve voor het bijhouden van rijen die verplicht zijn in formaat versie 3. Wanneer een functie N/B in de kolom Iceberg weergeeft, is het een Delta-specifieke functie zonder direct Iceberg-equivalent.

De volgende tabel bevat protocolversievereisten voor Delta Lake- en Apache Iceberg-tabelfuncties. Het functietype geeft aan of een functie alleen moet worden gerespecteerd voor schrijfbewerkingen of voor zowel lees- als schrijfbewerkingen.

Feature Delta minWriterVersion Delta minReaderVersion Ijsberg format-version Functietype
Basisfunctionaliteit 2 1 1 Schrijver
CHECK Beperkingen 3 1 N/A Schrijver
Gegevensfeed wijzigen 4 1 N/A Schrijver
Gegenereerde kolommen 4 1 N/A Schrijver
Kolomtoewijzing 5 2 N/A Lezer en schrijver
Identiteitskolommen 6 1 N/A Schrijver
Rijvolgen 7 1 3 Schrijver
Verwijderingsvectoren 7 3 3 Lezer en schrijver
TijdstempelNTZ 7 3 1 Lezer en schrijver
Liquid clustering 7 3 1 Lezer en schrijver (1)
IJsberglezers (UniForm) 7 2 N/A Schrijver (2)
Type breder maken 7 3 N/A Lezer en schrijver
Variant 7 3 3 Lezer en schrijver
Variant shredding 7 3 3 Lezer en schrijver
Sorteringen 7 3 N/A Lezer en schrijver
Beveiligde controlepunten 7 1 N/A Schrijver
Catalogusdoorvoeringen 7 3 N/A Lezer en schrijver

(1): Met liquide clustering wordt verborgen partitionering geïmplementeerd.

(2): Vereist dat kolomtoewijzing is ingeschakeld.