Якщо порівнювати зберігання в БД і в файлової системі.
Видимі мною плюси:
- Спрощення чистки за рахунок використання індексів (як правило, реляційні або документ-орієнтовані БД) або автоматичного чищення ключів (як правило, key-value БД).
- Якщо БД реляційна - можливість зв'язків інших сутностей з сесіями. Закрилася сесія, пішов ряд - за рахунок ON DELETE CASCADE автоматично вичистити і пов'язані об'єкти.
- Велика безпеку для shared-хостингів, де, в разі неправильної конфігурації сервера можна отримати доступ до файлів з даними сесій, або, як мінімум, перерахувати їх імена (ідентифікатори).
- Якщо сериализация саморобна або в поширений формат, то можна розділяти сесії між декількома підсистемами, в тому числі, реалізованими і на різних мовах і технологіях.
Видимі мною мінуси:
- Залежно від БД швидкість роботи з сесіями може виявитися значно нижче, уповільнивши завантаження сторінок. Скажімо, в PostgreSQL я б класти сесії став тільки по серйозно обґрунтованої необхідності. Якщо БД робить якісь гарантії надійності зберігання, то, можливо, вона тільки витрачає зайвий час.
- Малокорисна інформація в БД може призводити до її зайвого розростання. Сесії живуть не дуже довго - дані, по суті, ефемерні. Скажімо, з in-memory БД (наприклад, MemcacheDB, Redis) на букального невеликій кількості активних відвідувачів, які не хочуть приймати cookies (роботи добре підходять), легко можна марно втратити досить багато пам'яті. Домогтися дефрагментації і вивільнення-віддачі її назад системі може виявитися не найлегшою завданням.
відповідь дан 8 Листопада '12 в 0:14