Placer plusieurs fichiers (10 millions) dans un seul dossier

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.