Przejdź do treści głównej
Migracja Baz Danych

Migracja z SQL Server do PostgreSQL: Kompletny Przewodnik 2025

9 min czytaniaMichał Wojciechowski
Serwery baz danych w centrum danych

Koszty licencji SQL Server mogą pochłaniać 20-30% budżetu IT. Przy cenie SQL Server Enterprise na poziomie $14,000 za rdzeń i Standard $3,700 za rdzeń, organizacje zarządzające wieloma bazami danych płacą rocznie setki tysięcy dolarów. PostgreSQL, potężna alternatywa open-source, oferuje funkcje na poziomie enterprise z zerowym kosztem licencji.

Pomagałem wielu organizacjom migrować z SQL Server na PostgreSQL, osiągając redukcję kosztów o 60-70% przy zachowaniu lub poprawie wydajności. Ten przewodnik opisuje wszystko od wstępnej oceny po wdrożenie produkcyjne, bazując na prawdziwych migracjach baz od 50GB do 2TB, podobnie jak przy innych projektach modernizacji starych systemów.

01Dlaczego firmy migrują z SQL Server

Decyzja o migracji to nie tylko kwestia kosztów. Według rankingu DB-Engines, PostgreSQL urósł na 4. miejsce globalnie (z 13. w 2013 roku), podczas gdy SQL Server pozostał na 3. miejscu. Przejście na nowoczesną infrastrukturę chmurową z PostgreSQL oferuje znaczące korzyści:

Porównanie Kosztów

SQL Server Enterprise

$14,256/rdzeń (ceny 2025)

+ ~20% Software Assurance rocznie

SQL Server Standard

$3,717/rdzeń (ceny 2025)

Limit 24 rdzenie, 128GB RAM

PostgreSQL

$0 (open source)

Opcjonalny support komercyjny $2-5K/rok

Zalety PostgreSQL

  • Zaawansowane indeksy (GiST, GIN, BRIN, Bloom)
  • Natywne wsparcie JSON/JSONB (szybsze niż SQL Server)
  • Lepsze wyszukiwanie pełnotekstowe
  • Rozszerzalność (PostGIS, pgvector, TimescaleDB)
  • Cloud-native (AWS RDS, Azure, GCP)
  • Aktywna społeczność open-source

Prawdziwy Przykład Kosztów

Organizacja z 3 serwerami produkcyjnymi (16 rdzeni każdy):

SQL Server Enterprise: 3 serwery × 16 rdzeni × $14,256 = $684,288 wstępnie + $136,857/rok SA = $821,145 pierwszy rok

PostgreSQL w Azure: 3 × Managed PostgreSQL (16 vCores, 64GB RAM) ≈ $1,800/miesiąc = $21,600/rok

Oszczędności: $799,545 pierwszy rok, $115K rocznie później (sprawdź więcej strategii optymalizacji kosztów Azure)

Migracja danych pomiędzy systemami

02Typowe Wyzwania Migracji

1. Konwersja T-SQL na PL/pgSQL

T-SQL w SQL Server ma własnościową składnię, której nie ma w PostgreSQL. Główne różnice:

SQL Server T-SQL

-- Kolumny Identity
CREATE TABLE users (
  id INT IDENTITY(1,1),
  name NVARCHAR(100)
);

-- Funkcje dat
SELECT GETDATE(), DATEADD(day, 7, OrderDate)

-- Konkatenacja stringów
SELECT 'Hello' + ' ' + 'World'

-- Słowo TOP
SELECT TOP 10 * FROM orders

-- Zmienne
DECLARE @count INT
SET @count = (SELECT COUNT(*) FROM users)

PostgreSQL PL/pgSQL

-- Serial/Sequences
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100)
);

-- Funkcje dat
SELECT NOW(), OrderDate + INTERVAL '7 days'

-- Konkatenacja stringów
SELECT 'Hello' || ' ' || 'World'

-- Słowo LIMIT
SELECT * FROM orders LIMIT 10

-- Zmienne
DO $$
DECLARE count_val INT;
BEGIN
  SELECT COUNT(*) INTO count_val FROM users;
END $$;

2. Mapowanie Typów Danych

