EDIT: avevi ragione, il problema non è controllare se esiste un file con lo stesso nome ma la connessione. Ho fatto un errore misurando l'ora con StopWatch e incluso una parte che utilizzava la connessione di rete.
Domanda originale: Sto scrivendo un software che analizza i dati da un database. Nel database ci sono molti file di testo - potrebbero essere 100 GB - che vanno da 100 KB a qualche MB (< 10 MB). Il mio software dovrebbe eseguire un'attività di analisi ogni notte. Quindi voglio implementare una cache di file che memorizza i file e li scarica di nuovo solo se sono stati modificati. Il mio problema è che più file ho nella mia cartella di archiviazione, più lento è l'intero processo di verifica della presenza del file. Sto usando C #.
Le mie idee fino ad ora:
- Caricamento lento - scarica il file solo se non è possibile accedervi
- Raggruppa i file nella cartella in modo da avere meno file in una directory
- Creazione di un dizionario con nome file come chiave e Oggetto file come valore per tutti i file in una directory prima di iniziare l'analisi di una cartella (presupponendo che trovare i file in un dizionario dovrebbe essere molto più veloce rispetto al disco)
Ho investito già un po 'di tempo e prima di reimplementarlo voglio sapere:
- C'è qualcos'altro (idea) che potrei provare?
- In C # esiste una best practice per la gestione dei file che consente di ottenere le migliori prestazioni?
Proprio come le informazioni secondarie, se c'è un nuovo file devo analizzare tutte le linee di esso. C'è un modo più veloce di StreamReader se so in anticipo che si tratta di un file separato tabulatore e devo leggere per certo tutte le righe di esso e analizzare le informazioni?
Stiamo parlando di un database Oracle. I file sono archiviati come BLOB nel database. Il database è organizzato come albero e gli elementi hanno figli che sono file che contengono lo stato degli elementi. Quei file che devo scaricare per poterli analizzare. Posso ottenere l'ultima modifica data in modo da poter scaricare solo i file che mi servono (che sono cambiati o sono nuovi). Ci sono circa 300.000 file nel database ma non ho bisogno di tutti loro. Ho accesso in scrittura alle cartelle in cui voglio memorizzarle con il mio programma sul disco locale. Questa struttura di cartelle in cui voglio memorizzarle chiamo "file cache".