Cześć!
Tworze aplikację, która w ogromnym uproszczeniu będzie się składać z 2 najważniejszych aplikacji:
- Wyszukiwarka
- Producer danych
Producer co jakiś czas produkuje dane.Wyszukiwarka powinna przeszukać je według podanych parametrów (które są pogrupowane w "set'y" których może być tysiące). Problem w tym że tylko najnowsze dane powinny zostać przeszukane. Aczkolwiek stare nie powinny zniknąć. Do głowy przychodzą mi rozwiązania:
-
Oznaczenie nowych wpisów w bazie jakąś flagą a następnie wyszukiwanie, a po zakończeniu oznaczanie danych jako przeprocesowane - odpada, bo szukanie będzie trwać za długo (może być tysiące różnych kombinacji parametrów) + dochodzi problem że w trakcie szukania dojdą nowe dane
-
Oznaczenie nowych wpisów w bazie jakąś flagą a następnie wyszukiwanie w wielu wątkach, a po zakończeniu oznaczanie danych jako przeprocesowane - tak jak wcześniej szukanie może trwać za długo + problem z nowymi danymi
-
Wrzucenie nowych danych na kolejkę, szukanie w każdym pojedynczym wpisie - odpada bo będzie to trwało wieki
-
Wrzucenie nowych na kolejkę, zebranie ich przez jednego recivera, i wyszukiwanie na grupie.Nowe dane tworzenie nowego reciviera jeśli poprzedni nie zakończył pracy - to jak na razie jest według mnie najlepsze rozwiązanie, aczkolwiek widzę problem w sensownej i odpornej implementacji.
Macie pomysł jak coś takiego ugryźć?