> For the complete documentation index, see [llms.txt](https://goldenore.gitbook.io/goldenore-cdc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://goldenore.gitbook.io/goldenore-cdc/moduly-goldenore-cdc/cdc-compare-2.0/rozwoj-i-problemy.md).

# 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.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://goldenore.gitbook.io/goldenore-cdc/moduly-goldenore-cdc/cdc-compare-2.0/rozwoj-i-problemy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
