12000 fichiers dans un repertoire - Divers - Programmation
Marsh Posté le 05-03-2008 à 20:36:54
Hello,
pourquoi ne pas créer une arborescence ?
un dossier "a" pous les fichiers commencant par "a", ....
et eventuellement une sous arbo pour la deuxième lettre.
Ca me parait être la solution la plus simple à implémenter et ce quel que soit le langage...
@+
Marsh Posté le 06-03-2008 à 11:22:59
J'ai déjà eu ce genre de problème et on avait résolu ça en faisant une arborescence de fichier :
- le répertoire de base contient 256 répertoires nommés de '00' à 'FF'
- chaque répertoire contient 256 répertoires
Ensuite pour savoir dans quel répertoire mettre un fichier il suffit de faire un hash du nom du fichier (SHA-1 ou MD5) et récupérer les 4 premiers caractères pour en déduire le chemin.
Exemple :
Un fichier nommé "Zorglub.txt" donnera le hash suivant EDC329B1DEA415CC8F2800B72234D8DB25BDAEAA et ira donc dans le répertoire ED/C3
Bien sur avec une telle architecture, on peut gérer un nombre pharaonique de fichier, si pour toi, 12000 fichiers c'est le max, tu peux te contenter de répertoires à 1 seul caractères (de '0' à 'F')
et le fichier exemple ira dans le répertoire E/D.
Par contre, pour avoir une recherche efficace d'un fichier, il faut connaître son nom exact car faire une recherche dans plus de 65000 répertoires, c'est pas tip top
Pour info, si tu prends des répertoires à 1 caractère, ça te fait quand même 256 répertoires différents et avec 12000 fichiers, tu auras une moyenne de 46 fichiers par répertoire
Marsh Posté le 06-03-2008 à 11:39:47
bah trouve toi la doc sur les perfs / limites de NTFS. Sur d'autres FS genre ext3 / reiserfs, ça ne pose aucun problème ni de perf ni de rien.
Marsh Posté le 05-03-2008 à 16:08:27
Bonjour, sous Windows avec système ntfs je souhaite mettre à disposition via un serveur de fichier (conçu en C) 12000 fichiers de 5ko max.
tout d'abord, au niveau du FS NTFS, n'y a-t-il pas un risque de stocker autant de petits fichiers dans un même répertoire ?
(chaque fichier à un nom unique)
j'ai testé 200 fopen sur un repertoire de 2000,4000,8000 et enfin 12000 fichier de 1mo sans différence notables.
lors des fopen, il y a t-il une recherche de la part de l'OS du fichier en question ?
12000 fichiers c'est un début, cela pourrait augmenter assez rapidement.
j'ai un peu peur de stocker autant de fichier dans un seul et même répertoire : déjà à 12000 l'explorateur windows à un peu de mal
j'imagine les ravages d'un crash windows (coupure de courant par ex) suivis d'un bon vieux scandisk.
J'ai pensé a 2 autres solutions de stockage
- creer une image ISO de tous mes fichier et la monter avec un lecteur virtuel
- stocker le tout en base (mysql)
qu'en pensez vous ?