Je gère une application qui contient un magasin de fichiers dans lequel tous les fichiers sont stockés avec des noms de fichiers égaux à leurs sommes md5. Tous les fichiers sont stockés dans un répertoire. Actuellement, il y en a des milliers, mais bientôt il devrait y avoir des millions de fichiers sur le serveur. Le serveur actuel exécute Ubuntu 11.10 sur un système de fichiers ext4.
Quelqu'un m'a dit qu'il n'était pas judicieux de mettre de nombreux fichiers dans un répertoire, car cela entraînerait une augmentation significative du temps de recherche et de la fiabilité (il avait une histoire sur le nombre maximal de fichiers sur lesquels un seul répertoire pourrait pointer, résultant en une grande liste chaînée). Au lieu de cela, il a suggéré de créer des sous-répertoires avec par exemple des sous-chaînes du nom de fichier. Cependant, cela rendra certaines choses dans ma demande beaucoup plus lourdes.
Est-ce toujours vrai, ou les systèmes de fichiers modernes (par exemple, ext4) ont-ils des moyens plus efficaces pour gérer cela et évoluer naturellement? Wikipedia a quelques détails sur les systèmes de fichiers, mais il ne dit rien sur le nombre maximum de fichiers par répertoire, ni sur les temps de recherche.
la source
Les systèmes de fichiers modernes gèrent très bien les très gros répertoires, même pour des millions de fichiers. Mais les outils conventionnels ne le font pas. Par exemple, répertorier un répertoire aussi volumineux avec "ls" prendrait beaucoup de temps car il lirait normalement l'intégralité du répertoire et le trierait (bien que vous puissiez utiliser ls -f pour éviter le tri). Il ne commencerait pas à afficher les fichiers avant qu'ils ne soient tous lus. La division des noms est utile dans certains cas, mais pas dans tous (par exemple, la réplication rsync peut encore avoir besoin de collecter l'arborescence complète des noms).
la source
Puis-je suggérer d'utiliser une base de données SQL à la place? Cela transformerait probablement cette faiblesse perçue dans votre application en force.
la source