Välj ett datatabellformat

Slutförd

Datatekniker står inför ett kritiskt beslut tidigt i varje datapipeline: vilket tabellformat ska lagra dina data? Det här valet påverkar frågeprestanda, transaktionstillförlitlighet, samverkan med andra plattformar och långsiktigt underhåll av din lakehouse-arkitektur.

Azure Databricks har stöd för flera lagringsformat, var och en utformad för olika scenarier. Att förstå deras skillnader hjälper dig att välja rätt format för dina specifika krav.

Förstå filformat jämfört med tabellformat

Innan du jämför alternativ är det viktigt att skilja mellan filformat och tabellformat. Ett filformat som Parquet, CSV eller JSON definierar hur data lagras fysiskt på disken. Ett tabellformat som Delta Lake eller Apache Iceberg bygger ovanpå filformat genom att lägga till ett metadatalager som spårar transaktioner, schemaändringar och datafilplatser.

Diagram som förklarar filformat jämfört med tabellformat.

Både Delta Lake och Apache Iceberg använder Parquet som sitt underliggande filformat. Den viktigaste skillnaden ligger i metadatalagret som möjliggör avancerade funktioner som ACID-transaktioner, tidsresor och schemautveckling.

Hur Parquet lagrar data på olika sätt

Parquet använder columnar storage i stället för radbaserad lagring. Den här grundläggande skillnaden påverkar prestanda för analytiska frågor avsevärt.

I radbaserade format som CSV organiseras data efter varje post. Läsning av en enskild kolumn kräver genomsökning av varje rad i filen. I kolumnformat som Parquet lagras data för varje kolumn tillsammans. När en fråga bara behöver specifika kolumner läser Parquet bara dessa kolumner och hoppar över resten helt.

Parquet organiserar data i radgrupper som var och en innehåller kolumnsegment. Varje kolumnsegment lagrar statistik, inklusive lägsta och högsta värden för det datasegmentet. När du kör en fråga med ett filtervillkor kontrollerar frågemotorn statistiken först. Om filtervärdet ligger utanför intervallet min/max för en radgrupp hoppar motorn över att läsa hela avsnittet.

Diagram som förklarar hur parquet lagrar data på olika sätt.

Den här kolumnmetoden innehåller två optimeringstekniker som avsevärt förbättrar analysprestandan:

  • Kolumnrensning: Motorn läser endast kolumnerna som dina frågereferenser refererar till, vilket minskar I/O avsevärt.
  • Predikat-pushdown: Filtervillkor utvärderas mot kolumnstatistik innan data läss, vilket hoppar över irrelevanta radgrupper helt.

För analytiska arbetsbelastningar som vanligtvis har åtkomst till en delmängd av kolumner över många rader överträffar Parquet i stort sett radbaserade format.

Delta Lake som standardformat

Delta Lake är standardlagringsformatet för alla tabeller i Azure Databricks. När du skapar en tabell utan att ange ett format använder Azure Databricks automatiskt Delta Lake.

Delta Lake utökar Parquet-filer med en transaktionslogg som registrerar varje ändring i tabellen. Den här loggen möjliggör flera funktioner som Parquet inte tillhandahåller:

  • ACID-transaktioner: Flera samtidiga läsare och skrivare kan komma åt samma tabell utan skadade data. Varje transaktion slutförs helt eller har ingen effekt.

  • Tidsresa: Fråga tidigare versioner av tabellen med hjälp av tidsstämplar eller versionsnummer. Återställ ändringar om det behövs.

  • Schemahantering och schemastyrning: Tabellen validerar inkommande data mot sitt definierade schema, vilket förhindrar att skadade eller inkompatibla data kommer in i er lakehouse. När kraven ändras kan du lägga till nya kolumner, ändra datatyper eller byta namn på kolumner utan att skriva om befintliga data.

  • Enhetlig batch och direktuppspelning: Använd samma tabell som både en batchkälla och en strömmande källa eller mottagare.

