La versione generale della domanda è sopra - un po 'più in dettaglio, sto usando Django Rest Framework, ma sono contento che le risposte abbiano a che fare con il problema in astratto.
Quindi, ho dati con ~ 200 paesi, ~ 10.000 regioni (i paesi suddivisi) e ~ 600 distretti extra-piccoli nel Regno Unito.
Il mio piano deve attualmente inviare al client una richiesta, con il suo attuale livello di zoom e posizione, quindi sul server:
- filtra gli oggetti per correggere il livello di zoom
- filtra gli oggetti con quelli che si sovrappongono con la visualizzazione rect
- inserisci "dati personalizzati" nelle funzionalità prima di tornare
Il piano alternativo per 3. consiste nel ritrasferire i "dati personalizzati" in una richiesta separata.
Un po 'più di dettaglio su cosa sono i dati personalizzati - voti - ci sarà un gran numero di votabili e ancora più voti, il mio piano qui è di precalcare / memorizzare i totali dei voti per ogni domanda + area c'è un voto in, per rendere la restituzione dei dati il più velocemente possibile.
Tuttavia, non sono troppo sicuro di un modo ragionevole per ridurre al minimo il numero di query DB, ad esempio ottenere le aree geografiche corrispondenti alla vista e eseguire una query per ottenere tutti i "dati personalizzati" precalcolati corrispondenti.
Qualche idea su un buon modo per affrontare questo tipo di situazione è molto gradita. Potremmo essere bit che non ho pensato troppo (come evitare di inviare nuovamente i dati più del necessario se l'utente continua a scorrazzare)