awakening
28.08.2014, 15:54:51
Co jest ogólnie "lepszym" rozwiązaniem, obciążanie procesora wykonując obliczenia na danych z bazy za każdym razem gdy użytkownik wysyła żądanie, czy przechowywanie już "przeliczonych" wartości w dodatkowej tabeli i aktualizowanie ich w zależności od zmian, które dokona użytkownik.
Na pierwszy rzut oka wydawałoby się, że odciążenie procesora jest dobrym pomysłem, ale z drugiej strony czas odczytu i zapisu zmodyfikowanych danych do bazy może znacząco wpłynąć na czas odpowiedzi serwera. Poza tym utrzymywanie spójności danych może być dużym wyzwaniem, no i rozmiar bazy danych znacznie wzrośnie.
Jedno i drugie rozwiązanie ma swoje plusy i minusy i nie bardzo wiem, na które się zdecydować. Może wdrożyć prostsze, czyli pierwsze i optymalizować dopiero w razie problemów z wydajnością?
sowiq
28.08.2014, 15:57:11
Po co obliczać kilka/naście/set razy to samo, skoro można obliczyć raz i zapisać wynik?
Poczytaj o cache.
Crozin
28.08.2014, 15:57:42
Jedyną poprawną odpowiedzią jest: to zależy - nie podałeś żadnych konkretnych informacji, nie oczekuj żadnej konkretnej odpowiedzi.
Cytat
Może wdrożyć prostsze, czyli pierwsze i optymalizować dopiero w razie problemów z wydajnością?
W ogromnej większości przypadków tak właśnie należy zrobić.
awakening
28.08.2014, 16:08:22
Cytat(sowiq @ 28.08.2014, 16:57:11 )

Poczytaj o cache.
Jest to jakieś rozwiązanie.
by_ikar
28.08.2014, 16:24:47
Jeżeli chodzi o spójność danych, to od tego są klucze obce i transakcje. Dodatkowo żeby nie trzymać w aplikacji logiki odpowiadającej za takie aktualizacje, można to przenieść na bazę i użyć wyzwalaczy (triggerów).