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.
Zapisywanie dużej ilości obiektów z API
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
Chcesz zapisać do bazy czy pobrać z bazy?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
Zapisać do bazy
Ale napisałeś tak:
Żeby wyświetlić obiekt trzeba w url podać id tego obiektu.
To raczej pobieranie z bazy.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Śląsk
- Postów: 248
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 ;)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Grudziądz/Bydgoszcz
- Postów: 5300
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Sparing brzmi jak Java, więc przenoszę.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 797
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ą.