Зберігання сесій - stack overflow російською

Якщо порівнювати зберігання в БД і в файлової системі.

Видимі мною плюси:

  • Спрощення чистки за рахунок використання індексів (як правило, реляційні або документ-орієнтовані БД) або автоматичного чищення ключів (як правило, key-value БД).
  • Якщо БД реляційна - можливість зв'язків інших сутностей з сесіями. Закрилася сесія, пішов ряд - за рахунок ON DELETE CASCADE автоматично вичистити і пов'язані об'єкти.
  • Велика безпеку для shared-хостингів, де, в разі неправильної конфігурації сервера можна отримати доступ до файлів з даними сесій, або, як мінімум, перерахувати їх імена (ідентифікатори).
  • Якщо сериализация саморобна або в поширений формат, то можна розділяти сесії між декількома підсистемами, в тому числі, реалізованими і на різних мовах і технологіях.

Видимі мною мінуси:

  • Залежно від БД швидкість роботи з сесіями може виявитися значно нижче, уповільнивши завантаження сторінок. Скажімо, в PostgreSQL я б класти сесії став тільки по серйозно обґрунтованої необхідності. Якщо БД робить якісь гарантії надійності зберігання, то, можливо, вона тільки витрачає зайвий час.
  • Малокорисна інформація в БД може призводити до її зайвого розростання. Сесії живуть не дуже довго - дані, по суті, ефемерні. Скажімо, з in-memory БД (наприклад, MemcacheDB, Redis) на букального невеликій кількості активних відвідувачів, які не хочуть приймати cookies (роботи добре підходять), легко можна марно втратити досить багато пам'яті. Домогтися дефрагментації і вивільнення-віддачі її назад системі може виявитися не найлегшою завданням.

відповідь дан 8 Листопада '12 в 0:14

Схожі статті