|
|
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
Господа. Подскажите пожалуйста, какие есть плюсы и минусы хранить состояние сесии для REST сервиса в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 18:20:32 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
Есть система, взаимодействующая по REST с клиентами. При первом логине клиенту выдается авторизационный ключ, а в системе создается session. При следующем запросе клиент предоставляет ключ и эта сессия находится по нему, если она валидная, то выдаются запрошенные ресурсы. Есть требование хранить сессию в бд. Какие минусы плюсы у этого решения? Какие нюансы в реализации, на что надо обратить внимание? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 18:25:12 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
Очень, очень общий ответ, который ни в коему случае нельзя рассматривать, как руководство к действию. Плюсы: - персистентность, ваши сессии переживут падение app server - простота реализации Минусы: - относительно медленно (по сравнению с хранением сессии только в памяти) - может стать узким местом при наращивании нагрузки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 18:35:45 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
osonПри первом логине клиенту выдается авторизационный ключ, а в системе создается session. При следующем запросе клиент предоставляет ключ и эта сессия находится по нему, если она валидная, то выдаются запрошенные ресурсы. По ТЗ слово session можно заменить куки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:11:05 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
Petro123По ТЗ слово session можно заменить куки.Это как? В куках хранят идентификатор сессии, а саму сессия хранят на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:19:42 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
cdtyjvPetro123По ТЗ слово session можно заменить куки.Это как? В куках хранят идентификатор сессии, а саму сессия хранят на сервере. Всё зависит от того, что и зачем хранится. - можно ничего не хранить, кроме ID о том что это Петров... чтобы он не вводил пароль. - можно хранить только дату последнего входа, тогда теряется сам смысл сабжа. Дату можно и в куке хранить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:47:37 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
cdtyjv- может стать узким местом при наращивании нагрузки Это спорный вопрос. Обычно узким местом становится репликаций HTTP сессии в JEE на кластере. В случае хранения сессии в БД, репликация не нужна. Масштабируемость должна быть лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:49:27 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
cdtyjvЭто как? В куках хранят идентификатор сессии, а саму сессия хранят на сервере. Не уверен, что именно пытается сказать Petro123. Но есть ещё и такой способ оптимизации сессии, как вынос состояния на клиента. Т.е. данные сессии хранятся в куках и на странице в подписаном виде. Такой подход может серьезно снизить нагрузку с сервера за счет незначительного прироста трафика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:51:34 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТ.е. данные сессии хранятся в куках именно это. Не зря же там появилась цела локальная БД в интернет эксплорерах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 10:56:50 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТакой подход может серьезно снизить нагрузку с сервера за счет незначительного прироста трафика. А если реализовать полноценное RIA, то даже и прироста трафика не будет. Ведь нет смысла всё состояние гонять на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 11:07:06 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
osonПодскажите пожалуйста, какие есть плюсы и минусы хранить состояние сесии для REST сервиса в БД? Сессия не имеет отношение к HTTP и REST. Поэтому упоминание REST тут лишнее. Если же говорить о RIA, где сервер реализован в виде REST сервиса, то возникает вопрос. Почему сессия не живет на клиенте? Зачем она серверу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 11:08:51 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
Можно сказать, что сессия поддерживается на стороне клиента. Клиент получает auth_key при логине и потом при каждом следующем запросе должен отсылать его. А на стороне сервера по этому auth_key каждый раз находится его session object, в котором записано, что этот клиент уже авторизовался, что он имеет определенные права доступа, и если он вызывает сервис, к которому доступа не имеет, то получает сообщение о нехватке прав. Что тут не так? Какой RIA я не знаю. Я выдаю только REST интерфейс, а что с ним делает разработчик интерфейса на разных клиентах, это его уже дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 14:09:05 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
oson,авторчто он имеет определенные права доступа, и если он вызывает сервис, к которому доступа не имеет, то получает сообщение о нехватке прав. Вроде бы канонический рест подход состоит в том, чтобы информация о правах доступа каждый раз доставалась из базы, соответственно на сервере ничего хранить не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 14:29:39 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
osonМожно сказать, что сессия поддерживается на стороне клиента. Клиент получает auth_key при логине и потом при каждом следующем запросе должен отсылать его. А на стороне сервера по этому auth_key каждый раз находится его session object, в котором записано, что этот клиент уже авторизовался, что он имеет определенные права доступа, и если он вызывает сервис, к которому доступа не имеет, то получает сообщение о нехватке прав. Это всё? В такой ситуации никаких особых бенефитов при переносе сессии в базу не будет. Даже если репликации сессии нет и нода упадёт, то клиенту просто нужно перелогинится. osonЧто тут не так? Какой RIA я не знаю. Я выдаю только REST интерфейс, а что с ним делает разработчик интерфейса на разных клиентах, это его уже дело. Вы знаете своё ТЗ, а мы нет. Поэтому мы отвечаем на общий вопрос устредненной ситуации и не стоит удивлятся тому что ответ может не подходить вашему конкретному случаю. Если права доступа это всё что хранится в сессии, то эти же данные уже есть в базе. Поэтому хранить отдельно и сессию в базе нет никакого смысла, так же как и перечитывать её при каждом запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 14:30:25 |
|
||
|
Хранение сессии в бд
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪВроде бы канонический рест подход состоит в том, чтобы информация о правах доступа каждый раз доставалась из базы, Канонический REST никакого отношения к базе не имеет. Йуный джавистЪсоответственно на сервере ничего хранить не надо. Угу. Только потом появится кеш в памяти, для опимизации доступа к БД, который в результате будет работать совершенно идентично HTTP Session. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 14:32:00 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2128551]: |
0ms |
get settings: |
12ms |
get forum list: |
24ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
37ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 450ms |

| 0 / 0 |
