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

Я рассматриваю возможность использования MongoDB в качестве дополнительной базы данных для хранения гостевых данных в интернет-магазине на Laravel. Я храню данные для зарегистрированных пользователей в PosgreSQL, но для гостей, у меня нет других данных, кроме session_id или токена, которые я сохраняю в куки. Учитывая, что данные гостей должны храниться несколько месяцев, я сомневаюсь в подходящей для этого Redis, так как данные хранятся в оперативной памяти. Я рассматриваю возможность использования MongoDB для key-value хранения данных на SSD. Я никогда не реализовывал подобную систему раньше, поэтому я хотел бы узнать, правильно ли я мыслю о выборе MongoDB или есть другие рекомендации для решения этой задачи? Альтернативно, я также рассматриваю создание отдельной таблицы в PosgreSQL, например, guest_cart и guest_favorites, но я осознаю, что это может создать проблемы с автоматическим удалением устаревших записей.
  • 5 ноября 2023 г. 12:59
Ответы на вопрос 3
Выбор между MongoDB и созданием отдельной таблицы в PostgreSQL зависит от ваших конкретных потребностей, ограничений и предпочтений.

Если у вас нет других данных о гостях, кроме session_id или токена, и данные гостей должны храниться несколько месяцев, то MongoDB может быть разумным выбором. MongoDB предлагает гибкую схему и хранение в формате key-value, что может быть удобно для хранения данных, которые не требуют сложной структуры. MongoDB также может обеспечить высокую производительность на SSD.

Однако, перед принятием решения, вам стоит учитывать следующие факторы:

1. Масштабируемость: Если ваш интернет-магазин ожидает большое количество гостевых пользователей и нагрузку на базу данных, то MongoDB может быть лучшим выбором для масштабирования горизонтально.
2. Ограничения схемы: MongoDB не обеспечивает строгую схему, поэтому вам нужно будет контролировать и обрабатывать данные, чтобы предотвратить проблемы, такие как дублирование или неправильные ссылки.
3. Управление данными: При использовании MongoDB вы должны позаботиться о резервном копировании и восстановлении данных, а также о правильном управлении индексами и производительности.

Если вы предпочитаете использовать PostgreSQL и хранить данные о гостях в отдельной таблице, это также может быть рациональным выбором. Вам нужно будет реализовать логику для автоматического удаления устаревших записей из этой таблицы, чтобы избежать накопления мусорных данных. PostgreSQL предоставляет средства для выполнения такой очистки данных, например, с использованием механизма триггеров и планировщика заданий.

В конечном счете, решение будет зависеть от ваших потребностей, ограничений и уровня комфорта с тем или иным инструментом. Рекомендуется провести подробное исследование и тестирование обоих вариантов до принятия окончательного решения.
Записывайте уникальную сессию гостя в базу данных в таблицы, такие как guest_cart, guest_favorites и другие. В случае, если пользователь зарегистрируется, перенесите данные из этих таблиц в основную запись пользователя. Сохраняйте время последнего действия (last_action_ts) в сессии базы данных и удалите данные, если last_action_ts старше 2 месяцев.
Храните данные на клиентской стороне, используя куки или localstorage. Нет необходимости использовать базу данных.
Похожие вопросы