Збереження стану сеансу в базі даних () — шаблон проєктування, який пропонує зберігати стан сеансу в базі даних.

Опис

При реалізації клієнт-серверної архітектури необхідно реалізувати передачу даних між обома сторонами. При цьому варто зберігати інформацію про сеанс.

Коли клієнт відправляє запит до сервера, перше, що робить сервер — це звертається до бази даних, щоб отримати із неї данні необхідні для запиту. Після чого він (сервер) виконує всю необхідну роботу та записує дані назад у сховище. Якщо дані ідентифікують сеанс та вимагають довготривалого збереження, але короткотривалої взаємодії рішенням буде зберігати сеанс в базі даних та кешувати його на момент роботи.

Таким чином, даний шаблон пропонує зберігати стан сеансу в базі даних.

Переваги та недоліки

Переваги

Легко обмінювати стан сесії при наявності реплікацій вебсервера Стан сеансу не втрачається, якщо сервер виходить із ладу Висока надійність. Інформація про користувача прихована в сховищі Можна легко збільшувати розмір сесії

Недоліки

Необхідно витрачати додаткові ресурси на відновлення сеансу. В деяких випадках варто застосовувати кеш, що при довгій роботі сеансу може погано вплинути на продуктивність серверу Не доцільно зберігати стан сесії, якщо вона ніколи більше не відновлюється Якщо декілька вебсерверів працюють з однією сесією варто попіклуватись про конкурентний доступ

Реалізація

Типовим прикладом буде відновлення даних користувача при автентифікації.

Якщо сеанс складається із декількох кроків та необхідно не втрачати даних, то в міру заповнення їх можна зберігати у сховищі. Так, наприклад, при реалізації опитувальника необхідно, щоб користувач не втратив заповнені дані. Тоді при заповнені кожного поля, можна запам'ятовувати їх у сховищу, а при повторному відкриті сторінки відновлювати увесь стан.

Див. також Клієнт-серверна архітектура Вебсервер База даних

Джерела Database Session State Patterns of Enterprise Application Architecture