У цьому дописі в блозі показані результати порівняння продуктивності різних механізмів зберігання сеансів із Magento, і вони, схоже, зробили висновок, що приблизно до 75 одночасних користувачів насправді різниці між продуктивністю між ними.
Я думаю, що на цих рівнях (у них було близько 5 транзакцій в секунду, що було б близько 430 к.с. за 12 годин), накладні витрати у всьому іншому домінують над показниками продуктивності, які ви бачите, оскільки файл / DB / Memcache / Redis всі щасливо справляться трафік, не порушуючи піт, якщо його правильно використовувати.
Це залишає інші фактори, такі як масштабованість, надійність та безпека.
Я спершу хотів би сказати, що все, що компрометує ваше зберігання файлів, також, ймовірно, може поставити під загрозу будь-що інше, оскільки зловмисник може просто змінити код вашої програми або, принаймні, виявити ключі та протоколи / облікові дані доступу до пам’яті, навіть якщо вони мають лише для читання доступ. Зберігання файлів буде добре працювати на веб-сайті з невеликим обсягом, його легко налаштувати і легко міркувати. Наскільки ви скажете, що ви потрапили на диск, читання БД також потрапить на диск, і якщо БД може кешувати його, ваша ОС також, ймовірно, кешувала файл сеансу. Крім того, його один файл читається, і ваша файлова система блискуча в тому, щоб дістатися до нього, якщо ви вже знаєте його ім'я. Якщо ви використовуєте PHP, чи знаєте ви, скільки зчитувань файлів має зробити система лише для обслуговування вашої програми? Мінус у тому, що ви можете "
Memcache є відносно швидким, і якщо ви розглядаєте рішення класів Memcache ширше (Redis тощо), є такі, які навіть обіцяють наполегливість у читанні пам'яті за швидкістю, щоб ви отримали максимум з обох світів. Вони також відносно прості в обґрунтуванні, і характер ключових значень сеансів - саме те, що вони були розроблені. Чи знаєте ви, скільки вам доведеться вкласти в сеанс, щоб заповнити одну з них? Так чи інакше, всі ваші варіанти змусять вас піти на компроміс, якщо ви досягнете їх можливостей. Диски заповнюються файлами (коефіцієнт кількості та розміру тут), сховища кеш-пам'яті заповнюють ємність, а бази даних мають обмежену кількість рядків і ті ж обмеження ємності диска, що і підхід до файлів. Крім того, ці системи поширюються лише у тому випадку, якщо ви запускаєте їх розподіленим способом. Більшість працює просто чудово за допомогою установки одного сервера. Якщо ви їх розповсюджуєте, то, ймовірно, вже є розповсюджені веб-сервери / сервери баз даних тощо, тому проблеми з розподіленою системою, безумовно, не з’являться у виборі пам’яті сеансу. Однак, коли вам потрібно 10-кратний трафік / пропускну здатність тощо, потрапляння туди набагато природніше, ніж це в схемі зберігання файлів. Деякі магазини ключів / значень також дозволять вам провести простий аналіз даних сеансу порівняно легко, але більшість не дістанеться ніде поблизу того, що може зробити SQL.
Я не впевнений, чому ви пропонуєте, що база даних може бути більш надійною, ніж інші параметри, але я отримую привабливість бази даних, оскільки ваша програма PHP, ймовірно, вже використовує її. Це означає, що ви не додаєте іншу залежність від сервера, і, ймовірно, можете повторно використовувати те саме з'єднання, яке ви використовуєте для отримання даних сеансу для отримання даних про користувача, тому вам не доведеться встановлювати один для даних, один для Memcache тощо. Якщо ви індексуєте індекс Таблиця добре, вона також буде працювати досить швидко і надає досить просту семантику, з якою ви вже знайомі для того, щоб пожинати старі сеанси або навіть аналізувати дані сеансу (я не впевнений, чому ви цього хотіли б, і якщо ви цього не зробите, це, ймовірно, не ' t значення так багато). Масштабування масштабних масштабів не настільки тривіальне, як із чимось на зразок Redis,
Я думаю, що цей вибір на початку не такий важливий. Кожен підхід має виклики та переваги та речі, про які ви повинні думати. Взагалі кажучи, ви, ймовірно, можете піти, просто використовуючи стандартні параметри PHP / будь-яку структуру, яку ви використовуєте, або навіть найпростішу справу. Якщо згодом вибір виявиться поганим, ваша аналітична робота підкаже вам, і ви будете озброєні необхідними даними, щоб зробити відповідний вибір, враховуючи специфіку трафіку, який ви отримуєте. Попереду, все, що можна розумно, - загальні міркування.