@banny_name

Какие преимущества хранения сессий в бд?

Пару человек сказало, что хранение сессий в бд, это наилучший вариант( если нужно длительное хранение сессий ), в чем преимущество?
мне ответили в гибкости, но где работа с сессиями становится более гибкой, мне непонятно...

Подскажите пожалуйста, в чем + и -
  • Вопрос задан
  • 6600 просмотров
Решения вопроса 3
@DrImp
Преимущество простое, если сайт высоконагруженный, то у него может быть несколько бакендов на разных серверах, на которые балансируется нагрузка. И если хранить сессии в файлах, то юзера будет разлогинивать при переключении сервера.

Еще удобно связывать сессию с конкретным юзером в БД. Можно вводить ограничения типа "нельзя быть залогиненым с двух браузеров", удобно для онлайн игр.

Или дать функционал "Разлогинить меня на всех устройствах".

И еще наверняка куча вариантов.
Ответ написан
Комментировать
copist
@copist
Empower people to give
Сессию в базе хранят на тот случай, если там есть что-то ценное.
Например, есть конструктор сайтов или социальная сеть. И пользователь может кое-что сделать ещё до регистрации, например, создать пост или профиль свой заполнить. Можно все его временные данные сериализовать и поместить в базу, чаще всего JSON в NoSQL.
В обычную сессию тоже можно сохранить, но обычно пространство для хранения сессий регулярно чистят и тогда данные потеряются.
Сохранять в базу стоит только тогда, когда пользователь сделал что-то. Для каждого пользователя выделять место в базе бессмысленно.
Когда пользователь авторизуется, временные данные переносят на постоянное место хранения.
Регулярно область сессий неавторизованных пользователей чистят, но гуманно, то есть не очень активно, с большим интервалом хранения.

Я обычно с другим сталкивался - данные из базы выгружают в сессию, чтобы меньше нагружать базу.
Вот схема: https://toster.ru/answer?answer_id=645494
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
в чем преимущество?

Нет преимуществ. Ваша пара человек не понимает о чем говорит.

Для начала потому что сессий у одного пользователя может быть множество, и это вполне нормально. Залогиньтесь в двух браузерах одним пользователем например.

Сессия как правило - это необходимые горячие данные пользователя, что нужно сохранить между запросами. БД - одно из самых медленных хранилищ этих данных.

В файлах кстати тоже не стоит хранить. При большой нагрузке io будет подтормаживать.

Длительный период сессии обычно не хранятся, вместо этого на клиент задается токен, по которому человек через много времени может автоматически авторизироваться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@eskrano
по моему ничем. Зайдет к тебе 15к юзеров в день и у тебя +15к записей в бд... Лично мое мнение.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы