Preocuparse por la escalabilidad de un nuevo sitio
-
13-09-2019 - |
Pregunta
Estoy construyendo una aplicación web que tiene las siguientes características:
- Sólo tiene un pequeño número de páginas, en casa, en contacto con nosotros, sobre, singup, etc.
- Cada usuario tiene una página basada en jQuery que les permite arrastrar / soltar / manipular elementos DOM.
- Cuando un usuario ha terminado de manipular los elementos que pueden golpear Guardar y los elementos se envían a través de JSON a un script PHP en el servidor. También se puede cargar previamente guardado JSON.
Así que, esencialmente: muy pocas páginas con información estática del 90%. Una página con el trabajo del lado del cliente y, potencialmente, una gran cantidad de conseguir / desplazamiento de JSON.
He construido un POC de esta usando PHP / Smarty, jQuery y MySQL. datos de usuario se almacenan en MySQL y también lo es que los datos JSON. Las páginas web se almacenan en caché en Smarty en el disco.
Ahora estoy pensando en la escalabilidad y la pregunta obvia es debo almacenar los datos JSON cambiado a menudo en MySQL o debo utilizar memcacheDB o algún otro almacén de claves-valor? ¿Te ir a la opción fácil MySQL o introducir un almacén de claves-valor ahora o te esperar para ver si el problema se plantea a escala? ¿Estoy siendo realistas cada vez va a llegar a un punto en que MySQL es el cuello de botella?
Estoy pensando en acoger esta en Slicehost para empezar, y luego moverlo si es necesario.
Solución
La pregunta es, ¿habría ninguna consulta sobre la base de estos valores o no? ¿Hay va a ser versiones de los valores específicos a nivel de base de datos o no ... Serilaized datos JSON o va a ser más rápido y más eficiente (almacenamiento en cuanto a) si todo lo que hacemos es tirar de la cadena entera y no tienen requisitos para consultar o modificar a él.
Sobre la base de cómo se cambia la escala, sin embargo, es posible que desee mantener una estructura clave / valor, junto con una representación plana de datos con fines de consulta.
También considere el uso de Apache AB para algunos puntos de referencia y obtener ideas sobre cómo los cambios afectan a su salida simultánea.
Buena suerte:)
Otros consejos
En lo que se refiere al JSON, no va a hacer una diferencia: no veo cómo puede optimizar el almacenamiento de esos datos. Creo que la cuestión se reduce a "¿Qué tan complejo es los datos del usuario?". Si hay un gráfico social masiva conectada con claves externas RDBMS, y es muy difícil para mapear los datos a un almacén de claves-valor, prefiero no hacer el esfuerzo ahora. Sin embargo, si los datos de usuario es sólo información de perfil plano, prefiero traslado a un almacén de claves-valor ahora, que más adelante, antes de usar demasiadas características RDBMS.