SQL ServerPostgreSQLUwagi
NVARCHAR(n)VARCHAR(n)PostgreSQL domyślnie używa UTF-8
DATETIME, DATETIME2TIMESTAMPUżyj TIMESTAMP WITH TIME ZONE dla spójności
UNIQUEIDENTIFIERUUIDUżyj rozszerzenia uuid-ossp
IMAGE, VARBINARY(MAX)BYTEARozważ object storage dla dużych plików
XMLXMLBezpośrednie mapowanie, podobne wsparcie XPath

3. Alternatywy dla SSIS, SSRS i SQL Agent

  • SSIS →
    Apache Airflow, Pentaho, Talend

    Nowoczesna orkiestracja z lepszym monitoringiem i schedulingiem

  • SSRS →
    Grafana, Metabase, Apache Superset

    Nowoczesne narzędzia BI z lepszą wizualizacją i dashboardami

  • SQL Agent →
    rozszerzenie pg_cron, Airflow, cron + skrypty

    pg_cron zapewnia podobny scheduling wewnątrz PostgreSQL

Nowoczesne centrum danych z serwerami

03Strategia Migracji

Faza 1: Ocena (1-2 tygodnie)

  • Analiza schematu - Policz tabele, widoki, procedury, funkcje, triggery
  • Przegląd kodu - Zidentyfikuj składnię specyficzną dla T-SQL wymagającą konwersji
  • Mapowanie zależności - Połączenia aplikacji, joby ETL, raporty, API
  • Baseline wydajności - Obecna wydajność zapytań, metryki szczytowego obciążenia
  • Wybór narzędzia migracji - Zdecyduj między pgLoader, AWS SCT, własne skrypty

Faza 2: Planowanie (1-2 tygodnie)

Wybór Podejścia Migracji

Migracja Big-Bang

Jednorazowe przełączenie w weekend

✓ Proste, szybkie (1-3 dni downtime)

✗ Wysokie ryzyko, pełny rollback przy problemach

Najlepsze dla: Małe bazy, niekrytyczne apki

Migracja Fazowa

Stopniowo tabela po tabeli lub moduł po module

✓ Niższe ryzyko, minimalny downtime, łatwy rollback

✗ Złożony dual-write, dłuższy timeline

Najlepsze dla: Duże bazy, aplikacje krytyczne (szczególnie w architekturze multi-tenant)

Chmurowa infrastruktura bazodanowa

Faza 3: Wykonanie (2-12 tygodni)

  1. 1
    Migracja Schematu

    Konwertuj skrypty DDL, twórz tabele, indeksy, constrainty w PostgreSQL

  2. 2
    Migracja Danych

    Użyj pgLoader lub BCP → CSV → COPY dla masowego transferu danych

  3. 3
    Procedury/Funkcje Składowane

    Konwertuj T-SQL na PL/pgSQL, testuj równoważność logiki

  4. 4
    Aktualizacje Aplikacji

    Zaktualizuj connection stringi, mapowania ORM (EF Core, Dapper), składnię zapytań - podobnie jak przy migracji aplikacji .NET

  5. 5
    Testowanie

    Testy jednostkowe, integracyjne, wydajnościowe, walidacja danych

Faza 4: Walidacja i Przełączenie (1-2 tygodnie)

Sprawdzanie Integralności Danych

Liczba wierszy, sumy kontrolne, porównanie przykładowych danych między SQL Server a PostgreSQL

Testy Wydajności

Testy obciążeniowe z obciążeniem produkcyjnym, optymalizacja zapytań, tunowanie indeksów

Plan Przełączenia

Finalna synchronizacja, przekierowanie ruchu, monitoring metryk przez 48-72h, SQL Server read-only jako fallback

04Porównanie Narzędzi Migracji

NarzędzieNajlepsze DoZaletyWady
pgLoaderMałe-średnie bazyDarmowy, szybki, automatyczna konwersja typówOgraniczona konwersja procedur
AWS Schema Conversion ToolMigracje AWSDarmowy, kompleksowy, ocena migracjiSkierowany na AWS, skomplikowana konfiguracja
Ispirer SQLWaysZłożone migracjeSupport komercyjny, obsługuje złożony T-SQLDrogi ($5K-$50K), własnościowy
Własne SkryptyUnikalne wymaganiaPełna kontrola, dopasowane do potrzebCzasochłonne, wymaga ekspertyzy

