ProgrammatieBackend ontwikkelaar, Data Engineer, DBA

Vertel hoe je de verwerking en overdracht van grote hoeveelheden gegevens tussen SQL-servers organiseert. Welke mechanismen bestaan er voor batchoverdracht van gegevens en hoe kun je gegevensverlies/beschadiging voorkomen? Geef een voorbeeld van een softwareoplossing.

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord

Voor de overdracht van grote hoeveelheden gegevens tussen SQL-servers worden verschillende strategieën toegepast, waaronder bulk insert, ETL-processen (Extract-Transform-Load), replicatie, evenals mechanismen voor back-up/herstel, db-links en ingebouwde export-importtools.

Het is optimaal om batchmechanismen voor overdracht te gebruiken. Een voorbeeld op SQL Server is BULK INSERT voor het laden van grote bestanden, of SSIS/Integration Services voor complexe ETL-scenario's. In meer draagbare varianten worden scripts gebruikt met logica LIMIT/OFFSET en vastlegging van de overdrachtspositie. Voor betrouwbaarheid wordt vaak toegepast:

  • Gegevensoverdracht in porties met controlesums,
  • Tijdelijke staging-tabellen met daaropvolgende controle van integriteit (check constraints, hashes),
  • Logging van overdrachtsstappen.

Voorbeeld

-- Gegevensoverdracht in porties tussen databases (PostgreSQL) INSERT INTO target_db.public.data_table (col1, col2) SELECT col1, col2 FROM source_db.public.data_table WHERE transferred = FALSE LIMIT 10000;

Strikvraag

Wat is het verschil tussen replicatie en export-import, en waarom is replicatie niet altijd geschikt voor de migratie van grote historische archieven?

Antwoord: Replicatie ondersteunt de synchronisatie van actuele wijzigingen en werkt effectief voor "live" gegevens. Voor de migratie van historische archieven kan replicatie niet snel en flexibel genoeg zijn, omdat het geen aangepaste transformaties ondersteunt en het probleem van eenmalige massatransfers niet oplost - hiervoor wordt meestal ETL gebruikt.

Voorbeelden van echte fouten


Verhaal

Een bedrijf heeft verschillende regionale databases geïntegreerd in één opslag. Bij massale imports zonder batches 'bevond' het systeem zich vanwege een gebrek aan RAM, wat leidde tot partial commit en handmatig herstel van de staat. Dit is opgelost door over te stappen op batchverwerking met logging van de voortgang via staging-tabellen.


Verhaal

Vanwege onjuiste controle van controlesums bij de overdracht van grote bestanden met BULK INSERT, raakte een deel van de informatie beschadigd, maar dit feit werd pas enkele weken later ontdekt. De oplossing was het berekenen van controlesums voor en na elke batch met automatische herhaling bij discrepantie.


Verhaal

Bij een poging om 100+ miljoen rijen te migreren via de standaard export-import, hield een ontwikkelaar geen rekening met lockmanagement: het blokkeren van tabellen op de doelserver leidde tot stilstand van bedrijfsactiviteiten gedurende enkele uren. Conclusie - voor dergelijke taken alleen nachtramen gebruiken en gefaseerde kopie met tijdelijke herindexering.