Konfigurowalna częstotliwość dostarczania zmian.
GIFRÖST umożliwia konfigurację różnych częstotliwości dostarczania zmian: ciągłą replikację CDC, uruchomienia według harmonogramu oraz zasilenia na żądanie dla wybranych tabel. Dzięki temu jedno wdrożenie może obsługiwać zarówno tryb czasu rzeczywistego, jak i kontrolowane okna zasileń.
Pokrycie wymagania
Wymaganie „umożliwia konfigurację różnych częstotliwości dostarczania zmian” jest realizowane przez połączenie mechanizmów Debezium oraz warstwy operacyjnej GIFRÖST. Platforma obsługuje co najmniej trzy modele: dostarczanie w czasie rzeczywistym, zasilanie na żądanie oraz zasilanie planowane w czasie lub powtarzane w interwałach.
Po fazie snapshotu początkowego konektor czyta zmiany z dziennika transakcyjnego i dostarcza je do tematów Kafka w sposób ciągły. Jest to podstawowy model pracy CDC dla bieżącej replikacji.
Operator może uruchomić ad hoc snapshot dla wybranych tabel przez sygnał
execute-snapshot. Debezium obsługuje w tym mechanizmie snapshoty
incremental oraz blocking.
Monitory GIFRÖST mogą uruchamiać akcje na konektorze o konkretnej godzinie albo cyklicznie w zadanym interwale. Pozwala to dopasować zasilenie do okien serwisowych, cykli godzinowych lub innych zaplanowanych momentów przetwarzania.
Zasilenie na żądanie przez sygnały
GIFRÖST udostępnia sygnały Debezium bezpośrednio w widoku konektora. Użytkownik wybiera kanał
sygnału, typ EXECUTE_SNAPSHOT, tryb snapshotu oraz tabele, które mają zostać
zasilone. Dzięki temu można odświeżyć konkretne kolekcje danych bez przebudowywania całego
potoku replikacyjnego.

Zakładka Signals służy do wysłania żądania EXECUTE_SNAPSHOT dla wskazanych tabel.
Snapshot inkrementalny sprawdza się przy porcjowanym i powtarzalnym odświeżaniu danych,
natomiast snapshot blokujący może zostać użyty wtedy, gdy konektor ma chwilowo wstrzymać
streaming i wykonać żądany snapshot.
Typ sygnału: execute-snapshot uruchamia snapshot ad hoc.
Zakres zasilenia: data-collections wskazuje tabele albo wzorce
tabel, które mają zostać objęte snapshotem.
Tryb snapshotu: Debezium obsługuje snapshoty ad hoc typu
incremental oraz blocking. Snapshot inkrementalny przetwarza tabele
porcjami i może być uruchamiany ponownie zależnie od potrzeb operacyjnych.
Zasilenie według harmonogramu
Harmonogramowanie zasileń odbywa się w module monitorowania i alertowania. Monitor określa, kiedy ma zostać uruchomiona akcja, a akcja konektora określa, jaka operacja zostanie wykonana. Przykładowo platforma może wystartować, wznowić, zaktualizować albo zrestartować konektor o konkretnej godzinie lub powtarzać taką operację w ustalonym interwale.

Scheduled Timepoint uruchamia akcję w wybranym dniu i o wybranej godzinie. Interval Action Runner powtarza przypisane akcje w określonym przedziale czasu. W połączeniu z akcjami konektora mechanizmy te kontrolują, kiedy konektor CDC zostanie uruchomiony, wznowiony albo zrestartowany.
Monitor Scheduled Timepoint może wywołać akcję konektora w konkretnej dacie i godzinie. Pozwala to zaplanować zasilenie, na przykład start konektora w nocy albo restart na początku uzgodnionego okna przetwarzania.
Monitor Interval Action Runner może powtarzać tę samą akcję konektora. Przykładowo interwał godzinowy umożliwia uruchamianie operacji na konektorze w przewidywalnych punktach czasu.
Konfiguracja snapshotów
Faktyczne zachowanie konektora po starcie lub restarcie wynika z konfiguracji Debezium.
Kluczowym parametrem jest snapshot.mode, który określa, czy konektor wykona
snapshot przy starcie, pominie snapshot, czy wykona go tylko w określonych sytuacjach
odtworzeniowych.
| Konfiguracja | Znaczenie operacyjne | Typowe użycie w harmonogramie GIFRÖST |
|---|---|---|
snapshot.mode=initial | Wykonuje snapshot, gdy nie istnieją offsety, a następnie przechodzi do streamingu zmian. | Pierwszy start konektora albo pierwsze zaplanowane uruchomienie potoku. |
snapshot.mode=always | Wykonuje snapshot przy każdym starcie konektora, a po nim streamuje kolejne zmiany. | Zaplanowane pełne odświeżenie przy starcie lub restarcie konektora. |
snapshot.mode=initial_only | Wykonuje snapshot i zatrzymuje konektor przed streamingiem zdarzeń zmian. | Jednorazowe zasilenie wsadowe bez dalszego ciągłego CDC. |
snapshot.mode=no_data | Pomija snapshot danych i streamuje od dostępnej pozycji w logu. | Tryb tylko dla zmian bieżących, gdy aktualny stan celu jest już zaufany. |
snapshot.mode=when_needed | Wykonuje snapshot tylko wtedy, gdy brakuje offsetów albo zapisana pozycja logu jest niedostępna. | Start odtworzeniowy, w którym snapshot ma zostać wykonany tylko wtedy, gdy jest potrzebny. |
Debezium opisuje snapshoty ad hoc przez sygnały w dokumentacji
Sending signals to a Debezium connector
oraz tryby snapshot.mode dla PostgreSQL w
Debezium connector for PostgreSQL.