API - zapis danych

0

Potrzebuje pobrać dane z zewnętrznego API (1000 pozycji pięciolinijkowego obiektu), dane są rzadko zmieniane więc za każdym razem odpytywanie API jest bez sensu.
Każdą dane trzeba przepuścić przez inne zewnętrzne API (+1 linijka do obiektu), więc finalnie mamy listę obiektów, która jest rzadko zmieniana.
Pomysłem jest zapisanie tych obiektów do bazy danych.

Czy powinno dziać się to na starcie uruchomienia aplikacji? Może przygotować skrypt, który by był włączany co jakiś czas i by nadpisywał baze? Może dodać osobny end point, który by był co jakiś czas odpalany ze strony panelu administratora na stronie?

1

Protokó http dostarcza nagłówków, które po prawidłowym zaimplementowaniu po stronie serwera powodują, że jeżeli nic się nie zmieniło, to zamiast danych dostajesz Http: 304
https://www.baeldung.com/etags-for-rest-with-spring

Czyli uderzasz do tego serwisu X używając nagłówka z Etagiem, który już masz, jak dostajesz 304, to sięgasz do cache. Jak dostajesz dane, to kontynuujesz flow do serwisu Y, dostajesz odpowiedz, zapisujesz ją w cache i równolegle odsyłasz do klienta.

1

Na kiego grzyva ta baza danych? RAM nie trzyma i dane sie psują?

0

@marcyse:

WebAPI, a nie API

Nie stosuj szerszego słowa (API, to jest o wiele starsze niz web) gdy mówisz o węższym (jego webowa podwersja)

Fabryczne klasy, które stosujesz lokalnie, to też jest API

0

Co jeśli do tych danych będę chciał zrobić własną logike czyli np dla zobrazowania zaciągam 1000 imion, do każdego imienia przypisuje wiek i z takim obiektem tworzę informacje własne takie jak data urodzenia, nazwisko, gdzie pracuje, jakieś relacje itp?

4
marcyse napisał(a):

Co jeśli do tych danych będę chciał zrobić własną logike czyli np dla zobrazowania zaciągam 1000 imion, do każdego imienia przypisuje wiek i z takim obiektem tworzę informacje własne takie jak data urodzenia, nazwisko, gdzie pracuje, jakieś relacje itp?

No piszesz kod... gdzie jest problem?

2

@marcyse

chodzilo o to czy koniec koncow nie bede musial i tak skorzystac z bazy danych? wiec jesli korzystam raz to czemu nie moge na poczatku tez tego wrzucic zamiast uzywania cache?

Twój program rób jak chcesz. Potrzebujesz tę dane trwale przechowywać? Jeżeli nie, to dość ciężko będzie ci znaleźć sensowne argumenty na jej użycie, kosztem zwiększenia czasu odpowiedzi, obciążenia maszyny z tą bazą danych itd. Wykonanie zapytania i wyciągnięcie danych z bazy to całkiem długa chwila. Wyciągnięcie referencji do obiektu w pamięci z jakiejś hashmapy jest praktycznie niemierzalne. 5000 linijek jsona, to jakieś praktycznie niezauważalne obciążenie pamięci.

5

jest jeszcze opcja in-process cache (out of proces, serwerwowa/cloudowa oczywiście też, ale tutaj bez sensu)

Osobiście sympatyzuję z
https://github.com/ben-manes/caffeine

1 użytkowników online, w tym zalogowanych: 0, gości: 1