Rozwój i problemy

W tej sekcji opisane są możliwości rozwoju i znane problemy

Rozwój

  1. Korzystanie z zapisanej w tabeli primary_key_entry listy kluczy Można rozważyć opóźnienie generowania zapytań SQL do wyrównania bazy docelowej do momentu zapytania o nie poprzez użycie zapisanych kluczy. Skróci to czas głównego porównania. Jest też szansa, że użytkownik nie jest zainteresowany tymi zapytaniami - interesuje go jedynie które rzędy się różnią, a do tego potrzebuje tylko kluczy

  2. Wielowątkowe pobieranie informacji o tabelach w BindingService Proces łączenia tabel jest dosyć czasochłonny, szczególnie ze względu na pobieranie infomracji z bazy danych. Można by to robić równolegle, trzeba tylko pamiętać, że trzeba przyjąć w request max liczbę połączeń do bazy

Problemy

  1. Wolne recheckKeys Gdy kluczy jest dużo proces ten zajmuje bardzo dużo czasu - każdy rząd musi być bezpośrednio wyciągnięty z bazy danych i sprawdzony. Jeszcze gorzej będzie w przypadku tabeli, która nie ma klucza głównego. Sprawdzanie rzeczy na bazie danych jest problematyczne, bo może dochodzić do przekłamań, gdy np. baza zaokrągla typy numeryczne przy porównaniu

  2. Różnice w orderBy Wywołanie order by <kolumny> może zwracać rzędy w innej kolejności w przypadku kolumn tekstowych. Wynika to z bibliotek, które używają bazy i ich wersji. Przede wszystkim trzeba poinformować użytkownika, że taka sytuacja ma miejsce, jeśli w kluczu jest kolumna tekstowa (tzn. bazy są ze sobą niekompatybilne pod względem porównania). Docelowo należy ten problem rozwiązać. Gdy porównanie działa bez opcji recheckKeys to w rezultacie, wyłączając rzędy różniące się, będziemy mieli X insertów i X deletów (taka sama liczba). Jeśli włączymy recheckKeys to zostanie nam tylko X deletów, bo moduł sprawdzi, że klucze są już na bazie docelowej.

  3. Wsparcie zmian w tabeli dla kluczy złożonych Aktualnie usuwanie i dodawnie rzędów jest obsługiwane tylko dla tabel z pojedynczym kluczem głównym. Dla kluczy złożonych compare działa korzystając z offestów, co jest mniej wydajne i nie współgra ze zmianami w tabeli.

Last updated