2017-09-22 3 views
0

Je travaille sur le développement d'un programme de stockage, de récupération et d'archivage.Grande distribution de volume à travers les fenêtres

Je souhaite gérer un grand nombre de fichiers (0,5 million par jour). Chaque fichier sera de taille 20kb à 30kb.

J'ai eu la situation où si je mets trop de fichiers dans un seul dossier, l'accès à ce dossier via Windows Explorer ou via le programme est plus lent. J'ai vu quelques solutions (je ne sais pas comment ils le font), où ils ont un dossier comme 0,1,2, ... 99 et ils distribuent des fichiers avec un nombre ou une taille égale.

Y at-il un algorithme ou un programme .net que je peux utiliser pour faire de même.

Merci d'avance ...

+0

-vous contrôler les noms de fichiers utilisés pour les stocker (ou l'appelant ne détermine que)? Est-ce que https://serverfault.com/questions/95444/storing-a-million-images-in-the-filesystem aide? – mjwills

+0

L'appelant détermine ... mais ceux-ci seront toujours uniques. – Hardik

+0

Combien de temps les noms de fichiers sont-ils susceptibles d'être? – mjwills

Répondre

2

approche envisager d'utiliser git. Calculer un hachage à partir du nom de fichier et utiliser ses premiers octets plusieurs comme nom de répertoire. Cela permettrait d'assurer une distribution uniforme assez fichier dans les répertoires:

public static string GetDirName(string fileName) 
{ 
    if (hashAlgo == null) 
     hashAlgo = new SHA256CryptoServiceProvider(); 

    return BitConverter.ToString(
     hashAlgo.ComputeHash(Encoding.UTF8.GetBytes(fileName)) 
      .Take(2).ToArray() 
    ); 
} 

démo complète: https://dotnetfiddle.net/xlu4P8