Sto cercando di costruire l'architettura per il seguente, e volevo vedere cosa ne pensano gli altri.
Supponiamo che il sistema stia eseguendo un algoritmo non banale (quindi non è semplicemente una somma di qualcosa, ecc.) sui dati raccolti su ciascun utente. Alcuni utenti avranno 10 righe di dati, alcune avranno decine di migliaia. I dati saranno le posizioni geografiche dell'utente nel tempo. Ci saranno più di 10-100 milioni di utenti e i dati su molti utenti arriveranno ogni giorno, potenzialmente ogni minuto per alcuni.
A intervalli periodici (1/5/15 minuti, fondamentalmente il più presto possibile), vorrei eseguire quell'algoritmo non banale su ogni dato utente, che sputerebbe fuori un paio di numeri che sarebbero poi segnalati .
Un modo per modellare quello che è quello di archiviare in un db NoSQL ed elaborare i dati di ciascun utente su un cluster Akka. Qualche raccomandazione per il DB?
I dati utente qui sono fondamentalmente un log di append dove, una volta aggiunti, i dati non cambieranno, ma continua a crescere in continuazione, e alcuni utenti hanno sproporzionatamente più dati di altri. Per elaborare i dati per utente, tutto deve essere caricato in memoria da qualche parte, quindi il miglior scenario possibile è dove tutti i dati sono in memoria e rielaborati ad intervalli di un minuto - il lato negativo è che avrei bisogno di terabyte di RAM per farlo e se i server in memoria si abbassano, tutti i dati dovrebbero essere ricaricati e ci vorrebbe un po 'di tempo.