Domanda

Sto implementando la memorizzazione nella cache per il mio progetto. Dopo aver esaminato le strutture di directory della cache, ho visto molti esempi come:

cache
cache/a
cache/a/a/
cache/a/...
cache/a/z
cache/...
cache/z
...

Hai avuto l'idea. Un altro esempio per la memorizzazione di file, supponiamo che il nostro file sia denominato IMG_PARTY.JPG , un modo comune è quello di inserirlo in una directory denominata:

files/i/m/IMG_PARTY.JPG

Alcuni pensieri mi vengono in mente, ma mi piacerebbe conoscere le vere ragioni di ciò.

  • I filesystem che eseguono ricerche lineari trovano i file più velocemente quando ce ne sono meno in una directory. Tale struttura diffonde file sottili.

  • Non confondere i programmi di utilità * nix come rm , che accettano un numero finito di argomenti e che elimina un gran numero di file contemporaneamente tende ad essere confuso (dovendo passare attraverso trova ecc.)

Qual è il vero motivo? Che cos'è un "buono" struttura della directory della cache e perché?

È stato utile?

Soluzione

Ogni volta che l'ho fatto, è stato per evitare ricerche lineari lente nei filesystem. Fortunatamente, almeno su Linux, questo sta diventando un ricordo del passato.

Tuttavia, anche oggi, con le directory basate su b-tree, sarà difficile gestire una directory molto grande, dal momento che ci vorrà un'eternità e un giorno solo per ottenere un elenco di tutti i file, non importa trovare il file giusto .

Altri suggerimenti

Usa solo le date. Dal momento che rimuoverai per data. :)

Se si esegue ls -l , tutti i file devono essere stat () ed ottenere i dettagli, il che aumenta notevolmente il tempo di quotazione - ciò accade se il FS utilizza strutture con hash o lineari.

Quindi, anche se FS ha una capacità di far fronte a directory di dimensioni incredibilmente grandi, ci sono buone ragioni per non avere grandi strutture piatte (sono anche un maiale per il backup)

Ho confrontato GFS2 (cluster) con 32.000 file in una directory o disposti in una struttura ad albero - gli elenchi ricorsivi erano circa 300 volte più veloci rispetto all'ottenimento di un elenco quando erano tutti in una struttura piatta (potevano richiedere fino a 10 minuti per ottenere un elenco di directory)

EXT4 ha mostrato rapporti simili ma poiché il punto finale era solo un paio di secondi, la maggior parte delle persone non se ne accorgeva.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top