Questo progetto servirà molte richieste duplicate con risposte specifiche della posizione. Cioè 10.000 persone a New York riceveranno la stessa risposta del server (un elenco di aziende a New York), ma una persona ad Atlanta riceverà dati completamente diversi (aziende ad Atlanta).
Architettura pianificata:
1. Nella memoria cache che memorizza la risposta più recente per ogni posizione. Le risposte scadono ogni pochi minuti e viene caricata una risposta aggiornata dal database.
2. Database relazionale memorizza tutti i dati aziendali attuali per ottenere risposte.
Come posso raggruppare i risultati della cache per posizione?
1. Ogni riga di database può sapere in quale città si trova l'azienda e gli utenti dovrebbero scegliere la propria città da un elenco. Quindi avrei una cache dei risultati separata per ogni città.
2. Potrei semplicemente prendere il lat / long dell'utente e memorizzare il lat / long di ogni azienda nella riga del database e fare una query sulla posizione. Non so quanto cacheing potrei fare con questo approccio. Forse vedi se ho risposto a una richiesta entro 20 miglia dalla posizione della query, riutilizzare quella risposta? Questo evita di dover raggruppare le cose in anticipo, ma è meno preciso.
Questo sembra un problema comune. Uno di questi approcci è preferito (o qualcosa di completamente diverso)? La tabella in questione avrà il peggior caso di record di ~ 100k, quindi il sovraccarico di cache è comunque eccessivo? Pianificando l'utilizzo di AWS se questo cambia qualcosa, o se hanno strumenti per questo, dovrei esserne a conoscenza.