# Rozwój i 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.
