Merci pour ces réponses très détaillées ;) Et bientôt je me poserai sans doute aussi la question pour Linux.
Romain Le 5 février 2013 00:28, Philippe Verdy <[email protected]> a écrit : > Il me semblait avoir vu qu'on pouvait indiquer à Windows de ne PAS > maintenir le tri de l'index d'un répertoire particulier (comme il le > fait par défaut), en y mettant un attribut particulier (dans ce cas, > l'index devient une simple liste à parcourir du début à la fin). Pour > des répertoires qui ont de très nombreux fichiers mis à jour très > souvent, ce tri est plus coûteux qu'utile. Mais je ne retrouve plus > l'API sur MSDN. > Malgré tout, si un dossier n'est pas trié, il se pose le problème du > temps de parcours en entier du répertoire avant d'y créer une nouvelle > entrée (sinon il y aurait création d'un doublon), ou pour y retrouver > rapidement un fichier par son nom (c'est ce que fait JTiles puisque'il > n'organise pas du tout ce dossier où il stocke dans un unique dossier > pour chaque fournisseur TMS toutes les tuiles de tous les niveaux de > zoom et de n'importe quelle valeur de x et y). > Comme JTiles est incapable de faire le ménage (il doit y avoir eu du > code pour ça, mais visiblement il ne marche plus ou n'est plus > activé), la seule façon de faire cela efficacement serait que JTiles > divise son cache en sous-dossiers de sorte qu'il n'y ait jamais plus > d'environ 2000 fichiers par sous-dossier. Comment faire ? Déjà il > pourrait créer un niveau de dossier pour le niveau de zoom. > Supposons la limite à entrées par dossier : le niveau de zoom 5 tient > en entier dedans pour toute la planète (je suppose que les tags s'il y > en a sont comptés à part, ils peuvent être aussi stockés à part dans > un unique fichier index "tags"), et les niveaux 0 à 4 tiennent aussi > dans cette limite. Pour le niveau 6 il faudra 4 sous-dossiers, mais le > nombre de sous-dossiers va être multiplié par 4 à chaque niveau de > zoom suivant. On tient jusqu'au niveau de zoom 10. > Après il faudra augmenter la hiérarchie avec un autre niveau de > sous-dossier jusqu'au niveau de zoom 15. > Mais à la longue on a alors plein de niveaux de sous-dossiers, plus ou > moins pleins, et toujours rien pour faire le ménage. > > La solution est alors de stocker toujours 2048 entrées par dossier > mais stocker tous les dossiers à plat en nombre fini (par exemple 256 > sous-dossiers (ce qui fera tout de même 512 000 fichiers, on a de la > marge pour un cache confortable !). Pour savoir dans quel sous-dossier > stocker ou trouver un fichier, un simple hachage de son nom suffit ! > > A la suite de quoi tous les dossiers ont une taille raisonnable, ils > sont maintenus très rapidement, on peut les lister de façon répétée de > façon exhaustive pour y faire le ménage. Le cache peut alors se > nettoyer tout seul pour respecter les contraintes de taille totale ou > purger les fichiers obsolètes (les fichiers tags sont remplacés par un > fichier index unique stockant les métadonnées HTTP, pas seulement les > ETag, mais aussi les dates d'obsolescence si nécessaire, bien qu(on > puisse aussi décider de rendre tous les fichiers obsolètes une semaine > après leur création, à moins qu'on les "touche" pour les garder en > faisant des requêtes HEAD au serveur) > > Note: sous NTFS un dossier de 2048 entrées prend 512Ko d'index dans la > MFT, non compris les attributs longs ou les données de fichiers courts > comme les Etags justement qui sont aussi stockés directement dans la > même entrée de la MFT sans espace externe supplémentaire). S'y ajoute > pour ce dossier un index de tri (sous-forme de B-arbre) qui prend en > gros 128Ko (et permet des accès directs rapides à un fichier par son > nom). Les suppressions ou ajouts dans un tel dossier ne demandent que > peu d'I/O et pas trop d'opération en mémoire. En revanche pour un > dossier de plus de 60000 entrées (fois 2 avec les fichiers Etag), cela > commence à swapper énormément en mémoire et sollicite beaucoup trop > les caches disques, à cause des opérations de maintenance du B-arbre > (pour maintenir ses critères d'équilibre). > > Le 4 février 2013 23:45, Vincent de Chateau-Thierry <[email protected]> a > écrit : > > > > Le 04/02/2013 23:37, Philippe Verdy a écrit : > > > >> Merci mais je connaissais déjà la solution > > > > > > C'est bien à ton mail que je répondais, mais c'était surtout une réponse > à > > la question de Romain. > > > > > > vincent > > > > _______________________________________________ > > Talk-fr mailing list > > [email protected] > > http://lists.openstreetmap.org/listinfo/talk-fr > > _______________________________________________ > Talk-fr mailing list > [email protected] > http://lists.openstreetmap.org/listinfo/talk-fr >
_______________________________________________ Talk-fr mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-fr

