Caricamento del database in memoria e interrogazione

-1

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.

    
posta Zaid Amir 28.08.2014 - 12:07
fonte

2 risposte

3

Il tempo impiegato per interrogare un database locale su disco dovrebbe essere di un ordine di grandezza inferiore al tempo richiesto per eseguire il backup di un file o comunicare su Internet. (Il tuo database non è sul server online, vero? In tal caso tieni una copia memorizzata nella cache locale - supponendo che non sia condivisa tra gli utenti.Usa un numero di versione per verificare che l'host locale stia utilizzando la stessa versione del database come server remoto).

Mi aspetto alcuni effetti di recency: dopo la creazione di un file, è probabile che venga aggiornato o rinominato. Quindi se l'accesso al database è ancora un problema, salva alcune delle voci recenti ...

    
risposta data 28.08.2014 - 21:31
fonte
3

Il caricamento dei dati nella memoria in modo sano è il lavoro del motore del database ...

NON è necessario eseguire manualmente tale attività, il motore di database eseguirà tale attività per conto dell'utente, il suo scopo è elaborare le query e memorizzare nella cache i dati richiesti. A meno che non stiate sparando migliaia di query al secondo, non abbiate paura di lanciare più query su un database, è progettato per questo

    
risposta data 28.08.2014 - 21:40
fonte

Leggi altre domande sui tag