Delta Lake integreras djupt med Azure Databricks-plattformen. Funktioner som flytande klustring och förutsägelseoptimering är tillgängliga för både Delta Lake- och hanterade Apache Iceberg-tabeller i Unity Catalog. Ändringsdataflöde är dock specifikt för Delta Lake och förlitar sig på dess transaktionslogg.

För de flesta scenarier i Azure Databricks är Delta Lake det rekommenderade valet. Det ger prestandafördelarna med Parquet med transaktionsgarantier som produktionsdatasystem kräver.

Apache Iceberg för plattformsoberoende scenarier

Apache Iceberg är ett alternativt öppet tabellformat som Azure Databricks stöder för hanterade och externa tabeller. Liksom Delta Lake tillhandahåller Iceberg ACID-transaktioner, schemautveckling och tidsresefunktioner som bygger på Parquet-filer.

Icebergs hierarkiska och väldefinierade logiska struktur gör den mycket flexibel och stöder skalbarhet och avancerade optimeringar. Den stöder manifestrensning, statistik på filnivå, dold partitionering och partitionsutveckling.

Diagram som förklarar Apache Iceberg-layout.

Det främsta skälet till att välja Iceberg är samverkan. Isberg används ofta i dataekosystemet, inklusive plattformar som Snowflake, Amazon Athena, Trino, Apache Spark och Apache Flink. Om din organisation kör arbetsbelastningar på flera plattformar som behöver läsa och skriva samma tabeller tillhandahåller Iceberg ett gemensamt format som alla plattformar förstår.

Unity Catalog kan hantera isbergstabeller direkt, vilket gör att Azure Databricks kan fungera som en Isbergskatalog för externa motorer. Du kan också läsa Iceberg-tabeller som hanteras av andra kataloger som AWS Glue eller Snowflake Horizon Catalog via externa tabellanslutningar.

Tänk på Isberg när:

  • Dina data måste nås av flera bearbetningsmotorer utanför Azure Databricks.
  • Din organisation har standardiserats på Iceberg för plattformsoberoende datadelning.
  • Du integrerar med system som inte stöder Delta Lake.

För arbetsbelastningar som främst körs i Azure Databricks förblir Delta Lake det rekommenderade formatet på grund av dess djupare funktioner för plattformsintegrering och optimering.

När radbaserade format gäller

CSV och JSON är fortfarande giltiga val för specifika scenarier, även om de är mindre effektiva för storskalig analys.

Använd CSV eller JSON när:

  • Du tar emot data från externa system i dessa format som en första landningszon.
  • Du behöver läsbara data för felsökning eller snabb inspektion.
  • Du integrerar med system som bara stöder textbaserade format.
  • Datavolymerna är så små att prestandaskillnaderna är försumbara.

För beständig lagring av analysdata konverterar du inkommande CSV- eller JSON-filer till Delta Lake-tabeller under inmatning. Den här konverteringen samlar in effektivitetsvinster för kolumnbaserad lagring samtidigt som transaktionsgarantier läggs till.

Tillämpa beslutsvillkor

Om du väljer ett tabellformat beror det på dina specifika krav. Börja med Delta Lake som standardval och utvärdera sedan endast alternativ när specifika begränsningar kräver dem.

Att tänka på Delta Lake Apache Iceberg CSV/JSON
Analytikprestanda Utmärkt Utmärkt Fattig
ACID-transaktioner Yes Yes Nej
Tidsresa Yes Yes Nej
Azure Databricks-integrering Djup Understödd Grundläggande
Plattformsoberoende kompatibilitet Växande Bred Universal
Rekommenderas för produktion Yes Ja (när interop krävs) Nej (endast landningszon)

Ditt val beror också på organisationens standarder. Om ditt arkitekturteam har upprättat konventioner för tabellformat kan du anpassa dem till dessa beslut för att upprätthålla konsekvens i dataplattformen.