Delen via


Compatibiliteit en protocollen van Delta Lake-functies

Dit artikel bevat een overzicht van Delta Lake-protocollen, tabelfuncties en compatibiliteit met Delta Lake-clients voor lees- en schrijfbewerkingen.

Het transactielogboek voor een Delta-tabel bevat informatie over protocolversiebeheer. Zie Tabeldetails controleren met een beschrijving van de details.

Hoe geeft het tabelprotocol lees- en schrijfcompatibiliteit op?

Elke Delta-tabel heeft een protocolspecificatie die de set mogelijkheden aangeeft die nodig zijn om naar de tabel te lezen en schrijven. De protocolspecificatie wordt gebruikt door toepassingen die lezen van of schrijven naar de tabel om te bepalen of ze alle functies kunnen verwerken die door de tabel worden ondersteund. Als een toepassing niet weet hoe een functie moet worden verwerkt die wordt vermeld als ondersteund in het protocol van een tabel, kan die toepassing die tabel niet lezen of schrijven.

Voor de meeste nieuwe mogelijkheden en functionaliteit die aan Delta Lake zijn toegevoegd, moet u het tabelprotocol upgraden.

De volgende tabel bevat een overzicht van de belangrijkste termen die worden gebruikt om Delta Lake-protocollen te beschrijven:

Termijn Beschrijving
Delta Lake-client Elk systeem dat naar een Delta-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 Onderdeel van het lezerprotocol. Geldige waarden zijn 1, 2of 3.
minWriterVersion Onderdeel van het schrijfprotocol. Geldige waarden zijn gehele getallen 2 tot en met 7.
Tabelfunctie Een fijnmazig alternatief voor protocolversies. Tabelfuncties komen overeen met optioneel ingeschakelde Delta Lake-functies.
Schrijverfunctie Een tabelfunctie die is gekoppeld aan een schrijfprotocol.
Lezerfunctie Een tabelfunctie die is gekoppeld aan een leesprotocol.

Schrijfprotocollen en schrijffuncties hebben alleen invloed op de compatibiliteit met schrijfclients, wat betekent dat alleen-lezentoegang tot de tabel vanuit verouderde workloads nog steeds wordt ondersteund. Leesprotocollen en leesfuncties zijn van invloed op zowel lees- als schrijfcompatibiliteit.

Niet alle Delta Lake-functies zijn compatibel met elkaar.

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

Tabelfuncties voor protocolcompatibiliteit

In Databricks Runtime 12.2 LTS en hoger gebruikt Databricks tabelfuncties om ondersteuning voor functies en compatibiliteit met lezers en schrijvers aan te geven. Tabelfuncties gebruiken gedetailleerde vlaggen om op te geven welke functies worden ondersteund door een bepaalde tabel. Tabelfuncties vervangen het verouderde protocolversiebeheerschema door nieuwe functies te introduceren in het Delta Lake-protocol.

Functies voor tabelschrijvers geven functies aan die van invloed zijn op de manier waarop gegevens worden geschreven. Functies voor tabelschrijvers vereisen minWriterVersion == 7. Functies die zijn geïmplementeerd als schrijffuncties blokkeren geen lezerclients.

Tabellezerfuncties duiden op eigenschappen die de manier beïnvloeden waarop gegevens worden gelezen. Alle functies van de tabellezer zijn ook functies voor tabelschrijvers. Voor functies voor tabellezers is minReaderVersion == 3 en minWriterVersion == 7 vereist. Een client kan niet schrijven naar een tabel die niet kan worden gelezen.

Wanneer tabelfuncties zijn ingeschakeld, worden alle functies die door het protocol voor de tabel worden ondersteund, weergegeven in respectievelijke lijsten als readerFeatures of writerFeatures. Wanneer u functies uit een tabel verwijdert, kan dit gedrag in de tabel worden verwijderd om dit op te lossen naar het laagst mogelijke protocol. Zie het laagste mogelijke protocol.

Geheel getal-gebaseerde protocolversies en legacy-compatibiliteit

Alle tabellen bevatten een protocolversie op basis van een geheel getal dat wordt vertegenwoordigd door minReaderVersion en minWriterVersion. De functionaliteit die is geïmplementeerd met behulp van tabelfuncties is gebaseerd op deze protocolversies, maar veel verouderde lezer- en schrijfclients blijven protocolversies gebruiken om compatibiliteit te beheren. Delta Lake probeert het tabelprotocol op te lossen naar de laagst mogelijke versie om de maximale compatibiliteit met moderne en verouderde Delta-clients te behouden. Zie het laagste mogelijke protocol.

In het schema voor protocolversiebeheer op basis van een geheel getal bundelt elk versienummer meerdere functies en functies in verschillende versienummers zijn cumulatief. Dit betekent dat om te voldoen aan het Delta-protocol, clients ondersteuning moeten implementeren voor alle lezer- of schrijffuncties die aanwezig zijn in een bepaalde versie, inclusief alle eerder uitgebrachte functies.

