Ci sono delle volte in cui le scelte di design non sono fatte propriamente benissimo.
Purtroppo stavolta debbo fare mea culpa io, in un progetto debbo memorizzare alcuni file legati a dei record di un database, per non appesantire il db ho deciso di metterli tutti in una cartella.
Peccato che quando i file diventano decine di migliaia poi la cartella non sia più browsabile, il sistema infatti fatica tantissimo per gestire una cartella con quella mole di file. Il fatto è che a livello di codice accedere al file non è pesante, conoscendo l'id del record posso conoscere il nome del file e gestirlo è uno scherzo, ma la cartella è comunque inutilizzabile a livello di interfaccia utente.
La soluzione è stata semplicemente quella di modificare il criterio di generazione del nome del file per fare in modo che i file vengano spannati su più sottocartelle per rendere il tutto più gestibile anche da interfaccia utente. Dato che il nome del file è comunque generato in base all'id intero del record a cui è correlato, è bastato creare il nome del file con un formato "000000000000", quindi spezzare il nome in gruppi di tre cifre per spostarlo su sottocartelle. Ad esempio se l'id del record è 12145 il nome del file è 000000012145.txt e la cartella è D:\cartelladibase\000\000\012\000000012145.txt. In questo modo in ogni cartella finale ci sono 1000 files. Ora ho lanciato uno script che sposta i file nella nuova struttura e poi verificherò nuovamente la gestibilità delle cartelle da interfaccia utente.
Della serie, scelte di design poco sagge. :D
alk.