Pregunta

Estoy en el proceso de implementar el almacenamiento en caché para mi proyecto. Después de ver las estructuras de directorios de la memoria caché, he visto muchos ejemplos como:

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

Tienes la idea. Otro ejemplo para almacenar archivos, digamos que nuestro archivo se llama IMG_PARTY.JPG , una forma común es colocarlo en un directorio llamado:

files/i/m/IMG_PARTY.JPG

Algunos pensamientos vienen a mi mente, pero me gustaría saber las verdaderas razones de esto.

  • Los sistemas de archivos que realizan búsquedas lineales encuentran archivos más rápido cuando hay menos de ellos en un directorio. Dicha estructura difunde los archivos.

  • Para no desordenar las utilidades * nix como rm , que toman un número finito de argumentos y eliminar una gran cantidad de archivos a la vez tienden a ser intrépidos (tener que pasarlos aunque encontrar etc.)

¿Cuál es la verdadera razón? ¿Qué es un " bueno " estructura de directorios de caché y por qué?

¿Fue útil?

Solución

Cada vez que lo he hecho, ha sido para evitar búsquedas lineales lentas en sistemas de archivos. Afortunadamente, al menos en Linux, esto se está convirtiendo en una cosa del pasado.

Sin embargo, incluso hoy en día, con los directorios basados ??en b-tree, será difícil tratar con un directorio muy grande, ya que tomará una eternidad y un solo día obtener una lista de todos los archivos, no importa encontrar el archivo correcto .

Otros consejos

Solo usa fechas. Dado que se eliminará por fecha. :)

Si hace ls -l , todos los archivos deben estar stat () para obtener detalles, lo que aumenta considerablemente el tiempo de listado; esto sucede si el FS utiliza estructuras hash o lineales.

Entonces, incluso si el FS tiene la capacidad de hacer frente a directorios increíblemente grandes, hay buenas razones para no tener grandes estructuras planas (también son un cerdo para hacer copias de seguridad)

He evaluado GFS2 (agrupado) con 32,000 archivos en un directorio o en una estructura de árbol: las listas recursivas fueron alrededor de 300 veces más rápidas que las de una lista cuando estaban en una estructura plana (podría llevar hasta 10 minutos) para obtener una lista del directorio)

EXT4 mostró proporciones similares, pero como el punto final era solo un par de segundos, la mayoría de las personas no se darían cuenta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top