Rekomendowane Podejście

Zazwyczaj używam podejścia hybrydowego: pgLoader dla schematu i danych + własne skrypty dla procedur. To balansuje automatyzację z kontrolą.

-- Przykładowa konfiguracja pgLoader
LOAD DATABASE
  FROM mssql://user:pass@sqlserver:1433/ProductionDB
  INTO postgresql://user:pass@postgres:5432/ProductionDB

WITH include drop, create tables, create indexes, reset sequences,
     workers = 8, concurrency = 1

SET maintenance_work_mem TO '512MB',
    work_mem TO '128MB'

CAST type datetime to timestamptz drop default drop not null using zero-dates-to-null,
     type uniqueidentifier to uuid using byte-vector-to-bytea;

05Case Study z Prawdziwego Projektu

Migracja Platformy E-commerce

Stan Przed

  • • SQL Server 2016 Standard (3 serwery)
  • • Baza 350GB (850 tabel)
  • • 200 procedur składowanych
  • • 15 paczek SSIS
  • • Licencje: $89K/rok (3×16 rdzeni)
  • • Wydajność: szczyt 2,500 TPS

Stan Po

  • • PostgreSQL 15 w Azure (managed)
  • • Ta sama 350GB (zoptymalizowana do 310GB)
  • • Wszystkie procedury skonwertowane na PL/pgSQL
  • • Apache Airflow dla ETL
  • • Koszt: $28K/rok (managed PostgreSQL)
  • • Wydajność: szczyt 3,200 TPS (+28%)

Timeline Migracji (10 tygodni)

Tydzień 1-2: Ocena i planowanie$12K czas konsultanta
Tydzień 3-5: Migracja schematu + danych z pgLoader$18K czas dev
Tydzień 6-8: Konwersja procedur, aktualizacje aplikacji$24K czas dev
Tydzień 9: Testowanie, tunowanie wydajności$8K QA + dev
Tydzień 10: Przełączenie i walidacja$6K czas ops
Całkowity Koszt Migracji$68K

Rezultaty Po 12 Miesiącach

$61K

Oszczędności roczne

$89K → $28K licencje

28%

Poprawa wydajności

Lepsze indeksy + optymalizacja zapytań

Zero

Incydentów produkcyjnych

Gładka migracja, zero utraty danych

ROI: Migracja zwróciła się w 13 miesięcy. Oszczędności TCO na 5 lat: $305K. Dowiedz się więcej o kwantyfikacji długu technicznego dla lepszego uzasadnienia biznesowego.

Zespół IT współpracujący przy migracji bazy danych

06Najczęściej Zadawane Pytania

Ile czasu trwa migracja z SQL Server do PostgreSQL?

Czas migracji zależy od rozmiaru i złożoności bazy danych. Mała baza (10-50GB, 100 tabel) zazwyczaj zajmuje 2-4 tygodnie łącznie z testami. Średnie bazy (100-500GB, 500 tabel) wymagają 1-3 miesięcy. Duże bazy enterprise (1TB+, 1000+ tabel ze złożonymi procedurami) mogą zająć 3-6 miesięcy przy ostrożnej migracji fazowej.

Co z funkcjami specyficznymi dla SQL Server jak SSIS, SSRS i SQL Agent?

Istnieją alternatywy w PostgreSQL: SSIS można zastąpić Apache Airflow, Luigi lub Pentaho Data Integration. SSRS można zastąpić Grafana, Metabase lub Apache Superset. SQL Agent można zastąpić rozszerzeniem pg_cron lub zewnętrznymi schedulerami jak Airflow. Migracja wymaga przeprojektowania procesów ETL i raportów, ale nowoczesne alternatywy często oferują lepsze funkcje.

Jakie oszczędności mogę osiągnąć migrując na PostgreSQL?

