Ho un'applicazione Java che riceve alcuni eventi in tempo reale e li spinge al livello dell'interfaccia utente. Voglio registrare tutti gli eventi percepiti e dal momento che il volume delle informazioni sarà enorme, preferisco usare un db NoSQL.Best practice per la registrazione di dati in tempo reale in un DB NoSQL
Ho installato un mongodb per questo scopo che inserisce un documento per evento. Il problema è che questo approccio (un accesso al disco per evento) rallenta notevolmente l'intero processo.
Quindi, quale approccio posso adottare in questa situazione? quali opzioni sono disponibili in mongodb per questo (ad esempio l'inserimento di massa, l'inserimento asincrono, il caching, ...)? passare ad un'altra implementazione di db NoSQL può fare la differenza? quali sono le migliori pratiche qui?
Sarebbe bene sapere qualche dettaglio in più su vincoli di performance attesi. Quanto grande aspettativa hai? 100/s? 10k/s? 1M/s? Picchi medi e possibili? Qual è la dimensione approssimativa dei tuoi eventi quando serializzati? 100 byte? 1 megabyte? Hai bisogno di rivedere i tuoi eventi passati raramente, possibilmente rieseguendoli per una determinata finestra temporale o hai bisogno di fare query ad hoc su di essi? Per quanto tempo hai bisogno di memorizzarli? Db crescerà fino a anni di dati, o puoi fare qualche tipo di pulizia/archiviazione nello storage secondario ogni settimana o giù di lì? –