Wpis z mikrobloga

Nigdy nie robilem into bazy danych, a teraz stoje przed takim o to wyborem,

Mam appke ktora zaciaga z 2 zewnetrznych API jako JSON + logowanie/rejestracja, parsowanie tych danych i wypluwanie na froncie.

Musze gdzies trzymac takie informacje: kazdy uzytkownik ma x produktow, kazdy produkt ciagnie z 2 API, y razy dziennie.
Zalozmy ze w najmniejszym przypadku bedzie to 1 * 2 * 1 = 2 dodatkowe logi dziennie, a w najciezszym 300 * 2 * 24 * 4 =57600 logow do zapisania, czyli 300 produktow, kazdy po 2 wywolania do API co 15 minut. Troche hardcorowo, bo po roku mialbym juz 21mln logow od jednego duzego klienta. Raczej bede musial czyscic logi po 1-3 miesiacach albo kompresowac logi miesiecznie w jeden bazujac na sredniej.

Do tej pory trzymalem wszystko lokalnie w JSONach ale zrobi sie burdel w folderach i nie chce trzymac tak duzej ilosci plikow pod aplikacja.

Same logi to 3 poziomowe JSONy i teraz pytanie - powinienem rozbich ich strukture i trzymac jako klucz-dane w bazie danych czy wrzucac calosc tak jak jest do bazy ktora wspiera JSON-like typ danych? Sam JSON ma moze z 50 wpisow na jedno API.

#programowanie #bazydanych #webdev
  • 10
  • Odpowiedz
@Melcma: to zależy (jak zwykle) od tego co chcesz osiągnąć
czy chcesz mocno przerabiać apkę na współpracę z DB?
jeżeli nie to pchaj do DB zserializowane jsony z jakimś kluczem (np data i godzina)
jeżeli tak to zbuduj sobie model danych, do tego zrób 2 bazy - jedną transakcyjną, bieżącą i drugą płaską (taką jak w hurtowniach danych) tylko do odczytu
i co jakiś czas przenoś dane z bazy transakcyjnej
  • Odpowiedz
@TwojStaryToKorniszon: aplikacja to poki co 3 mikroserwisy + frontend w developmencie, wiec mam pelna swobode, cala tresc na froncie bedzie sie opierac na tych logach, wiec musze dostosowac to pod to

osobne bazy danych tez dobry pomysl, bo najwazniejsze beda logi z ostatniego miesiaca

dokladnie, dane beda trzymate pod kluczami data/godzina (albo timestampy po prostu)
  • Odpowiedz
powinienem rozbich ich strukture i trzymac jako klucz-dane w bazie danych czy wrzucac calosc tak jak jest do bazy ktora wspiera JSON-like typ danych?


@Melcma: przecież odpowiedź na to pytanie zależy od tego jakie operacje potrzebujesz zaaplikować na te zapisane dane, jak żadne to trzymaj jak jest, a w przeciwnym wypadku dopasuj to jak trzymasz dane tak żeby ci ułatwić operacje które potrzebujesz wykonać
  • Odpowiedz
@Melcma: do trzymania logów można stosować specjalne bazy danych, które potrafią dane archiwalne trzymać w formie trendów zamiast dokładnych danych. Nie potrzebujesz z półrocznych danych danych z dokładnością do miinuty. Wystarczy ci dzień. Konfigurujesz retencje i masz spokój.
  • Odpowiedz
@Dzakus: no pomysl fajny, wlasciwie to wystarczylo zebym logi starsze niz x miesiecy scalil w jedno podsumowanie na dzien

co to za specjalne bazy danych?
  • Odpowiedz