CDC COMPARE 2.0
Nowa wersją modułu odpowiedzialnego za sprawdzanie spójności replikacji.
Zmiany względem wersji 1.0
W porównaniu do pierwszej wersji ta oferuje porównania tabel z kluczami złożonymi o różnych typach oraz w założeniu szybsze porównywanie tabel.
Wspierane bazy danych
Aktualnie wspierane są bazy:
PostgreSQL
Oracle
Microsoft SQL Server
Wspierane typy danych
Compare próbuje mapować obiekty z bazy danych na obiekty z Java, co może prowadzić do nieścisłości. Nie wszystkie typy z baz danych są wspierane. List wspieranych typów:
Typy liczbowe całkowite
Typy liczbowe zmiennoprzecinkowe
Typy boolean(boolean, bit)
Typy tekstowe (char, varchar, text, clob itd.)
Typy binarne
Typy datowe (date, timestamp, time) - działanie z różnymi timezone do przetestowania
UUID
Jeśli któraś kolumna z klucza głównego nie może zostać zmapowana to porównanie zakończy się błędem. W przypadku kolumn poza kluczem głównym w przypadku problemu z mapowaniem moduł próbuje wyciągnąć dane z kolumny jako tekst, co może prowadzić do błędów w porównywaniu lub tworzonych finalnie zapytaniach.
Rodzaje analizy
Aktualnie można przeprowadzić dwa rodzaje analizy:
COUNT -> sprawdza tylko liczbę wierszy w obu tabelach
DETAILED -> Sprawdza dokładnie czy wiersze są równe, na tej podstawie lista rzędów, które trzeba usunąć, zmodyfikować albo dodać do tabeli docelowej. Moduł generuje listę zapytań dostosowanych do bazy docelowej, które aktualizują stan tabeli
Analiza DETAILED jest najbardziej optymalna dla tabel, które mają klucz główny składający się z jednej kolumny. W tym wypadku analiza jest dużo wydajniejsza i poprawnie obsługiwane jest dodawanie i usuwanie rzędów w trakcie porównania. Algorytm przechodzi przez rzędy w kolejności, więc jeśli dodany rząd mają mniejszy klucz, niż ten aktualnie porównywany to zostaną one pominięte. Jeśli klucz jest złożony analiza będzie trwała dłużej i do tabel nie mogą być wstawiane i usuwane rzędy. W tym wypadku nie jest zalecane uruchamianie analizy na obszernych tabelach.
W przypadku analizy DETAILED jest też możliwość ponownego sprawdzenia kluczy dla których różnicę (opcja recheckKeys)
. Jeśli została wybrana, to sprawdzane jest czy:
klucze zapisane jako do usunięcia w bazie docelowej nadal w niej są
klucze zapisane jako do dodania nie pojawiły się w bazie docelowej
klucze zapisane jako do modyfikacji nadal mają różniące się wartości poza kluczem
W trakcie sprawdzania usuwane są klucze, które nie wymagają już aktualizacji.
Wyniki badania spójności
Jeśli różnic jest zbyt dużo porównywanie danej tabeli jest przerywane i informacje o rzędach nie są zapisywane, a status ustawiony jest na ERROR_MAX_LIMIT
.
Wynik całego jest ustawiony na FINISH
, gdy wszystkie tabele zostały porównane, niezależnie od tego, czy w trakcie porównania zaistniały jakieś błędy - informację o nich należy sprawdzić dla każdej z porównywanych tabel.
Properties
W kodzie zdefiniowanych jest kilka properties, które wpływają na działanie serwisu
goldenore.compare.batch_size -> ile rzędów jest pobieranych przy jeden iteracji
goldenore.compare.max_errors_count -> maksymalna liczba różnic między tabelami, po której porównanie się zatrzyma - zabezpieczenie przed zbyt dużą wartością podaną w opcjach
goldenore.compare.max_parallel_compares -> ile porównań może działać jednocześnie
goldenore.compare.max_threads_per_compare -> ile tabel może być porównywanych jednocześnie w ramach jednego porównania (zależy to również od max liczby połączeń do bazy danych)
Szczegółowy opis
Szczegóły kontenera
Właściwości | docker |
---|---|
Nazwa obrazu | cdc-compare2 |
Nazwa w repozytorium | goldenore/cdc/compare2 |
Port | 8084 |
Zależność | PostgreSQL Database |
Last updated