L'applicazione continuerà (all'incirca ogni secondo) a raccogliere la posizione degli utenti e a memorizzarli.
Questi dati sono strutturati. In un database relazionale, verrebbe memorizzato come:
| user | timestamp | latitude | longitude |
Tuttavia, ci sono troppi dati. Ci saranno 60 × 60 × 24 = 86.400 record per utente, ogni giorno. Anche con 1000 utenti, ciò significa 86.400.000 di record al giorno.
E non sono solo 86.400.000 di record al giorno. Perché questi record verranno elaborati e verranno archiviate anche le versioni elaborate. Quindi, moltiplica quel numero con circa 2.
Come intendo utilizzare i dati
In sostanza, ho intenzione di creare versioni a grana più grossa dei dati sulla posizione per un consumo più semplice. Cioè:
- Ordina i dati ricevuti con i timestamp.
- Assimilare questo elenco in ordine, determinare se la posizione è cambiata in modo significativo (controllando quanto è cambiato latitudine e longitudine)
- Rappresenta le modifiche di posizione non significative come una singola voce nell'output (quindi, l'output è una versione a grana grossa dei dati di posizione).
- Esegui questo processo sull'output, richiedendo un cambio di latitudine e longitudine ancora più grande per un cambiamento significativo. Quindi, l'output da produrre dall'uscita precedente sarà ancora più granuloso.
- Esegui l'intero processo quanto necessario.
- Aggrega una gamma di risoluzioni e inviale agli utenti. Inoltre, memorizza tutte le risoluzioni dei dati per un consumo successivo.
Che cosa dovrei usare per memorizzare questi dati? Dovrei usare un database relazionale o una soluzione NoSQL? Quali altre cose dovrei prendere in considerazione durante la progettazione di questa applicazione?