Houd je Data Lakehouse snel en efficiënt met VACUUM en OPTIMIZE
Voor onze klanten bouwen onze Creators moderne dataoplossingen op basis van een Data Lakehouse-architectuur in Databricks of Microsoft Fabric. Niels van Velthoven laat zien hoe we met het Medallion Data Management Framework (brons, zilver, goud) en Delta Lake betrouwbare, schaalbare en krachtige oplossingen creƫren, en hoe je met functies als VACUUM en OPTIMIZE je data opgeruimd en snel houdt.
Maar zelfs met een sterke architectuur kan na verloop van tijd een onzichtbaar probleem ontstaan: deltatabellen groeien door, de Delta Logs stapelen zich op en de prestaties lopen langzaam terug.
Waarom je Data Lake steeds trager wordt (en meer kost)
Binnen een Delta Lake is een deltatabel een manier om data op te slaan. Deze tabel krijgt naast de oorspronkelijke inhoud een Delta Log-bestand die alle wijzigingen in de tabel bijhoudt. Hiermee worden ACID-transacties, versiebeheer (time travel) en schema-evolutie mogelijk. Wanneer regels in de tabel bijgewerkt of verwijderd worden, maakt Delta Lake nieuwe versies van de data aan en markeert de oude regels als inactief. De data wordt dan niet daadwerkelijk overgeschreven of verwijderd, zoals in een klassieke data-architectuur.
Als deltatabellen groeien, sla je niet alleen meer data op, maar worden er op de achtergrond ook steeds meer wijzigingen bijgehouden in de Delta Log. Dat heeft als keerzijde dat alle datahistorie blijft bestaan en opslagruimte inneemt. Dat leidt op den duur tot hogere opslagkosten en tragere prestaties. Een query op de data moet namelijk door heel de Delta Log heen om bij de juiste versie van de data terecht te komen.
Houd je Data Lakehouse slank en snel met VACUUM
Om je deltatabellen schoon te houden, kan je de āVACUUMā opdracht gebruiken. Hiermee verwijder je permanent bestanden die niet langer bewaard hoeven worden volgens de Delta transactielog. In een staging omgeving of wanneer je zeker weet dat eerdere versies niet meer nodig zijn, verkort of verleng je de bewaartermijn naar eigen behoefte.
Door VACUUM consequent te gebruiken houd je niet alleen je dataopslag schoon, je voorkomt ook onnodige opslagkosten en beperk je het risico op performanceverlies in je Data Lakehouse.
VACUUM wordt niet standaard toegepast op je Delta Lake. Je gebruikt het commando eenvoudig in PySpark met onderstaande code.
In dit voorbeeld schoont alleen de āsales_dataā-tabel op in de zilveren laag. Het is ook mogelijk om VACUUM toe te passen op bijvoorbeeld de gehele zilveren container met alle tabellen die daarin zijn opgeslagen. In combinatie met een wekelijkse pipeline run die deze notebook oproept en wordt georkestreerd vanuit bijvoorbeeld Azure Data Factory, zorg je ervoor dat je Data Lakehouse altijd netjes schoon blijft.
Versnel je Delta Lake-queryās met OPTIMIZE
Naast het opschonen draait een vlotte Delta Lake-omgeving ook om efficiĆ«nt georganiseerde opslag. De OPTIMIZE-opdracht beperkt het groeiende aantal kleine bestanden die standaard worden gecreĆ«erd. Kleine bestanden worden samengevoegd tot grotere bestanden. Hierdoor hoeft Spark bij het uitvoeren van een query veel minder aparte bestanden te openen en te lezen. Dit versnelt queryās aanzienlijk, zeker bij datastromen met veel schrijfacties zoals bij streaming of micro-batchloads. Hieronder zie je hoe de OPTIMIZE-opdracht wordt toegepast op de āsales_dataā-tabel.
Het enige nadeel van de OPTIMIZE-opdracht: wanneer je deze toepast op een hele container, kost dit redelijk wat tijd. Plan daarom deze actie goed zodat het andere processen in de orkestratie niet in de weg zit.
Waarom regelmatig onderhoud het geheim is van een toekomstbestendig Data Lakehouse
Regelmatig onderhoud is essentieel om maximale prestaties uit je Delta Lake-omgeving te halen. Door VACUUM en OPTIMIZE als vaste beheeracties in te plannen, houd je deltatabellen snel, efficiƫnt en overzichtelijk. Zo blijft je Data Lake toekomstbestendig en kunnen gebruikers vertrouwen op snelle en betrouwbare data.