Typowe oszczędności wynoszą 50-80% w zależności od edycji SQL Server. SQL Server Enterprise ($14,000/rdzeń) vs PostgreSQL (darmowy) daje maksymalne oszczędności. Uwzględniając umowy serwisowe i zarządzany PostgreSQL w Azure/AWS, organizacje zazwyczaj oszczędzają 60-70% samych kosztów licencji. Całkowita redukcja TCO włączając zmniejszone koszty utrzymania wynosi średnio 50-65%.

Czy mogę uruchomić SQL Server i PostgreSQL równolegle podczas migracji?

Tak, to jest rekomendowane podejście dla dużych migracji. Użyj wzorca dual-write lub CDC (Change Data Capture) żeby synchronizować obie bazy podczas migracji. To pozwala zwalidować wydajność PostgreSQL, przetestować zmiany w aplikacji i mieć natychmiastową ścieżkę powrotu w razie problemów. Większość firm uruchamia równoległe bazy przez 1-3 miesiące przed finalnym przełączeniem.

Jakie są największe wyzwania w konwersji T-SQL na PL/pgSQL?

Główne wyzwania to: (1) kolumny IDENTITY → SERIAL/SEQUENCES, (2) różnice w funkcjach daty/czasu (GETDATE() → NOW(), DATEADD → arytmetyka intervalowa), (3) konkatenacja stringów (operator + → ||), (4) słowo kluczowe TOP → LIMIT, (5) różnice w zachowaniu ISNULL/COALESCE, (6) poziomy izolacji transakcji, (7) różnice w składni kursorów. Większość można rozwiązać narzędziami do automatycznej konwersji plus ręczne poprawki.

Czy wydajność PostgreSQL jest porównywalna z SQL Server?

Tak, PostgreSQL często przewyższa SQL Server w obciążeniach odczytowych, operacjach JSON i zapytaniach OLAP. SQL Server może być szybszy dla intensywnych zapisów OLTP z odpowiednimi indeksami. Benchmarki pokazują że PostgreSQL 15+ obsługuje 15,000-20,000 TPS na zwykłym sprzęcie. Kluczem jest odpowiednie tunowanie: indeksy, strategia VACUUM, connection pooling (PgBouncer) i optymalizacja zapytań. Większość organizacji widzi podobną lub lepszą wydajność po migracji przy znacznie niższych kosztach.

Kluczowe Wnioski

  • Migracja na PostgreSQL może zaoszczędzić 60-70% kosztów bazy danych przy poprawie wydajności
  • Migracja fazowa z dual-write minimalizuje ryzyko i pozwala na stopniową walidację
  • Nowoczesne alternatywy dla SSIS, SSRS, SQL Agent często oferują lepsze funkcje i integrację
  • Większość migracji zwraca się w 12-18 miesięcy samymi oszczędnościami na licencjach
  • Odpowiednie tunowanie (indeksy, VACUUM, connection pooling) jest kluczowe dla optymalnej wydajności PostgreSQL

Potrzebujesz Pomocy z Migracją Bazy Danych?

Pomagam organizacjom migrować z SQL Server na PostgreSQL z minimalnym ryzykiem i maksymalnymi oszczędnościami. Porozmawiajmy o Twojej strategii migracji.

Powiązane Artykuły

Źródła

  1. [1] Microsoft Azure - Oficjalna dokumentacja -https://learn.microsoft.com/en-us/azure/
  2. [2] Microsoft Learn - Centrum szkoleń Azure -https://learn.microsoft.com/en-us/training/azure/
  3. [3] Flexera State of the Cloud Report 2024 -https://www.flexera.com/blog/cloud/cloud-computing-trends-2024-state-of-the-cloud-report/
  4. [4] FinOps Foundation - Best Practices -https://www.finops.org/
  5. [5] Gartner - Cloud Computing Research -https://www.gartner.com/en/information-technology/insights/cloud-computing
  6. [6] AWS - Oficjalna dokumentacja -https://docs.aws.amazon.com/
  7. [7] Google Cloud - Oficjalna dokumentacja -https://cloud.google.com/docs
Migracja z SQL Server do PostgreSQL - Poradnik 2025 | Wojciechowski.app | Wojciechowski.app