Attualmente sto sviluppando un software di backup continuo. La caratteristica fondamentale del software è il backup istantaneo, il che significa che ogni volta che un file viene creato, modificato, rinominato o eliminato, la modifica viene immediatamente riflessa nel repository di backup.
Per raggiungere questo obiettivo abbiamo progettato il sistema in modo che, una volta avviata l'applicazione client, l'intero database dei file di backup sia caricato in memoria. Il problema sorge quando il backup di grandi quantità di file dice 10-15 milioni di file. Questo prima causa un rallentamento del tempo di caricamento e un elevato utilizzo della memoria. In alcuni casi raggiunge i 2 GB.
Anche interrogare il database ad ogni cambiamento è disapprovato poiché causerà pesanti carichi sul disco in cui risiede il database, per non parlare di quanto rallenta il tempo di esecuzione della query quando il database cresce.
Quindi mi chiedevo quali opzioni si debbano progettare un sistema del genere per essere efficiente in termini di memoria e ragionevolmente veloce.