• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Architektura aplikacji webowej - baza danych

Object Storage Arubacloud
0 głosów
99 wizyt
pytanie zadane 18 maja 2022 w JavaScript przez niku990 Nowicjusz (120 p.)

Cześć. Planuję budowę apki internetowej pobierającej, przetwarzającej i wyświetlającej dane.  Pracowałem głównie nad małymi projektami typu CRUD itp., które nie wymagają jakiś mega zasobów. Przy obecnym projekcie natknąłem się na problem z zbyt długimi zapytaniami do bazy, ze względu na dużą ilość wierszy.

Głównie siedzę w JS, więc backend powstanie w node.js, front prawdopodobnie w next.js

Niewykluczone że projekt w przyszłości przejdzie na model komercyjny, więc nexta chciałbym użyć, aby poprawić SEO (wszystkie statyczne treści np SSG + doczytywać dynamicznie z api)

Głównym założeniem jest analiza danych ,,realtime". Przez api do bazy regularnie będzie napływać sporo danych. Problem pojawia się w chwili gdy chcę te dane przeanalizować i wyświetlić użytkownikowi.

Przykład: Tabela ma 5mln wierszy.

Użytkownik na front'endzie klika w swój profil i wybiera id innego użytkownika. Wyświetla mu się liczba relacji z danym użytkownikiem (1 relacja = 1 wiersz).

Przez api do bazy danych leci zapytanie o ilość wierszy w których id1=uzytkownik1, id2=użytkownik2. Niestety takie zapytania trwają zbyt długo. Jeśli użytkownik zmieni parametry, to znów czeka aż system to przemieli. Gdy takie zapytania równolegle wykona kilku użytkowników, to responsywność totalnie leży.

Myślałem nad małą instancję tylko do analizowania danych i wrzucania w osobną tabelę, wtedy czytanie z tego jest mega szybkie, bo mamy od razu gotowy wynik. Jednak problematyczne w tym przypadku jest to, że dane się ciągle zmieniają, po drugie, gdy np. 1000 użytkowników ma relacje każdy z każdym, to mamy ~1mln różnych relacji.

Co do baz danych, mogę skorzystać z mysql, postgre i mongodb. W optymalizację baz danych to jakoś bardzo się nie zagłębiałem, jedynie podstawowe rzeczy typu indeksowanie (sql)

Jakieś porady dotyczące architektury? jak się za to zabrać, aby nie uwalić całej wydajności na samej bazie danych. Pomijam też drogie rozwiązania typu ,,google bigtable". Jestem otwarty na wszelkie pomysły powiązane z JS (programuję w tym języku, więc np. poznanie kolejnego frameworka to nie problem), a może powinienem wybrać całkowicie inny tech stack?

2
komentarz 18 maja 2022 przez rafal.budzis Szeryf (85,260 p.)
Mogę podpowiedzieć coś więcej odnośnie wydajności MySQL Musiał byś tylko pokazać strukturę tabel. Warto też wykonać obecne zapytanie z EXPLAIN na początku. Dowiesz się co MySQL robi i czy używa indeksów. Może wystarczy dodać nowe indeksy. lub zmienić typy kolumn.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+3 głosów
1 odpowiedź 250 wizyt
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 8 stycznia 2021 w PHP przez par4agon Początkujący (430 p.)
0 głosów
1 odpowiedź 244 wizyt

92,555 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...