Notitie

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

Wanneer wordt het tabelprotocol gewijzigd?

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.

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

Alle protocolwijzigingsbewerkingen conflicteren met alle gelijktijdige schrijfbewerkingen.

Streaming-leesbewerkingen mislukken wanneer ze een doorvoer tegenkomen die metagegevens van de tabel wijzigt. Als u wilt dat de stream wordt voortgezet, moet u deze opnieuw starten. Zie Productieoverwegingen voor Gestructureerd streamen voor aanbevolen methoden.

Waarschuwing

De meeste upgrades van protocolversies zijn onomkeerbaar en het upgraden van de protocolversie kan de bestaande Delta Lake-tabellezers, schrijvers of beide verstoren. Databricks raadt u aan om specifieke tabellen alleen bij te werken wanneer dat nodig is, zoals aanmelden voor nieuwe functies in Delta Lake. Controleer ook of al uw huidige en toekomstige productiehulpprogramma's Delta Lake-tabellen ondersteunen met de nieuwe protocolversie.

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

Wanneer wordt het tabelprotocol bijgewerkt?

Wanneer u een functie voor een tabel inschakelt, wordt het tabelprotocol automatisch bijgewerkt. Sommige functies worden automatisch ingeschakeld op basis van de syntaxis die wordt gebruikt in CREATE of ALTER tabelinstructies, terwijl voor andere functies expliciete activering is vereist via het instellen van tabeleigenschappen. Soms moet u meerdere tabellenfuncties expliciet inschakelen om de gewenste functionaliteit te ondersteunen. In andere gevallen kan het inschakelen van functionaliteit automatisch andere tabelfuncties inschakelen. Raadpleeg de Documentatie van Azure Databricks voor de functionaliteit en syntaxis die u gebruikt om te bepalen welke tabelfuncties vereist zijn.

Lezerfuncties moeten zowel het leesprotocol als het schrijfprotocol upgraden. Schrijffuncties vereisen alleen een upgrade van het schrijfprotocol.

Ondersteuning voor CHECK beperkingen is bijvoorbeeld een functie voor schrijvers: alleen schrijvende toepassingen hoeven te weten over CHECK beperkingen en deze af te dwingen.

Daarentegen moet kolomtoewijzing zowel de lees- als schrijfprotocollen upgraden. Omdat de gegevens anders worden opgeslagen in de tabel, moeten lezertoepassingen de kolomtoewijzing begrijpen, zodat ze de gegevens correct kunnen lezen.

Notitie

Databricks raadt af om de minReaderVersion en minWriterVersion tableigenschappen te wijzigen. Als u deze tabeleigenschappen wijzigt, voorkomt u geen protocolupgrade. Als u deze waarden instelt op een lagere waarde, wordt de tabel niet gedowngraded. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Laagst mogelijke protocol

Delta Lake probeert standaard het laagste protocol te gebruiken om alle functies weer te geven die zijn gemarkeerd als ondersteund door de tabel.

Dit gedrag kan alleen resulteren in het verlagen van het tabelprotocol, wat betekent dat de minReaderVersion of minWriterVersion kan veranderen in lagere waarden voor een tabel.

U moet de DROP FEATURE opdracht uitvoeren om een tabelfunctie te verwijderen uit de lijst met ondersteunde functies in het tabelprotocol. Tabelfuncties worden nooit automatisch verwijderd.

Als alle Delta Lake-functies in een tabel volledig worden ondersteund in een lagere protocolversie, wordt de tabel mogelijk teruggezet naar een protocolversie die geen tabelfuncties gebruikt om lezer- en schrijfcompatibiliteit aan te geven. Wanneer deze protocol downgrade plaatsvindt, kan de tabel de readerFeatures of beide readerFeatures en writerFeatures uit het tabelprotocol verwijderen. Dit leidt er niet toe dat delta lake-functies worden uitgeschakeld en alleen optreden wanneer tabelfuncties niet vereist zijn in het tabelprotocol.

Alle wijzigingen die het tabelprotocol verlagen, vergroten de compatibiliteit met lezer- en schrijfclients. Dit komt doordat lezer- en schrijfclients lagere protocolversies moeten respecteren, zelfs als ze hogere protocolversies ondersteunen.

Veranderen tabelfuncties hoe Delta Lake-functies worden ingeschakeld?

Als u alleen communiceert met Delta-tabellen via Azure Databricks, kunt u ondersteuning voor Delta Lake-functies blijven volgen met behulp van minimale Databricks Runtime-vereisten. Azure Databricks biedt ondersteuning voor het lezen van Delta-tabellen die zijn bijgewerkt naar tabelfuncties in alle Databricks Runtime LTS-releases, zolang alle functies die door de tabel worden gebruikt, worden ondersteund door die release.

