Het auditspoor is een tabel: Delta Lake, Iceberg of Hudi

Een auditor stelt een eenvoudige vraag over een betaling die in maart is goedgekeurd: wat zag de persoon die haar goedkeurde op het scherm, en wat had de agent die haar opstelde gelezen voordat hij haar voorstelde? In de meeste bedrijven is het antwoord een reconstructie. Iemand haalt een back-up op, iemand anders doorzoekt een mailbox, en het resultaat is een onderbouwde gok over een toestand die niet meer bestaat.
In Hurukan is elk voorstel van een agent en elk menselijk besluit een gebeurtenis in het register van het bedrijf, en het register is zo ontworpen dat deze vraag een helder antwoord heeft: een versie van de tabellen zoals ze op dat moment stonden. Die eigenschap komt niet uit de bestanden. Ze komt uit het tabelformaat erbovenop. Deze tekst gaat over wat de drie open tabelformaten met die vraag doen, en hoe u ertussen kiest. De laag Data is in aanbouw; wat volgt is hoe ze wordt ontworpen. De redenering om überhaupt een register te hebben staat in de actuele toestand en het register.
Wat een auditspoor van een tabel vraagt
Bestanden in het register worden nooit bewerkt. Een wijziging schrijft nieuwe bestanden en een nieuwe versie van de tabelmetadata die zegt welke bestanden nu tellen. Drie dingen volgen daaruit voor de audit.
Elke versie is adresseerbaar. “De tabel zoals op 12 maart om 14.02 uur” moet een geldige query zijn, geen hersteltaak. In de formaten hieronder is dit tijdreizen (time travel), en het is het mechanisme achter “wat zag de agent”.
Elke versie heeft een auteur. De metadata van een wijziging moet dragen wie of wat haar maakte: een mens, een agent die handelt op goedkeuring van een mens, of een systeemtaak zoals compactie. Hurukan legt de actor vast in zijn eigen besluitenlog, maar de tabelversie is het bewijs dat het log klopt met de data.
Oude versies verlopen opzettelijk, niet per ongeluk. Elke versie voor altijd bewaren kost geld; ze verwijderen is een beslissing over bewaartermijnen en, voor persoonsgegevens, over wissen. Die beslissing hoort bij een mens, en het tabelformaat moet haar expliciet maken.
Drie manieren om het bouwplan bij te houden
Elk formaat houdt een plan bij van welke bestanden de tabel vormen. Het plan is waar de audit leeft.
Delta Lake houdt een log bij: een map _delta_log/ met één JSON-bestand per commit, genoemd
naar een versienummer van twintig cijfers, elk met acties als add, remove, metaData en
protocol, met periodieke Parquet-checkpoints zodat een lezer niet de hele geschiedenis afspeelt.
Het protocol definieert het; de huidige
release is 4.4.0 (gecontroleerd op 21 oktober 2026).
De logbewaartermijn is standaard 30 dagen en VACUUM 7 dagen, wat betekent dat tijdreizen slechts
zo ver teruggaat als die twee instellingen toelaten.
Apache Iceberg houdt een boom bij: een tabelmetadatabestand wijst naar een momentopname, de momentopname naar een manifestlijst, de manifesten naar data- en verwijderbestanden met hun statistieken. Een commit is een atomaire verwisseling van de verwijzing naar het metadatabestand, en die verwisseling gebeurt in de catalogus. De specificatie staat op versie 3, met verwijdervectoren, rijafstamming en het type VARIANT; de huidige release is 1.12.0 (gecontroleerd op 21 oktober 2026).
Apache Hudi houdt een tijdlijn bij: elke actie op de tabel — commit, compactie, opschonen, terugdraaien, herstellen — is een instant met een status, en de geschiedenis van de tijdlijn wordt gearchiveerd in een LSM-structuur. Records hebben sleutels en een index, zodat een wijziging aan één klant één bestandsgroep raakt in plaats van een partitie. Tabellen zijn Copy-on-Write of Merge-on-Read, en release 1.2.1 voegde tabelversie 9 toe (gecontroleerd op 21 oktober 2026). De documentatie van de tijdlijn beschrijft de statussen.
Alle drie geven de auditor antwoord. Het verschil is waar het antwoord wordt bewaard en wie het verder nog kan lezen.
Kies op catalogus, niet op functielijst
De functielijsten zijn naar elkaar toe gegroeid: transacties, tijdreizen, schema-evolutie, verwijderingen op rijniveau en streaming schrijven bestaan in elk van de drie. Wat niet is samengekomen, is de plek waar de huidige versie van een tabel wordt gedeclareerd, en die plek is waar soevereiniteit wordt beslist.
Voor Delta Lake is dat de logmap zelf, zodat elke engine die de opslag kan lezen de huidige versie kan vinden. In de praktijk is de catalogus eromheen Unity Catalog of, in Microsoft Fabric, OneLake, dat zijn tabellen opslaat als Delta Parquet volgens de documentatie van Microsoft.
Voor Iceberg is dat de verwijzing in de catalogus, en de catalogus spreekt een open REST-specificatie. Apache Polaris, sinds februari 2026 een top-level project met release 1.8.0, implementeert haar; Snowflake, AWS S3 Tables, de lakehouse-catalogus van Google en Databricks lezen en schrijven er allemaal Iceberg-tabellen doorheen (gecontroleerd op 21 oktober 2026).
Voor Hudi is dat de tijdlijn op de opslag, direct gelezen door Spark, Flink, Trino en Presto; andere platforms bereiken een Hudi-tabel doorgaans via metadatavertaling.
De vraag voor een bedrijf is dus niet “welk formaat heeft de beste audit”. Ze luidt: op wiens infrastructuur draait de catalogus, welke engines moeten het register lezen, en kan het register mee als de leverancier verandert? Het antwoord van Hurukan is dat de catalogus en de bestanden draaien op infrastructuur die het bedrijf kiest, zoals beschreven onder beveiliging en soevereiniteit, en dat het formaat volgt uit de engines die het bedrijf al heeft en niet andersom.
Wat bij mensen blijft
Agents zijn goed in het mechanische deel van de laag Data: het compactieschema opstellen, de taak schrijven die oude momentopnamen laat verlopen, een partitiewijziging voorstellen wanneer query’s trager worden. Elk daarvan is een voorstel in de goedkeuringsinbox, met de redenering erbij, en elk wordt vastgelegd wanneer het is goedgekeurd. Drie beslissingen worden nooit gedelegeerd.
Bewaartermijn en wissen. Hoe ver tijdreizen teruggaat is dezelfde instelling als hoe lang persoonsgegevens een wisverzoek overleven. Een mens stelt het per tabel in en tekent ervoor.
Protocolupgrades. Een nieuwere tabelfunctie inschakelen kan een oudere engine buitensluiten die het register nog leest. De winst is echt; de lezer die uitvalt ook. Een mens weegt het af.
Het formaat zelf. Het later veranderen is mogelijk, zoals de volgende tekst in deze reeks over XTable en UniForm uitlegt, maar het is een project, geen instelling.
Een test die u vandaag kunt doen
Neem één besluit van vorig kwartaal waarover een auditor redelijkerwijs zou kunnen vragen: een verhoogde kredietlimiet, een goedgekeurde leverancier, een toegekende korting. Schrijf, alleen op basis van uw systemen, op wat de beslisser op dat moment zag. Tel de systemen die u moest openen en de plekken waar u moest raden. Dat aantal is de afstand tussen uw huidige register en een register waarvan het auditspoor een tabel is.
- tabelformaten
- Delta Lake
- Apache Iceberg
- Apache Hudi
- auditspoor