Zakładasz, że pamięć sesji i pamięć bazy danych są wyłączne. Nie są. Ale zacznijmy od założenia, że są.
Korzyści z przechowywania sesji są trzykrotnie:
- Nie ma potrzeby jawnego wstawiania danych do bazy danych. Po prostu ustaw zmienną sesji i gotowe. Prosty i funkcjonalny o niskim ryzyku.
- Nie musisz zarządzać cyklem życia wizyty użytkownika i koszyka, ponieważ pojemniki / ramy robią to za Ciebie
- Zwykle wykonuje się automatyczne czyszczenie starych bezczynnych sesji.
Wady przechowywania sesji:
- Powinowactwo sesji, chyba że zbadasz replikację
- Bez przełączania awaryjnego, chyba że zbadamy replikację lub ręczne utrzymywanie stanu sesji na dysku, co może się skomplikować.
- Wszystkie sesje muszą być przechowywane w pamięci. Jest to wzmocnione, jeśli zastosujesz replikację.
Zalety przechowywania bazy danych:
- Nie musisz się martwić koligacją sesji lub replikacją stanu. Możesz okradzić wszystkie żądania.
- Mniejszy narzut pamięci w aplikacji.
- Jeśli zamówienie zostanie zakończone, wszystko i tak trafi do bazy danych, więc może to ułatwić wykonanie, ponieważ dane są już obecne.
Wady przechowywania bazy danych:
- Opuszczone wózki - jakiś anonimowy użytkownik dodał przedmiot do koszyka i zniknął. Te dane pozostają na zawsze, chyba że masz jakiś proces wygasania.
- Musisz wymyślić sposób śledzenia użytkowników i dowiedzieć się, czy dla danego żądania reprezentuje to istniejącą lub nową sesję przeglądania. (tak, prawdopodobnie jest to łatwe, jeśli używasz pliku cookie, ale jak zapewnić, że dwóch użytkowników nie otrzyma tego samego identyfikatora?).
- Więcej kodów
Nie wspomniałeś o używanej platformie. Chciałbym znaleźć podejście, które wykorzystuje sesję opartą na bazie danych, w której dane sesji istnieją tylko w pamięci w trakcie cyklu żądania / odpowiedzi, ładując je z bazy danych i zapisując z powrotem do bazy danych. W przeszłości dobrze mi to służyło.
Zalety sesji opartej na bazie danych:
- Nie ma potrzeby koligacji serwera.
- Łatwo w pamięci serwera aplikacji
- Dane o bezczynnej / porzuconej sesji są dla Ciebie usuwane.
- Cykl życia pierwszej wizyty użytkownika, ponownej wizyty, zakończenia sesji jest dla Ciebie wymyślony.
- Łatwy do kodowania
Wady sesji opartej na bazie danych:
- Konfiguracja - musisz zbadać swój kontener, czy jest to PHP, Java EE (Tomcat, Jetty, JBoss itp.), Node.js + express.js lub co nie obsługuje tego i dostarcza odpowiednią konfigurację.
- Może być konieczne załadowanie tego testu, ponieważ dodajesz 2 operacje bazy danych na żądanie.
Istnieje trzecia możliwość, o której ktoś wcześniej wspomniał. Możesz całkowicie zrezygnować z sesji i korzystać z pamięci po stronie klienta, osadzając wszystko w pliku cookie lub w lokalnej pamięci HTML.
Zostawię ci zalety / wady tego ćwiczenia, ale dam ci podpowiedź, że w przypadku przechowywania html5 kompatybilność z przeglądarką może być czymś do dokładnego sprawdzenia.
Przedstawiłem ci fakty. Mamy nadzieję, że pomoże to podjąć właściwą decyzję w danej sytuacji.