Esta publicación de blog muestra los resultados de una comparación de rendimiento de diferentes motores de almacenamiento de sesiones con Magento y parecen haber concluido que hasta unos 75 usuarios concurrentes no hay realmente una diferencia de rendimiento entre ellos.
Creo que en estos niveles (tenían aproximadamente 5 transacciones por segundo, que serían aproximadamente 430k visitas durante un período de 12 horas), la sobrecarga en todo lo demás domina los números de rendimiento que ves, ya que el archivo / DB / Memcache / Redis manejará felizmente el tráfico sin sudar si se usa correctamente.
Eso deja otros factores como la escalabilidad, la confiabilidad y la seguridad.
Primero me gustaría decir que cualquier cosa que comprometa su almacenamiento de archivos probablemente también comprometerá cualquier otra cosa, ya que un atacante puede modificar el código de su aplicación o al menos descubrir claves y protocolos / credenciales de acceso al almacenamiento, incluso si tienen solo lectura acceso. El almacenamiento de archivos funcionará bien para un sitio de bajo volumen, es fácil de configurar y es fácil razonar. Por mucho que diga que golpeó el disco, una lectura de base de datos también afectará al disco y si la base de datos puede almacenarlo en caché, es probable que su sistema operativo también haya almacenado en caché el archivo de sesión. Además, solo se lee un archivo, y su sistema de archivos es brillante para obtenerlo si ya conoce su nombre. Si está utilizando PHP, ¿sabe cuántas lecturas de archivos tiene que hacer el sistema solo para servir su aplicación? La desventaja es que puedes '
Memcache es relativamente rápido y si está considerando las soluciones de clase Memcache de manera más amplia (Redis, etc.), hay algunas que incluso prometen persistencia con lecturas de memoria para mayor velocidad para que pueda aprovechar al máximo ambos mundos. También son relativamente fáciles de razonar y la naturaleza de valor clave de las sesiones es exactamente para lo que han sido diseñadas. ¿Sabes cuánto tendrías que poner en una sesión para completar uno de estos? De cualquier manera, todas sus opciones lo obligarán a comprometerse si alcanza su capacidad. Los discos se llenan con archivos (factor de número y tamaño aquí), los almacenes de caché se llenan en capacidad y las bases de datos tienen un número limitado de filas y los mismos límites de capacidad de disco que el enfoque de archivo. Además, estos sistemas solo se distribuyen si los ejecuta de manera distribuida. La mayoría funciona bien con una única configuración de servidor. Si los distribuye, entonces probablemente ya haya distribuido servidores web / servidores de bases de datos, etc., por lo que los problemas de su sistema distribuido ciertamente no aparecerán en su elección de almacenamiento de sesión. Sin embargo, cuando desea 10 veces el tráfico / capacidad, etc., llegar allí es mucho más natural con esto que con el esquema de almacenamiento de archivos. Algunos almacenes de clave / valor también le permitirán realizar análisis simples de los datos de la sesión con relativa facilidad, pero la mayoría no lo acercará a lo que SQL puede hacer.
No estoy seguro de por qué propone que la base de datos puede ser más confiable que las otras opciones, pero entiendo el atractivo de la base de datos, ya que su aplicación PHP probablemente ya la utiliza. Esto significa que no agrega otra dependencia del servidor y probablemente pueda reutilizar la misma conexión que usa para obtener datos de sesión para obtener datos de usuario, de modo que no tenga que establecer uno para datos, uno para Memcache, etc. Si indexa el bien, también funcionará razonablemente rápido y proporciona una semántica bastante simple con la que ya está familiarizado para cosechar sesiones antiguas o incluso analizar datos de la sesión (no estoy seguro de por qué querría hacerlo y si no lo hace, probablemente esto no No importa mucho). Escalar a escalas masivas no es tan trivial como con algo como Redis,
Creo que esta elección no es tan importante al principio. Cada enfoque tiene desafíos, ventajas y cosas en las que debe pensar. En términos generales, probablemente pueda salirse con la suya simplemente usando los valores predeterminados de PHP / cualquier marco que use o incluso lo más fácil para comenzar. Si la elección resulta ser mala más adelante, sus análisis de rendimiento le informarán y usted contará con los datos que necesita para tomar las decisiones apropiadas dada la naturaleza específica del tráfico que obtiene. Por adelantado, todo lo que razonablemente puede tener es especulación general.