>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

Een terabyte Postgres-database in tien seconden klonen

Iedere backend-ontwikkelaar heeft minstens één keer staging laten crashen met een mislukte migratie, of een zware SQL-query getest op synthetische data van vijf rijen, om vervolgens een deadlock te krijgen op een tabel in productie voor een half uur. Testen op echte datavolumes is altijd moeilijk en duur: een terabyte-database is moeilijk lokaal op te zetten, en tien volledige kopieën in de cloud voor elke ontwikkelaar kost een hoop geld.

Engineers van Postgres.ai lossen dit probleem op met het Database Lab Engine (DBLab) hulpprogramma. Het project maakt dunne klonen van Postgres-databases van elke omvang in letterlijk enkele seconden mogelijk, zonder terabytes aan schijfruimte per kloon te verbruiken.

Onder de motorkap

Alle magie van dunne klonen is gebaseerd op het Copy-on-Write (CoW) mechanisme. Standaard gebruikt DBLab het ZFS-bestandssysteem, maar kan ook via LVM werken.

Het schema is eenvoudig:

  • De engine houdt een up-to-date basis-snapshot van de data (PGDATA) bij, gesynchroniseerd met de primaire database via replicatie, dumps of fysieke back-ups (WAL-G, pgBackRest).
  • Wanneer een ontwikkelaar of CI-pipeline een database-instantie nodig heeft, maakt DBLab een snapshot en start een geïsoleerde Postgres in een Docker-container.
  • Alle schrijfoperaties gaan naar een aparte CoW-laag. Basisbestanden blijven ongewijzigd, waardoor het klonen van 1 TB aan data ongeveer 10 seconden duurt en aan het begin slechts een paar megabytes aan schijfruimte nodig heeft.

Je kunt tientallen van zulke onafhankelijke databases op één server draaien, en ontwikkelaars kunnen veilig DROP TABLE uitvoeren of destructieve migraties uitvoeren zonder het risico te lopen iets kapot te maken voor hun collega's.

Wat DBLab kan doen

De repository bevat een fundament voor het automatiseren van werk met datasnapshots:

  • Database branching. Je kunt schakelen tussen verschillende branches en timestamps, wijzigingen terugdraaien met het reset commando, en terugkeren naar elke gewenste status.
  • Ondersteuning voor PostgreSQL-versies 10 tot en met 18, inclusief populaire extensies zoals pgvector en HypoPG.
  • Ingebouwde beschermingsmechanismen: automatische verwijdering van oude ongebruikte klonen op basis van timeout en retentiebeleid voor snapshots.
  • Integratie met beheerde clouddatabases. Als je op AWS RDS, GCP Cloud SQL of Supabase zit waar er geen directe bestandssysteemtoegang is, kan DBLab worden geïmplementeerd op een aparte virtuele machine ernaast en geconfigureerd voor periodieke automatische updates van data.
  • Kant-en-klare beheerinterfaces: REST API, het dblab CLI console-hulpprogramma en een webinterface.

Praktische scenario's

Migraties testen in CI/CD

Voordat een release wordt uitgerold, start de pipeline een verse kloon van de echte productiedatabase, past de migratie toe en meet de uitvoeringstijd en locks. Als de migratie een exclusieve lock neemt op een zware tabel of mislukt met een fout, signaleert de pipeline dit onmiddellijk. Na de test wordt de kloon direct verwijderd.

Complexe SQL-queries en hypothesen testen

Het optimaliseren van een trage query op een lege database heeft geen zin: de Postgres planner kiest totaal andere uitvoeringsplannen voor 10 rijen versus 10 miljoen rijen. Een kloon in DBLab geeft je een eerlijk EXPLAIN (ANALYZE, BUFFERS) op productieschaal data zonder het risico de live database te overbelasten.

Code van LLM's testen

Als je een AI vraagt om een complexe analytische query of dataschema te genereren, is de kans groot dat je een hallucinaties krijgt. Een kloon biedt een geïsoleerde sandbox waar je de gegenereerde code snel kunt uitvoeren en de correctheid kunt verifiëren.

Voor wie is dit project bedoeld

Als je projectdatabase een paar gigabytes is, is het opzetten van infrastructuur met ZFS en DBLab waarschijnlijk overkill—gebruik gewoon een gewone dump.

Maar als Postgres is gegroeid tot honderden gigabytes of terabytes, en je team uren besteedt aan handmatige voorbereiding van testomgevingen en elke migratie vreest, zal de Database Lab Engine een hoop zenuwen en geld besparen op cloudinfrastructuur.

De broncode van de engine is open onder de Apache 2.0-licentie. Je kunt de Community-versie op je eigen server proberen volgens de officiële handleiding in de documentatie, of de publieke demo testen op demo.dblab.dev.

Gerelateerde projecten