🎯 Definicja
Inkrementalna Synchronizacja to metoda przesyłania danych, w której kopiujemy tylko nowe lub zmienione rekordy, zamiast kopiować całą bazę od zera (Full Refresh). Pozwala to zaoszczędzić czas, łącze internetowe i moc obliczeniową bazy źródłowej.
🔑 Kluczowe punkty
- Kursor: Pole, które mówi nam “gdzie skończyliśmy”. Zazwyczaj
updated_at(data modyfikacji) lubid(autoincrement). - Rodzaje:
- Append: Tylko dopisujemy nowe wiersze (tworzy historię zmian, duplikuje ID).
- Dedup: Dopisujemy i usuwamy/scalmy duplikaty, aby mieć “stan aktualny”.
- Problem: Trudno wykryć usunięte rekordy (Hard Deletes) bez mechanizmu CDC (Change Data Capture).
📚 Szczegółowe wyjaśnienie
Scenariusz: Masz tabelę Orders z 10 milionami wierszy. Codziennie dochodzi 1000 nowych.
- Full Refresh: Codziennie pobierasz 10,001,000 wierszy. Czas: 5 godzin.
- Incremental: Pobierasz tylko 1000 wierszy, gdzie
order_date > wczoraj. Czas: 5 sekund.
System ELT (np. Airbyte) zapamiętuje “stan” (State) - czyli maksymalną wartość kursora z poprzedniego uruchomienia.
💡 Przykład zastosowania
Synchronizacja danych z Salesforce do Snowflake.
Używamy pola LastModifiedDate jako kursora.
Airbyte pyta Salesforce: “Daj mi wszystkie rekordy zmienione po 2023-10-27 15:00:00”.
Salesforce zwraca małą paczkę JSON.
Airbyte ładuje ją do Snowflake i aktualizuje swój stan na 2023-10-27 16:00:00.
📌 Źródła
- Airbyte Documentation - Incremental Sync.
👽 Brudnopis
- Najważniejsze: Źródło MUSI mieć wiarygodną kolumnę
updated_at. Jeśli aplikacja zmienia rekord, ale nie aktualizuje tej daty, synchronizacja pominie zmianę (Data Integrity Issue).