Spring - jak zoptymalizować zaciąganie danych z bazy SQL

0

Hej.
Mam pewien problem.
Jestem w trakcie budowania aplikacji do e-czasopisma gdzie uprawniony użytkownik będzie mógł dodawać pisma, publikować na stronie głównej i takie tam...
Poszukuje wiedzy jak rozwiązać sprawę dużej ilości zapytań SQL które generuje serwer (appka webowa).
Obecnie działa to tak że jak zwykły użytkownik wejdzie na strone główną, serwer SELECTem pobierze rekord który jest opublikowany (tylko jeden może być na raz) i z kolumny przechowującej byte[] pobierze zdjęcia które następnie wyświetli.
To samo na innej podstronie - archiwum - użytkownik może tu odczytać archiwalne numery których boolean archived w DB jest na true.
Tu również zostaje wykonane zapytanie które zwróci X rekordów i zostają wyświetlone w pętli.

Trochę obawiam się takiego rozwiązania przy dużej ilości danych.
Już teraz zaczyna zacinać gdy serwer ma pobrać jakiś rekord z dużą paczką zdjęć...

Jak to obejść?

Myślałem żeby połączyć przechowywanie danych w pamięci aplikacji + w bazie danych i np w @Scheduled synchronizować dane co jakiś czas ale operacyjnie pracować na pamięci.
Minus jest taki że trzeba pobierać wszystkie dane z bazy do pamięci...

Ktoś mógłby coś doradzić?

3

Pytanie zasadnicze - czemu chcesz obrazki trzymać w bazie danych?

3

Jw. obrazki powinna dociągać przeglądarka. Ten myczek z flagą „archive” też odbije się czkawką - lepiej to trzymać w jakimś osobnym storage’u, bo masz na tym w zasadzie tylko odczyt i to relatywnie niezbyt częsty

2
  1. Trzymanie blobów w bazie to raczej słaby pomysł. Jeśli nie chcesz tego serwować z jakiegoś CDNa to trzymaj w bazie tylko metadane, tzn lokalizacje w filesystemie i odczytuj je z dysku i tak serwuj. Od biedy trzymanie ich w /static starczy

Myślałem żeby połączyć przechowywanie danych w pamięci aplikacji + w bazie danych i np w @Scheduled synchronizować dane co jakiś czas ale operacyjnie pracować na pamięci.
Minus jest taki że trzeba pobierać wszystkie dane z bazy do pamięci...

Tak się robi jak chcesz mieć low-latency, ale nie z dużymi blobami raczej, bo nie ma to sensu.

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