Witam,
Bawię się z API i chce zapisać sporą ilość danych do bazy. Niestety API z którego korzystam nie udostępnia możliwości wykonania strzału w którym zwracało by mi listę tych obiektów. Żeby wyświetlić obiekt trzeba w url podać id tego obiektu. Robię to w pętli for z tym że danych jest ok 14000 i zanim te dane się załadują trzeba poczekać dość długo. I pytanie do was czy da się to w jakiś sposób przyspieszyć? Apka pisana jest w sparingu.
Pozdrawiam.
Chcesz zapisać do bazy czy pobrać z bazy?
Zapisać do bazy
Ale napisałeś tak:
Żeby wyświetlić obiekt trzeba w url podać id tego obiektu.
To raczej pobieranie z bazy.
Hmmm moze wielowatkowsc i jakis parallel for :)? Jesli zalezy ci tylko na zwrotkach a nie na kolejnosci pobran to sprobuj skorzystac z parallel for nie wiem jak w Javie to macie ale w C# to Parallel.For(). Generalnie sprobj asynchronicznosci i wielowatkowsci ;)
Sam zapis do bazy trwa zapewne krócej niż pobranie jednego rekordu z api, czyli optymalizację nie robisz na zapisie a na pobieraniu danych a tutaj pomoże jedynie zrównoleglanie. Nie robię w javie, ale zapewne ma coś co pozwala pobierać dane asynchronicznie, a jeśli nie no to musisz utworzyć sam dodatkowe wątki.
Sparing
brzmi jak Java, więc przenoszę.
Pierwsze co to najpierw pobierz wszystkie obiekty, a potem w jednej transakcji wepchnij do bazy (obsługa transakcji jest relatywnie wolna). Samo pobieranie możesz zrównoleglić, tylko nie przesadzaj jakoś za mocno bo możesz albo ubić serwer z którego pobierasz, albo po prostu Cie odetną.