Delta Lake-funktionskompatibilitet och protokoll

Delta Lake-tabellprotokoll anger vilka funktioner en klient måste ha stöd för för att läsa eller skriva en tabell. På den här sidan beskrivs protokollversioner, tabellfunktioner, kompatibilitetskrav och hur Azure Databricks hanterar protokolluppgraderingar. Se även Granska tabellinformation med beskriv detaljer.

Tabellprotokoll och kompatibilitet

Varje Delta Lake-tabell har en protokollspecifikation som anger vilka funktioner som krävs för att läsa från och skriva till tabellen. Program använder protokollspecifikationen för att avgöra om de kan stödja alla funktioner som tabellen använder. Om ett program inte kan stödja en funktion i det aktuella protokollet i en tabell kan programmet inte läsa eller skriva tabellen.

De flesta nya funktioner i Delta Lake kräver att du uppgraderar tabellprotokollet.

I följande tabell visas viktiga termer som beskriver Delta Lake-protokoll:

Begrepp Description
Delta Lake-klient Alla system som läser eller skriver till en Delta Lake-tabell.
Läs protokoll Anger det stöd som krävs för att en Delta Lake-klient ska kunna läsa en tabell.
Skriv protokoll Anger det stöd som krävs för att en Delta Lake-klient ska kunna skriva till en tabell.
minReaderVersion Heltalsvärdet för läsarprotokollet. Giltiga värden är 1, 2eller 3.
minWriterVersion Heltalsvärdet för skrivarprotokollet. Giltiga värden är heltal 2 via 7.
Tabellfunktion Ett detaljerad alternativ till protokollversioner som används när minReaderVersion = 3 och minWriterVersion = 7. Tabellfunktioner mappas till valbart aktiverade Delta Lake-funktioner.
Skrivarfunktion En tabellfunktion som kräver skrivklientstöd men inte blockerar skrivskyddad åtkomst.
Läsarfunktion En tabellfunktion som kräver både läs- och skrivklientstöd. Se Protokollversioner och tabellfunktioner.

Skrivprotokoll och skrivfunktioner påverkar bara kompatibiliteten med skrivklienter, vilket ger skrivskyddad åtkomst till tabellen från äldre arbetsbelastningar.

Alla Delta Lake-funktioner är inte kompatibla med varandra.

Vissa tabellfunktioner kan inte tas bort när de är aktiverade. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.

Protokollversioner och tabellfunktioner

Alla Delta Lake-tabeller innehåller en heltalsbaserad protokollversion som representeras av minReaderVersion och minWriterVersion. Varje version paketar flera funktioner tillsammans och funktionerna är kumulativa mellan olika versioner. För att följa Delta Lake-protokollet måste klienter implementera stöd för alla funktioner i en viss version, inklusive alla tidigare utgivna funktioner.

I Databricks Runtime 12.2 LTS och senare ersätter tabellfunktionerna det heltalsbaserade protokollet med detaljerade flaggor som anger vilka funktioner en tabell använder. Detta möjliggör finare kompatibilitetskontroller mellan klienter och tabeller.

Tabellskrivarfunktioner påverkar hur data skrivs. De kräver minWriterVersion=7 men blockerar inte läsarklienter.

Tabellläsarfunktioner påverkar hur data läse. Alla läsarfunktioner är också skrivfunktioner och kräver minReaderVersion=3 och minWriterVersion=7. En klient kan inte skriva till en tabell som den inte kan läsa.

När tabellfunktioner är aktiverade visas de i protokollet som readerFeatures eller writerFeatures. Delta Lake löser tabellprotokollet till den lägsta versionen som stöder alla aktiverade funktioner. Se Lägsta möjliga protokoll.

Note

Azure Databricks innehåller icke-breaking partiellt stöd för tabellfunktioner i alla Databricks Runtime-versioner som stöds. OSS Delta Lake-klienter väljer hur de ska implementera stöd för givna funktioner.

Protokolländringar

Protokollet för en tabell ändras under följande villkor:

  • Om en ny funktion är aktiverad uppgraderas protokollet.
  • Om en tabellfunktion tas bort nedgraderas protokollet.

Om du inaktiverar en tabellfunktion resulterar det inte i en nedgradering av protokollet. Du måste släppa funktionen för att ta bort den helt från protokollet. Det går inte att ta bort alla tabellfunktioner. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.

Alla protokolländringsåtgärder står i konflikt med samtidiga skrivningar. Strömningsläsningar misslyckas när de stöter på en commit som ändrar tabellmetadata. Starta om de berörda strömmarna om du vill fortsätta. Rekommenderade metoder finns i Produktionsöverväganden för strukturerad direktuppspelning.

Note

