Estoy ejecutando un sitio web que está comenzando a crecer más allá del simple rendimiento y el ajuste. Es una aplicación PHP con MySQL como back-end. MySQL está correctamente ajustado y el código está optimizado.Mejores prácticas para la desnormalización de datos de DB relacionales a no relacionales
Lo que pasa es que veo que puedo usar algún tipo de desnormalización para acelerar las cosas.
Supongamos que tiene un sitio similar a eBay o Amazon. Tiene productos en su base de datos con información relacionada (vendedor, clientes que compraron el producto, ciudad, estado, etc.). Eso sería tablas múltiples en una Base de Datos Relacional, y es bueno seguir así para hacer buenas consultas. Pero, por ejemplo, para la página de inicio, podría tener un único documento desnormalizado (por ejemplo, en MongoDB). Podría ser una colección con los últimos productos, denormalied, similar a esto:
products = {
{
id:13,
name:"Some product",
city:"aCity",
state:"aState",
price:"10"
},
{
id:123,
name:"another product",
city:"aCity",
state:"aState",
price:"10"
}
}
De esta manera, podría colección de consulta que en lugar de la base de datos MySQL (con todas las combinaciones que participan) y las cosas podrían ponerse muy rápido.
Ahora, aquí está la pregunta. ¿Cuándo y cómo se desnormalizaría esa información? Por ejemplo, podría decidir que quiero desnormalizar los datos cuando se insertan.
Por lo tanto, en mi "create-product.php" (en pocas palabras). Podría hacer todo el "insertar en" para mysql, y después de eso podría hacer el save to the Mongo collection.
O simplemente podría ejecutar un programa en el servidor. O crea un cron para buscar los últimos productos.
Todas estas son posibilidades. ¿Qué haces? ¿Cuál es tu vencimiento?
Muchas gracias.
Parece que está buscando un caché simple. – hakre
Lo he intentado hakre. Pero prefiero a Mongo, no es tan rápido como Memcache, pero es persistente, algo que necesito en este momento. Gracias – santiagobasulto
¿Qué le parece cambiar el backend de su chache a mongo y probarlo? – hakre