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ścidocker

Nazwa obrazu

cdc-compare2

Nazwa w repozytorium

goldenore/cdc/compare2

Port

8084

Zależność

PostgreSQL Database

Last updated