Sto eseguendo un sito Web che sta iniziando a crescere oltre la semplice prestazione e Tunning. È un'app PHP con MySQL come backend. MySQL è sintonizzato correttamente e il codice è ottimizzato.Best practice per denormalizzare dati da DB relazionali a non relazionali
La cosa è che vedo che posso usare una sorta di denormalizzazione per accelerare le cose.
Supponiamo di avere un sito simile a eBay o Amazon. Hai prodotti nel tuo database con alcune informazioni correlate (venditore, clienti che hanno acquistato il prodotto, città, stato, ecc.). Sarebbe più tabelle in un DataBase relazionale, ed è buono per mantenere questo modo di fare buoni querys. Ad esempio, per la home page, potresti avere un unico documento denormalizzato (ad esempio in MongoDB). Potrebbe essere una collezione con gli ultimi prodotti, denormalied, simile a questo:
products = {
{
id:13,
name:"Some product",
city:"aCity",
state:"aState",
price:"10"
},
{
id:123,
name:"another product",
city:"aCity",
state:"aState",
price:"10"
}
}
In questo modo, ho potuto query che insieme al posto del database MySQL (con tutte le join coinvolti) e le cose potuto ottenere veramente veloce.
Ora, ecco la domanda. Quando e come denormalizzeresti quei dati? Ad esempio, potrei decidere di denormalizzare i dati quando sono inseriti.
Quindi, nel mio "create-product.php" (semplicemente messo). Potrei fare tutto il "insert into" per mysql, e dopo potrei fare il salvataggio nella raccolta Mongo.
Oppure, potevo semplicemente eseguire un programma nel server. Oppure fai qualche cron per cercare gli ultimi prodotti.
Tutte queste sono posibilities. cosa fai? Qual è la tua esperienza?
Grazie mille.
Sembra che tu stia cercando una cache semplice. – hakre
L'ho provato hakre. Ma preferisco Mongo, non è veloce come memcache, ma è persistente, qualcosa di cui ho bisogno in questo momento. Grazie – santiagobasulto
Che ne dici di cambiare il backend della tua chache in mongo e provarlo? – hakre