Databricks rekommenderar att du aldrig ändrar tabellegenskaperna minReaderVersion och minWriterVersion direkt. Att ändra dessa egenskaper förhindrar inte protokolluppgraderingar, och om du anger ett lägre värde nedgraderas inte tabellen. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.

Vad utlöser en protokolluppgradering

När du aktiverar en funktion uppgraderas tabellprotokollet automatiskt.

Protokolluppgraderingar utlöses på följande sätt:

  • Aktivera automatiskt baserat på den syntax som används i CREATE eller ALTER -instruktioner. I en CLUSTER BY instruktion möjliggör till exempel CREATE TABLE automatiskt flytande klustring och GENERATED ALWAYS AS aktiverar genererade kolumner.
  • Aktivera explicit via tabellegenskaper. Inställningen aktiverar till exempel 'delta.enableDeletionVectors' = true borttagningsvektorer.
  • Om du aktiverar en funktion kan nödvändiga funktioner aktiveras automatiskt. Om du till exempel aktiverar UniForm automatiskt aktiveras kolumnmappning, och aktivering av flytande klustring aktiverar automatiskt kontrollpunkt V2. Granska relevant Azure Databricks dokumentation för att avgöra vilka tabellfunktioner en viss funktion kräver.

Läsarfunktioner uppgraderar både läs- och skrivprotokollen. Kolumnmappning är till exempel en läsarfunktion och kräver uppgradering av båda protokollen eftersom data lagras på olika sätt i lagringen.

Skrivfunktioner, till exempel CHECK begränsningar, uppgraderar bara skrivprotokollet.

Varning

De flesta protokollversionsuppgraderingar är oåterkalleliga och kan bryta befintliga Delta Lake-tabellläsare, skrivare eller båda. Uppgradera endast specifika tabeller när det behövs och kontrollera att alla aktuella och framtida produktionsverktyg stöder den nya protokollversionen.

Protokollnedgraderingar är tillgängliga för vissa funktioner. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.

Lägsta möjliga protokoll

Delta Lake löser tabellprotokollet till den lägsta versionen som stöder alla aktiverade funktioner. Detta kan bara sänka minReaderVersion eller minWriterVersion, aldrig höja dem. Tabellfunktioner tas aldrig bort automatiskt. Använd DROP FEATURE för att ta bort en tabellfunktion från protokollet.

Om alla aktiverade funktioner stöds fullt ut i en lägre heltalsbaserad protokollversion kan tabellen återgå till den versionen och släppa readerFeatures eller writerFeatures från protokollet. Detta inaktiverar inte några funktioner. Lägre protokollversioner ökar kompatibiliteten eftersom alla klienter måste respektera dem.

Azure Databricks- och Databricks Runtime-kompatibilitet

Azure Databricks introducerar stöd för nya Delta Lake-funktioner i Databricks Runtime-versioner:

  • Tabeller skrivna av en lägre Databricks Runtime-version har fullständigt läs- och skrivstöd i högre Databricks Runtime-versioner.
  • Tabeller skrivna av en högre Databricks Runtime-version kan använda tabellfunktioner som inte stöds i lägre Databricks Runtime-versioner.
  • Vissa funktioner tillåter skrivningar från lägre Databricks Runtime-versioner utan att helt tillämpa alla optimeringar för den aktiverade funktionen.

Om du bara använder Delta Lake-tabeller via Azure Databricks behöver du bara spåra funktionsstöd med hjälp av minimikraven för Databricks Runtime. Om du läser eller skriver tabeller från externa system måste du kontrollera att dessa klienter stöder tabellfunktionerna som är aktiverade i dina tabeller.

Stöd för bakåtporterade tabellfunktioner

I Databricks Runtime 12.2 LTS och senare ersatte tabellfunktionerna det heltalsbaserade protokollet med detaljerade flaggor som anger vilka funktioner en tabell använder.

Azure Databricks har stöd för bakåtporterade tabellfunktioner till Databricks Runtime 11.3 LTS och nedan, i stället för att endast stödja heltalsprotokollversioner, men bara för funktioner som redan stöds i den versionen.

Du kan till exempel läsa från och skriva till en tabell med genererade kolumner aktiverade med tabellfunktioner i Databricks Runtime 9.1 LTS. Du kan dock inte använda Databricks Runtime 9.1 LTS för att läsa från och skriva till en tabell med identitetskolumner aktiverade med hjälp av tabellfunktioner eftersom identitetskolumner kräver Databricks Runtime 10.4 LTS och senare.

När du använder tabellfunktioner med stöd för serverportering kanske vissa åtgärder som är tillgängliga i en viss Databricks Runtime-version inte är tillgängliga i motsvarande OSS Delta Lake-version. Om din arkitektur innehåller OSS Delta Lake-klienter testar du kompatibiliteten innan du aktiverar tabellfunktioner i produktionstabeller.

