Revisionssporet er en tabel: Delta Lake, Iceberg eller Hudi

En revisor stiller et enkelt spørgsmål om en betaling, der blev godkendt i marts: hvad så den person, der godkendte den, på skærmen, og hvad havde den agent, der udarbejdede den, læst, før den foreslog den? I de fleste virksomheder er svaret en rekonstruktion. Nogen henter en sikkerhedskopi, en anden søger i en indbakke, og resultatet er et kvalificeret gæt på en tilstand, der ikke længere findes.
I Hurukan er hvert agentforslag og hver menneskelig beslutning en hændelse i virksomhedens register, og registret er designet, så det spørgsmål har et klart svar: en version af tabellerne, som de stod i det øjeblik. Den egenskab kommer ikke fra filerne. Den kommer fra tabelformatet oven på dem. Denne tekst handler om, hvad de tre åbne tabelformater gør med spørgsmålet, og hvordan man vælger mellem dem. Datalaget er under opbygning; det følgende er, hvordan det designes. Begrundelsen for overhovedet at have et register findes i den levende tilstand og registret.
Hvad et revisionsspor kræver af en tabel
Filer i registret redigeres aldrig. En ændring skriver nye filer og en ny version af tabellens metadata, der siger, hvilke filer der nu tæller. Tre ting følger for revisionen.
Hver version kan adresseres. “Tabellen, som den var 14:02 den 12. marts” skal være en gyldig forespørgsel, ikke et gendannelsesjob. I formaterne nedenfor er det tidsrejse (time travel), og det er mekanismen bag “hvad så agenten”.
Hver version har en ophavsmand. Metadataene for en ændring skal bære, hvem eller hvad der lavede den: en person, en agent, der handler på en persons godkendelse, eller en systemopgave som komprimering. Hurukan registrerer aktøren i sin egen beslutningslog, men tabelversionen er beviset for, at loggen stemmer med dataene.
Gamle versioner udløber med vilje, ikke ved et uheld. At beholde hver version for evigt er en omkostning; at fjerne dem er en beslutning om opbevaring og, for personoplysninger, om sletning. Den beslutning tilhører et menneske, og tabelformatet skal gøre den eksplicit.
Tre måder at holde tegningen på
Hvert format holder en tegning over, hvilke filer der udgør tabellen. Tegningen er der, hvor revisionen bor.
Delta Lake holder en log: en mappe _delta_log/ med én JSON-fil pr. commit, navngivet med et
tyvecifret versionsnummer, hver med handlinger som add, remove, metaData og protocol, med
periodiske Parquet-kontrolpunkter, så en læser ikke afspiller hele historikken.
Protokollen definerer det; den aktuelle
udgivelse er 4.4.0 (kontrolleret den 21. oktober
2026). Logopbevaring er som standard 30 dage og VACUUM 7 dage, hvilket betyder, at tidsrejsen kun
når så langt tilbage, som de to indstillinger tillader.
Apache Iceberg holder et træ: en tabelmetadatafil peger på et øjebliksbillede, øjebliksbilledet på en manifestliste, manifesterne på data- og sletningsfiler med deres statistik. En commit er en atomar ombytning af pegepinden til metadatafilen, og ombytningen sker i kataloget. Specifikationen er i version 3, med sletningsvektorer, rækkeafstamning og typen VARIANT; den aktuelle udgivelse er 1.12.0 (kontrolleret den 21. oktober 2026).
Apache Hudi holder en tidslinje: hver handling på tabellen — commit, komprimering, oprydning, tilbagerulning, gendannelse — er et øjeblik med en tilstand, og tidslinjens historik arkiveres i en LSM-struktur. Poster har nøgler og et indeks, så en ændring af én kunde rører én filgruppe snarere end en partition. Tabeller er Copy-on-Write eller Merge-on-Read, og udgivelse 1.2.1 tilføjede tabelversion 9 (kontrolleret den 21. oktober 2026). Dokumentationen om tidslinjen beskriver tilstandene.
Alle tre svarer revisoren. Forskellen er, hvor svaret opbevares, og hvem der ellers kan læse det.
Vælg efter katalog, ikke efter funktionsliste
Funktionslisterne er konvergeret: transaktioner, tidsrejse, skemaudvikling, sletning på rækkeniveau og streamede skrivninger findes i dem alle. Det, der ikke er konvergeret, er stedet, hvor den aktuelle version af en tabel erklæres, og det sted er der, hvor suveræniteten afgøres.
For Delta Lake er det selve logmappen, så enhver motor, der kan læse lageret, kan finde den aktuelle version. I praksis er kataloget omkring det Unity Catalog eller, i Microsoft Fabric, OneLake, som gemmer sine tabeller som Delta Parquet ifølge Microsofts dokumentation.
For Iceberg er det katalogpegepinden, og kataloget taler en åben REST-specifikation. Apache Polaris, et topniveauprojekt siden februar 2026 med udgivelse 1.8.0, implementerer den; Snowflake, AWS S3 Tables, Googles lakehouse-katalog og Databricks læser og skriver alle Iceberg-tabeller gennem den (kontrolleret den 21. oktober 2026).
For Hudi er det tidslinjen på lageret, læst indbygget af Spark, Flink, Trino og Presto; andre platforme når generelt en Hudi-tabel gennem metadataoversættelse.
Så spørgsmålet for en virksomhed er ikke “hvilket format har den bedste revision”. Det er: på hvis infrastruktur kører kataloget, hvilke motorer skal læse registret, og kan registret tages med, hvis leverandøren skifter? Hurukans svar er, at kataloget og filerne kører på infrastruktur, virksomheden vælger, som beskrevet under sikkerhed og suverænitet, og at formatet følger af de motorer, virksomheden allerede har, snarere end omvendt.
Hvad der bliver hos mennesker
Agenter er gode til den mekaniske del af datalaget: at udarbejde komprimeringsplanen, skrive det job, der lader gamle øjebliksbilleder udløbe, foreslå en partitionsændring, når forespørgsler bliver langsomme. Hvert af disse er et forslag i godkendelsesindbakken, med begrundelsen vedhæftet, og hvert registreres, når det godkendes. Tre beslutninger uddelegeres aldrig.
Opbevaring og sletning. Hvor langt tilbage tidsrejsen når, er den samme indstilling som hvor længe personoplysninger overlever en anmodning om sletning. Et menneske sætter den pr. tabel og skriver under.
Protokolopgraderinger. At aktivere en nyere tabelfunktion kan lukke en ældre motor ude, som stadig læser registret. Gevinsten er reel; det er den læser, der går i sort, også. Et menneske vejer det.
Selve formatet. At skifte det senere er muligt, som den næste tekst i serien om XTable og UniForm forklarer, men det er et projekt, ikke en indstilling.
En test, du kan lave i dag
Tag én beslutning fra sidste kvartal, som en revisor plausibelt kunne spørge om: en hævet kreditgrænse, en godkendt leverandør, en bevilget rabat. Skriv ned, alene ud fra dine systemer, hvad beslutningstageren så i det øjeblik. Tæl de systemer, du skulle åbne, og de steder, hvor du måtte gætte. Det tal er afstanden mellem dit nuværende register og ét, hvis revisionsspor er en tabel.
- tabelformater
- Delta Lake
- Apache Iceberg
- Apache Hudi
- revisionsspor