Als u deltatabellen leest en schrijft met behulp van andere systemen, moet u mogelijk rekening houden met de compatibiliteit van tabelfuncties, omdat er een risico bestaat dat het systeem de bijgewerkte protocolversies niet kan begrijpen.

Belangrijk

Tabelfuncties worden geïntroduceerd in de Delta Lake-indeling voor schrijverversie 7 en lezer versie 3. Azure Databricks heeft code teruggebracht naar alle ondersteunde Databricks Runtime LTS-versies om ondersteuning voor tabelfuncties toe te voegen, maar alleen voor die functies die al in die Databricks Runtime worden ondersteund. Dit betekent dat hoewel u ervoor kunt kiezen om tabelfuncties te gebruiken om gegenereerde kolommen in te schakelen en nog steeds te werken met deze tabellen in Databricks Runtime 9.1 LTS, worden tabellen waarvoor identiteitskolommen zijn ingeschakeld (waarvoor Databricks Runtime 10.4 LTS is vereist) nog steeds niet ondersteund in die Databricks Runtime.

Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies?

Databricks introduceert ondersteuning voor nieuwe Delta Lake-functies en -optimalisaties die zijn gebaseerd op Delta Lake in Databricks Runtime-releases. Azure Databricks-optimalisaties die gebruikmaken van Delta Lake-functies, respecteren de protocollen die worden gebruikt in OSS Delta Lake voor compatibiliteit. Veel Azure Databricks-optimalisaties vereisen het inschakelen van Delta Lake-functies in een tabel en sommige Azure Databricks-producten zoals Lakeflow Spark-declaratieve pijplijnen zijn afhankelijk van veel tabelfuncties.

  • Alle tabellen die zijn geschreven door lagere Databricks Runtime-versies hebben volledige lees- en schrijfondersteuning in hogere Databricks Runtime-versies.
  • Tabellen die zijn geschreven door hogere Databricks Runtime-versies kunnen gebruikmaken van tabelfuncties die niet worden ondersteund in lagere Databricks Runtime-versies.
    • Sommige functies kunnen schrijfbewerkingen van lagere Databricks Runtime-versies toestaan zonder alle optimalisaties met betrekking tot de ingeschakelde tabelfuncties volledig toe te passen.

Wanneer u werkt met tabelfuncties met backported ondersteuning voor lagere Databricks Runtime-versies, worden sommige bewerkingen die worden uitgevoerd op een bepaalde Databricks Runtime-versie mogelijk niet uitgevoerd op de bijbehorende OSS Delta-versie. Als uw ontwikkelingscyclus of gegevensarchitectuur OSS Delta Lake bevat, moet u altijd de compatibiliteit testen in OSS Delta-clients voordat u tabelfuncties in productietabellen inschakelt.

Delta Lake-functies en vereiste Databricks Runtime-versies

Functies worden per afzonderlijke tabel ingeschakeld. De volgende tabel bevat de laagste Databricks Runtime-versie met volledige ondersteuning voor de aangegeven functie. Volledige ondersteuning betekent dat alle algemeen beschikbare functionaliteit voor zowel lees- als schrijfbewerkingen wordt ondersteund.

Kenmerk Vereist Databricks Runtime, versie of hoger Documentatie
CHECK Beperkingen Alle ondersteunde Databricks Runtime-versies een CHECK beperking instellen in Azure Databricks
Gegevensfeed wijzigen Alle ondersteunde Databricks Runtime-versies Delta Lake-wijzigingenfeed gebruiken in 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
Identiteitskolommen Alle ondersteunde Databricks Runtime-versies Identiteitskolommen gebruiken in Delta Lake
Tabelfuncties Databricks Runtime 12.2 LTS Tabelfuncties voor protocolcompatibiliteit
Verwijderingsvectoren Databricks Runtime 12.2 LTS Verwijderingsvectoren in Databricks
TijdstempelNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ Type
Uniform Databricks Runtime 13.3 LTS Delta-tabellen lezen met Iceberg-clients
Vloeistofclustering Databricks Runtime 13.3 LTS Liquid clustering gebruiken voor tabellen
Rijvolgen Databricks Runtime 14.3 LTS Rijtracering in Databricks
Type-uitbreiding Databricks Runtime 15.4 LTS Type breder maken
Variatie Databricks Runtime 15.4 LTS Ondersteuning voor varianttypen
Sorteringen Databricks Runtime 16.1 ** Collatie-ondersteuning voor Delta Lake
Beveiligde controlepunten Databricks Runtime 16.3 Een Delta Lake-tabelfunctie verwijderen en tabelprotocol downgraden

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

Notitie

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

Functies volgens protocolversie

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.

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. Sommige clients ondersteunen mogelijk niet alle functies, dus raadpleeg de clientdocumentatie en testcompatibiliteit 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.

Notitie

Als u zich alleen bezig houdt met de compatibiliteit van Databricks Runtime, raadpleegt u Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies?

Kenmerk 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

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

(2): Vereist dat kolomtoewijzing is ingeschakeld.