Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 597, comments - 1062, trackbacks - 81

My Links

News

Gian Maria Ricci
Mvp Logo
CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Scelte di design

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.

Print | posted on martedì 1 luglio 2008 17.20 | Filed Under [ Generale ]

Feedback

Gravatar

# re: Scelte di design

se nella cartella \000\000\000\ cioè la primissima hai anche 1000 file, che db usi??
:-))
anche a me piacciono sempre le soluzioni dove non ci sono gli if then else...
ma per leggibilità per chi verrà dopo di te, metti almeno un controllo sul nro di file prima della scrittura
Buona serata
01/07/2008 21.50 | Marco Mangia
Gravatar

# re: Scelte di design

Per l'utilizzatore è tutto trasparente, nel senso che si recupera un entità, chiamiamola AnalysisResult, questa entità ha una proprietà stringa la quale in lazy carica il dato dal file, quindi l'utilizzatore è comletametne schermato dalla logica.

Chi deve mettere mano alla classe trova un metodino veramente semplice che dall'id dell0entità calcola il nome del file, quindi la logica è abbastanza semplice. Il fatto di avere 1000 file per cartella derva dalla logica utilizzata, non ho mai conflitti, un file con id 1000 va nella cartella 000\000\001\ ;)

Alk.
02/07/2008 10.48 | Gian MAria
Comments have been closed on this topic.

Powered by: