Je viens d’append une fonctionnalité de recherche prédictive (voir exemple ci-dessous) à mon site fonctionnant sur un serveur Ubuntu. Cela fonctionne directement à partir d’une firebase database. Je veux mettre en cache le résultat de chaque recherche et l’utiliser s’il existe, sinon le créer.
Y aurait-il un problème avec le fait que je sauvegarde les 10 000 Cira potentiels dans des fichiers séparés dans un seul répertoire? Ou est-il conseillé de les scinder en dossiers?
Exemple:
Y aurait-il un problème avec le fait que je sauvegarde les 10 millions de résultats potentiels dans des fichiers séparés dans un seul répertoire?
Oui. Il y a probablement plus de raisons, mais je peux les publier par coeur:
tune2fs
a une option appelée dir_index
qui a tendance à être activée par défaut (sur Ubuntu), ce qui vous permet de stocker environ 100 000 fichiers dans un répertoire avant que vous ne voyiez un dir_index
sur les performances. Ce n’est même pas proche des 10 millions de fichiers auxquels vous songez.
ext
systèmes de fichiers ext
ont un nombre maximum d’inodes fixe. Chaque fichier et répertoire utilise 1 inode. Utilisez df -i
pour voir vos partitions et inodes gratuitement. Lorsque vous êtes à court d’inodes, vous ne pouvez pas créer de nouveaux fichiers ou dossiers.
Des commandes telles que rm
et ls
lors de l’utilisation de caractères génériques développent la commande et aboutissent à une “liste d’arguments trop longue”. Vous devrez utiliser find
pour supprimer ou lister les fichiers. Et find
tendance à être lent.
Ou est-il conseillé de les scinder en dossiers?
Oui. Très certainement. Fondamentalement, vous ne pouvez même pas stocker 10 millions de fichiers dans 1 répertoire.
Je voudrais utiliser la firebase database. Si vous souhaitez le mettre en cache pour un site Web, consultez « solr » («fournissant une indexation dissortingbuée, une réplication et une interrogation à charge équilibrée»).
Une recherche binary peut facilement gérer des millions d’enregistrements. La recherche dans un seul répertoire ne pose donc pas de problème. Ça va le faire très vite.
Fondamentalement, si vous utilisez un système 32 bits, la recherche binary jusqu’à 2 Go d’enregistrements est simple et efficace.
Berekely DB, un logiciel open source, vous permettrait facilement de stocker le résultat complet sous une seule entrée et d’effectuer la recherche de manière intégrée.