Mam do porównania dwa zbiory danych. Jeden z nich trzymany jest w bazie MsSQL i jest to tabela 1000 wierszy z 50 kolumnami (docelowo danych ma być naście i dziesiąt tysięcy). Dane dostaję prostym selectem "select * from tabela"
Drugi zbiór danych to aplikacja klienta, w której te dane także są trzymane i mam do nich dostęp przez API. Po wyciągnięciu ich przez API także dostaję dostęp do każdej kolumny i każdego wiersza (lista (wiersze) zawierająca w sobie podlistę (kolumny) czyli mam np. lista[999].podlista[49] dla ostatniego elementu i ostatniej kolumny).
Dane w aplikacji klienta mają się synchronizować z tymi z bazy MsSQL, tzn. jeśli coś się pojawiło w tabeli MsSQL (dodano element 1001) to ma też się pojawiać u klienta w aplikacji, jeśli coś się zmieniło w tabeli MsSQL to zmiana ta ma nadpisać dane w aplikacji klienta. Założenia są takie, że kilka kolumn w bazie jest unikalnych (także nie ma powtórek danych), ale nowe dane mogą pojawiać się pomiędzy istniejącymi wierszami, a nie zawsze na końcu, czyli:
Przed:
A
B
C
Po:<code>
A
AA
B
C
stąd, mówiąc obrazowo MsSQL[500] != API[500], nie mogę w pętli porównać jeden do jednego, czy zaszła jakaś zmiana.
Mam pytanie, w jaki sposób najwydajniej będzie te dane porównywać, jaki typ danych zastosować, żeby najszybciej wyłapać różnice i dalej pracować tylko na tych różnicach? A różnice chcę wpychać do aplikacji klienta już przez jego API.
Pozdrawiam.