Sto lavorando a un progetto che genera enormi quantità di dati e li memorizza in un database SQL
. Sto parlando di circa mille dischi al secondo. Quindi devo spingere quei dati in un database. Se faccio la generazione dei dati e il database spingo in sequenza, rallenterà la generazione dei dati che non è accettabile. Ho considerato di mantenere un buffer e due processi paralleli: uno scriverà i dati nel buffer e altri leggeranno i dati dal buffer e passeranno al database. Questa soluzione potrebbe funzionare ma il problema è dovuto alla latenza di scrittura nel database, il buffer diventa troppo grande e alla fine causa un'eccezione di limite di memoria. Anche scrivere su un file e quindi aggiornare il database dal file non sembra essere una soluzione molto buona. Dal punto di vista dell'ingegneria del software, quale altra soluzione posso prendere in considerazione.
Modifica per commenti:
- Scrivere in un file non sembra essere una buona soluzione dato che anche le dimensioni del file diventeranno troppo grandi. Sento che non è così che un gigante della tecnologia risolverà questo tipo di problemi.
- I dati vengono generati da alcuni calcoli. Il calcolo è critico nel tempo e prevediamo un calcolo al secondo. Quindi 1K di record al secondo.