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
Message édité par Bidem le 06-03-2008 à 11:29:21