Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Хранение сессии в бд / 15 сообщений из 15, страница 1 из 1
22.09.2013, 18:20:32
    #38404058
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
Господа.
Подскажите пожалуйста, какие есть плюсы и минусы хранить состояние сесии для REST сервиса в БД?
...
Рейтинг: 0 / 0
22.09.2013, 18:25:12
    #38404062
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
Есть система, взаимодействующая по REST с клиентами.
При первом логине клиенту выдается авторизационный ключ, а в системе создается session.
При следующем запросе клиент предоставляет ключ и эта сессия находится по нему, если она валидная, то выдаются запрошенные ресурсы.
Есть требование хранить сессию в бд.
Какие минусы плюсы у этого решения?
Какие нюансы в реализации, на что надо обратить внимание?
Спасибо.
...
Рейтинг: 0 / 0
22.09.2013, 18:35:45
    #38404070
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
Очень, очень общий ответ, который ни в коему случае нельзя рассматривать, как руководство к действию.
Плюсы:
- персистентность, ваши сессии переживут падение app server
- простота реализации
Минусы:
- относительно медленно (по сравнению с хранением сессии только в памяти)
- может стать узким местом при наращивании нагрузки
...
Рейтинг: 0 / 0
23.09.2013, 10:11:05
    #38404359
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
osonПри первом логине клиенту выдается авторизационный ключ, а в системе создается session.
При следующем запросе клиент предоставляет ключ и эта сессия находится по нему, если она валидная, то выдаются запрошенные ресурсы.
По ТЗ слово session можно заменить куки.
...
Рейтинг: 0 / 0
23.09.2013, 10:19:42
    #38404366
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
Petro123По ТЗ слово session можно заменить куки.Это как? В куках хранят идентификатор сессии, а саму сессия хранят на сервере.
...
Рейтинг: 0 / 0
23.09.2013, 10:47:37
    #38404407
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
cdtyjvPetro123По ТЗ слово session можно заменить куки.Это как? В куках хранят идентификатор сессии, а саму сессия хранят на сервере.
Всё зависит от того, что и зачем хранится.
- можно ничего не хранить, кроме ID о том что это Петров... чтобы он не вводил пароль.
- можно хранить только дату последнего входа, тогда теряется сам смысл сабжа.
Дату можно и в куке хранить.
...
Рейтинг: 0 / 0
23.09.2013, 10:49:27
    #38404411
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
cdtyjv- может стать узким местом при наращивании нагрузки
Это спорный вопрос. Обычно узким местом становится репликаций HTTP сессии в JEE на кластере.
В случае хранения сессии в БД, репликация не нужна. Масштабируемость должна быть лучше.
...
Рейтинг: 0 / 0
23.09.2013, 10:51:34
    #38404415
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
cdtyjvЭто как? В куках хранят идентификатор сессии, а саму сессия хранят на сервере.
Не уверен, что именно пытается сказать Petro123. Но есть ещё и такой способ оптимизации сессии, как вынос состояния на клиента.
Т.е. данные сессии хранятся в куках и на странице в подписаном виде. Такой подход может серьезно снизить нагрузку с сервера за счет незначительного прироста трафика.
...
Рейтинг: 0 / 0
23.09.2013, 10:56:50
    #38404423
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
BlazkowiczТ.е. данные сессии хранятся в куках
именно это.
Не зря же там появилась цела локальная БД в интернет эксплорерах.
...
Рейтинг: 0 / 0
23.09.2013, 11:07:06
    #38404440
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
BlazkowiczТакой подход может серьезно снизить нагрузку с сервера за счет незначительного прироста трафика.
А если реализовать полноценное RIA, то даже и прироста трафика не будет. Ведь нет смысла всё состояние гонять на сервер.
...
Рейтинг: 0 / 0
23.09.2013, 11:08:51
    #38404445
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
osonПодскажите пожалуйста, какие есть плюсы и минусы хранить состояние сесии для REST сервиса в БД?
Сессия не имеет отношение к HTTP и REST. Поэтому упоминание REST тут лишнее.
Если же говорить о RIA, где сервер реализован в виде REST сервиса, то возникает вопрос. Почему сессия не живет на клиенте? Зачем она серверу?
...
Рейтинг: 0 / 0
23.09.2013, 14:09:05
    #38404671
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
Можно сказать, что сессия поддерживается на стороне клиента. Клиент получает auth_key при логине и потом при каждом следующем запросе должен отсылать его. А на стороне сервера по этому auth_key каждый раз находится его session object, в котором записано, что этот клиент уже авторизовался, что он имеет определенные права доступа, и если он вызывает сервис, к которому доступа не имеет, то получает сообщение о нехватке прав.
Что тут не так? Какой RIA я не знаю. Я выдаю только REST интерфейс, а что с ним делает разработчик интерфейса на разных клиентах, это его уже дело.
...
Рейтинг: 0 / 0
23.09.2013, 14:29:39
    #38404702
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
oson,авторчто он имеет определенные права доступа, и если он вызывает сервис, к которому доступа не имеет, то получает сообщение о нехватке прав.
Вроде бы канонический рест подход состоит в том, чтобы информация о правах доступа каждый раз доставалась из базы, соответственно на сервере ничего хранить не надо.
...
Рейтинг: 0 / 0
23.09.2013, 14:30:25
    #38404705
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
osonМожно сказать, что сессия поддерживается на стороне клиента. Клиент получает auth_key при логине и потом при каждом следующем запросе должен отсылать его. А на стороне сервера по этому auth_key каждый раз находится его session object, в котором записано, что этот клиент уже авторизовался, что он имеет определенные права доступа, и если он вызывает сервис, к которому доступа не имеет, то получает сообщение о нехватке прав.
Это всё? В такой ситуации никаких особых бенефитов при переносе сессии в базу не будет. Даже если репликации сессии нет и нода упадёт, то клиенту просто нужно перелогинится.


osonЧто тут не так? Какой RIA я не знаю. Я выдаю только REST интерфейс, а что с ним делает разработчик интерфейса на разных клиентах, это его уже дело.
Вы знаете своё ТЗ, а мы нет. Поэтому мы отвечаем на общий вопрос устредненной ситуации и не стоит удивлятся тому что ответ может не подходить вашему конкретному случаю.

Если права доступа это всё что хранится в сессии, то эти же данные уже есть в базе. Поэтому хранить отдельно и сессию в базе нет никакого смысла, так же как и перечитывать её при каждом запросе.
...
Рейтинг: 0 / 0
23.09.2013, 14:32:00
    #38404706
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение сессии в бд
Йуный джавистЪВроде бы канонический рест подход состоит в том, чтобы информация о правах доступа каждый раз доставалась из базы,
Канонический REST никакого отношения к базе не имеет.

Йуный джавистЪсоответственно на сервере ничего хранить не надо.
Угу. Только потом появится кеш в памяти, для опимизации доступа к БД, который в результате будет работать совершенно идентично HTTP Session.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Хранение сессии в бд / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]