Per la trasmissione di grandi volumi di dati tra server SQL vengono utilizzate diverse strategie, tra cui bulk insert, processi ETL (Extract-Transform-Load), replicazione, così come meccanismi di backup/ripristino, db-link e strumenti integrati di esportazione-importazione.
È consigliabile utilizzare meccanismi di trasmissione batch. Un esempio su SQL Server è BULK INSERT per il caricamento di grandi file, oppure SSIS/Integration Services per scenari ETL complessi. In varianti più portabili vengono utilizzati script con logica LIMIT/OFFSET e registrazione della posizione di trasmissione. Per affidabilità si utilizzano spesso:
-- Trasmissione di dati a lotti tra database (PostgreSQL) INSERT INTO target_db.public.data_table (col1, col2) SELECT col1, col2 FROM source_db.public.data_table WHERE transferred = FALSE LIMIT 10000;
Qual è la differenza tra replicazione ed esportazione-importazione, e perché la replicazione non è sempre adatta per la migrazione di grandi archivi storici?
Risposta: La replicazione supporta la sincronizzazione dei cambiamenti attuali e funziona in modo efficiente per i dati "vivi". Per la migrazione di archivi storici, la replicazione può essere insufficiente in termini di velocità e flessibilità, poiché non supporta trasformazioni personalizzate e non risolve il problema della trasmissione batch una tantum — qui si utilizzano più frequentemente ETL.
Storia
L'azienda ha integrato diversi database regionali in un'unica archiviazione. Durante un'importazione massiva senza batch, il sistema si "bloccava" a causa della mancanza di memoria, portando a commit parziali e a un ripristino manuale dello stato. Risolto passando a un'esportazione batch con registrazione dei progressi tramite tabelle di staging.
Storia
A causa di un controllo della somma di controllo non corretto durante la trasmissione di grandi file con BULK INSERT, parte delle informazioni è stata danneggiata, ma questo fatto è stato scoperto solo alcune settimane dopo. La soluzione è stata il ricalcolo delle somme di controllo prima e dopo ogni batch con ripetizione automatica in caso di non conformità.
Storia
Nel tentativo di migrare 100+ milioni di righe tramite l'esportazione-importazione standard, un sviluppatore non ha considerato il gestione dei lock: il blocco delle tabelle sul server di destinazione ha portato a un'interruzione delle operazioni aziendali per diverse ore. Conclusione — per tali compiti utilizzare solo finestre notturne e copia graduale con riindicizzazione temporanea.