Für die Übertragung großer Datenmengen zwischen SQL-Servern werden mehrere Strategien angewendet, darunter Bulk Insert, ETL-Prozesse (Extract-Transform-Load), Replikation sowie Backup/Wiederherstellungsmechanismen, db-links und eingebaute Import-/Exportmittel.
Optimal ist die Verwendung von batchweisen (paketweisen) Übertragungsmechanismen. Ein Beispiel für SQL Server ist BULK INSERT zum Laden großer Dateien oder SSIS/Integration Services für komplexe ETL-Szenarien. In tragbareren Varianten werden Skripte mit LOGIK LIMIT/OFFSET und Positionsfixierung verwendet. Um Verlässlichkeit zu gewährleisten, werden häufig angewendet:
-- Übertragung von Daten in Chargen zwischen Datenbanken (PostgreSQL) INSERT INTO target_db.public.data_table (col1, col2) SELECT col1, col2 FROM source_db.public.data_table WHERE transferred = FALSE LIMIT 10000;
Was ist der Unterschied zwischen Replikation und Export-Import, und warum ist Replikation nicht immer für die Migration großer historischer Archive geeignet?
Antwort: Replikation unterstützt die Synchronisierung aktueller Änderungen und funktioniert effizient für "lebendige" Daten. Für die Migration historischer Archive kann die Replikation möglicherweise nicht schnell und flexibel genug sein, da sie keine benutzerdefinierte Transformation unterstützt und das Problem der einmaligen Massenübertragung nicht löst - hier wird häufig ETL verwendet.
Geschichte
Das Unternehmen integrierte mehrere regionale Datenbanken in ein zentrales Lager. Bei der Massenübertragung ohne Batches "hängte" das System aufgrund von unzureichendem Arbeitsspeicher, was zu einem partial commit und manueller Wiederherstellung des Zustands führte. Gelöst durch den Wechsel zur Batch-Entladung mit Protokollierung des Fortschritts über Staging-Tabellen.
Geschichte
Wegen unzureichender Kontrolle der Prüfziffern bei der Übertragung großer Dateien mit BULK INSERT wurde ein Teil der Informationen beschädigt, dieser Fakt wurde jedoch erst mehrere Wochen später entdeckt. Die Lösung war die Neuberechnung der Prüfziffern vor und nach jedem Batch mit automatischem Wiederholen bei Nichtübereinstimmung.
Geschichte
Bei dem Versuch, 100+ Millionen Zeilen über den Standard-Export-Import zu migrieren, hatte ein Entwickler das Lock-Management nicht berücksichtigt: Die Sperrung von Tabellen auf dem Zielserver führte zu einem mehrere Stunden dauernden Ausfall der Geschäftsoperationen. Fazit — für solche Aufgaben sollten nur nächtliche Fenster und schrittweises Kopieren mit temporärer Neuindizierung verwendet werden.