Как организовать хранение гостевых данных в интернет-магазине?

Есть интернет-магазин на Laravel, для зарегистрированных пользователей хранение избранных товаров, корзины, просмотренных товаров происходит в PosgreSQL, необходимо такую же логику перенести на гостевых пользователей, но так как у гостя нет никаких данных в бд, кроме session_id или токена, который я ему генерирую и сохраняю в куки), возникла потребность в реализации хранения гостевых данных в key-value базе данных. Сначала выбор пал на Redis, но так как одна из особенностей хранения гостевых данных заключается в том, что эти данные нужно хранить пару месяцев (может больше), то есть гость (при сохраненном токене в куки), должен теоретически иметь возможность посмотреть свою корзину или избранное и через месяц-два, пришло понимание, что Redis для этих целей не особо подходит, так как данные хранятся в оперативной памяти.

Для key-value хранения на SSD есть MongoDB, которую сейчас рассматриваю как доп базу данных к основной на PostgreSQL, используемую для гостевых данных, но никогда подобную историю не реализовывал. Отсюда основной вопрос:
правильны ли мои мысли по поводу MongoDB в качестве дополнительной базы данных или нужно использовать что-то другое? Или просто сделать отдельную таблицу в посгресе типа guest_cart, guest_favorites (но тут уже могут быть нюансы при автоудалении большого кол-ва просроченных (неактульных) записей)?
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 2
kawabanga
@kawabanga
А почему по простому не решаете? (допустим, если у вас не высокие нагрузки на базу).

Записываете уник сессию гостя в базу (это дает еще много прикольных штук).
Записываете в таблицы, типа guest_cart, guest_favorites и любые другие таблицы.
По необходимости мигрируете из этих таблиц данные в основную запись пользователя, если он зарегистрируется.
Записываете last_action_ts в сессию бд. И стираете раз в день данные, если last_action_ts уже старше чем 2 месяца.
Ответ написан
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
На клиенте в куках/localstorage и хранить. БД тут совсем не нужна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы