• # Pistes

    Posté par . En réponse au message HELP - répartir fichiers dans plusieurs dossiers. Évalué à 1. Dernière modification le 19 janvier 2021 à 03:09.

    Il y a certainement plusieurs façons de faire, avant de choisir quelques questions méritent d'être répondues:

    • à quel moment sont effacés les fichiers: la durée de vie est-elle similaire ? Si elle ne l'est pas, une bonne stratégie consiste à choisir le répertoire le moins rempli, soit en nombre de fichier ou d'utilisation d'espace en fonction de l'objectif recherché. Le faire de manière efficace nécessite probablement de conserver un état pour connaître les niveaux de remplissage, la fonction de sélection devant alors aussi se charger de mettre à jour cet état. De plus, pour retrouver tes fichiers par le nom original (c'est un objectif qui peut être recherché, ou pas ?), l'état devra aussi enregistrer le mapping fichier->répertoire, vu qu'à postériori il ne sera pas possible de connaître la fonction de sélection.

    • le nombre de répertoires est-il arbitrairement limité et/ou susceptible de changer ? Une façon simple est de hacher le nom et de diviser le domaine du hash par le nombre de répertoires. Si ce nombre est voué à changer, cela devient plus compliqué. Prenons en exemple git qui stocke les objets non-empaquetés dans un répertoire qui correspond au deux première lettres de la représentation hexadécimale du hash de cet objet (soit 16*16 sous-répertoires). On peut imaginer calculer le hash à partir du nom de fichier (là ou git utilise le contenu des fichiers pour calculer son hash), ou plus simplement de prendre la ou les premières lettre(s) du fichier si la distribution des noms de fichier s'y prête. Cette méthode à l'avantage de ne pas nécessiter de maintenir un état et d'être très simple à mettre en oeuvre. Cependant elle est moins flexible.