Migration von SQL Server zu PostgreSQL
Einleitung
Dieses Seminar vermittelt die Methodik, Werkzeuge und Best Practices für eine erfolgreiche Datenbankmigration von Microsoft SQL Server zu PostgreSQL. Teilnehmer erlernen die fundamentalen Architekturunterschiede, das Mapping von Datentypen, die Konvertierung von T-SQL-Code zu PL/pgSQL sowie Strategien für die reibungslose Datenübernahme, das Testing und die abschließende Performance-Optimierung im PostgreSQL-Betrieb.
Zielgruppe & Voraussetzungen
- Zielgruppe: Datenbankadministratoren (DBAs), Datenbankentwickler, Systemarchitekten und Migrationsberater.
- Voraussetzungen: Fundierte Erfahrungen in der Administration und Entwicklung mit Microsoft SQL Server (T-SQL) sowie grundlegende relationale Datenbankkenntnisse.
Detaillierte Inhalte
Architektur- und Konzeptvergleich
- Systemarchitektur: SQL Server Instanz/Datenbanken vs. PostgreSQL Cluster/Datenbanken
- Speichermodell: Filegroups und Transaktionsprotokolle vs. Tablespaces und WAL (Write-Ahead Logging)
- Nebenläufigkeit: Locking/Blocking in SQL Server vs. Multi-Version Concurrency Control (MVCC) in PostgreSQL
- Temporäre Objekte:
tempdbund#temp-Tabellen vs. lokale temporäre Tabellen in PostgreSQL - Systemkataloge: System Views (
sys.*) vs. Information Schema undpg_catalog
Migrationsstrategien und Werkzeuge
- Phasen eines Migrationsprojekts (Assessment, Schema, Daten, Code, Testing, Cutover)
- Migrationsansätze: Big Bang vs. Phasenweise Migration
- Werkzeuge zur automatisierten Migration: AWS Schema Conversion Tool (SCT),
pgloader - Übersicht alternativer Ansätze (z. B. Babelfish for PostgreSQL)
- Kompatibilitätsbewertung und Aufwandsschätzung
Schema- und Strukturmigration
- Mapping der Datentypen (z. B.
DATETIMEzuTIMESTAMP,BITzuBOOLEAN,VARCHAR(MAX)zuTEXT,UNIQUEIDENTIFIERzuUUID) - Konvertierung von
IDENTITY-Spalten zuSERIALoderGENERATED ALWAYS AS IDENTITY - Übertragung von Constraints (Primary Key, Foreign Key, Check, Unique)
- Index-Architektur: Clustered Indexes (SQL Server) vs. Heap Tables mit B-Tree Indexes (PostgreSQL)
- Implementierung von Partitionierung und berechneten Spalten (Computed Columns)
- Umgang mit Case-Sensitivity und Collation-Unterschieden
Code-Migration: T-SQL zu PL/pgSQL
- Syntaxunterschiede zwischen T-SQL und PL/pgSQL
- Migration von Stored Procedures, UDFs und Triggern
- Transaktionssteuerung: Implizite/Explizite Transaktionen und Fehlerbehandlung (
TRY...CATCHzuEXCEPTION-Blöcken) - Ersetzen von T-SQL-Spezifika:
ISNULL/COALESCE,GETDATE()zuCURRENT_TIMESTAMP,TOPzuLIMIT/OFFSET - Konvertierung von temporären Tabellenvariablen (
@table) und Cursorn - Lösungsansätze für fehlende globale Variablen (z. B.
@@ROWCOUNT,@@ERROR) - Anpassung von dynamischem SQL (
sp_executesqlzuEXECUTE)
Datenübernahme und Synchronisation
- Initiale Datenmigration: Massendatenexport/-import (von BCP zu
COPY) - Direkte Datenbankverbindungen: Einsatz des TDS Foreign Data Wrappers (
tds_fdw) als Ersatz für Linked Servers - Change Data Capture (CDC) und logische Replikation für ausfallarme Migrationen (Zero Downtime)
- Behandlung von Zeichensatz- und Encoding-Problemen während des Transfers
Testing, Validierung und Go-Live
- Strategien zur Verifizierung der Datenkonsistenz (Row Counts, Hash-Summen)
- Funktionstests für migrierte Geschäftslogik und Schnittstellen
- Last- und Performancetests auf dem neuen System
- Cutover-Planung und Rollback-Szenarien
Performance-Optimierung und PostgreSQL-Betrieb
- Wichtige Tuning-Parameter in der
postgresql.confim Vergleich zusp_configure - Das Autovacuum-Konzept als Ersatz für SQL Server Index-Rebuild- und Statistik-Wartungspläne
- Performance-Analyse: SQL Server Profiler / Extended Events vs.
pg_stat_statementsundEXPLAIN ANALYZE - Anpassung von Backup- und Recovery-Strategien (Ablösung von SQL Server Backups durch
pg_dumpund kontinuierliche Archivierung/pgBackRest)
Dauer 3 Tage