Delta Lake-funktioner och nödvändiga Databricks Runtime-versioner

I följande tabell visas den lägsta Databricks Runtime-versionen med fullständigt stöd för varje funktion, så att alla allmänt tillgängliga funktioner för både läsningar och skrivningar stöds.

Feature Kräver Databricks Runtime-version eller senare Documentation
CHECK Begränsningar Alla Databricks Runtime-versioner som stöds CHECK Begränsning
Ändra dataflöde Alla Databricks Runtime-versioner som stöds Använda ändringsdataflöde på Azure Databricks
Genererade kolumner Alla Databricks Runtime-versioner som stöds Delta Lake-genererade kolumner
Kolumnindelning Alla Databricks Runtime-versioner som stöds Byt namn på och släpp kolumner med Delta Lake-kolumnmappning
Identitetskolumner Alla Databricks Runtime-versioner som stöds Identitetskolumner
Tabellfunktionalitet Alla Databricks Runtime-versioner som stöds Protokollversioner och tabellfunktioner
Vektorer för borttagning Alla Databricks Runtime-versioner som stöds Borttagningsvektorer i Databricks
TimestampNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ typ
UniForm Databricks Runtime 13.3 LTS Läsa Delta Lake-tabeller med Iceberg-klienter med UniForm
Klustring av vätska Databricks Runtime 13.3 LTS Använd vätskeklustring för tabeller
Radspårning Databricks Runtime 14.3 LTS Radspårning i Azure Databricks
Breddning av typer Databricks Runtime 15.4 LTS Typbreddning
Variant Databricks Runtime 15.4 LTS Stöd för varianttyp för Apache Iceberg och Delta Lake
Kollationeringar Databricks Runtime 16.1 Sorteringsstöd för Delta Lake
Skyddade kontrollpunkter Databricks Körtid 16.3 Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokoll
Katalogincheckningar Databricks Runtime 16.4 LTS Katalogincheckningar

Se Versions- och kompatibilitetsinformation för Databricks Runtime.

Note

Lakeflow-pipelines och Databricks SQL uppgraderar automatiskt körningsmiljöer med regelbundna versioner för att stödja nya funktioner. Se Viktig information om Lakeflow-pipelines och versionsuppgraderingsprocessen och Viktig information om Databricks SQL.

Funktioner efter protokollversion

Note

Information om Databricks Runtime-kompatibilitet finns i Azure Databricks- och Databricks Runtime-kompatibilitet.

Delta Lake använder separata minReaderVersion värden och minWriterVersion värden för att ange protokollfunktioner. Delta Lake-protokollet med öppen källkod har standardiserats för tabellfunktioner, men vissa klienter använder fortfarande äldre protokollversioner. Eftersom vissa klienter kanske inte stöder alla funktioner rekommenderar Databricks att du verifierar med klientdokumentationen och testar kompatibiliteten innan du aktiverar nya funktioner i produktionstabeller.

Apache Iceberg använder en enda format-version i stället för separata läsare och skrivarversioner. En iceberg-formatversion anger vilka funktioner som är tillgängliga men inte kräver att de används. Funktioner kräver ett aktivt val, förutom radspårning som är obligatorisk i formatversion 3. När en funktion visar N/A i kolumnen Iceberg är det en Delta-specifik funktion utan motsvarande isberg.

I följande tabell visas krav på protokollversioner för Delta Lake- och Apache Iceberg-tabellfunktioner. Funktionstypen anger om en funktion endast måste respekteras för skrivningar eller för både läsningar och skrivningar.

Feature Delta minWriterVersion Delta minReaderVersion Isberg format-version Funktionstyp
Grundläggande funktioner 2 1 1 Författare
CHECK Begränsningar 3 1 N/A Författare
Ändra dataflöde 4 1 N/A Författare
Genererade kolumner 4 1 N/A Författare
Kolumnmappning 5 2 N/A Läsare och skrivare
Identitetskolumner 6 1 N/A Författare
Radspårning 7 1 3 Författare
Borttagningsvektorer 7 3 3 Läsare och skrivare
TidsstämpelNTZ 7 3 1 Läsare och skrivare
Flytande klustring 7 3 1 Läsare och skrivare (1)
Isbergsläsare (UniForm) 7 2 N/A Författare (2)
Typbreddning 7 3 N/A Läsare och skrivare
Variant 7 3 3 Läsare och skrivare
Variantstrimning 7 3 3 Läsare och skrivare
Collationer 7 3 N/A Läsare och skrivare
Skyddade kontrollpunkter 7 1 N/A Författare
Katalogincheckningar 7 3 N/A Läsare och skrivare

(1): Flytande klustring implementerar dold partitionering.

(2): Kräver att kolumnmappning är aktiverat.