2017-09-22 1 views
0

저는 저장 장치, 검색 및 보관 프로그램을 개발하는 중입니다.Windows에서 대량으로 배포

많은 파일 (일일 0.5 백만)을 관리하고 싶습니다. 각 파일의 크기는 20kb ~ 30kb입니다.

단일 폴더에 파일을 너무 많이 넣으면 Windows 탐색기 또는 프로그램을 통해 해당 폴더에 액세스하는 속도가 느려집니다.

몇 가지 해결책을 (그들이 어떻게하는지 모르겠다.) 어디에 0,1,2, ... 99와 같은 폴더가 있고 그것들은 같은 수 또는 크기로 파일을 배포한다.

동일한 알고리즘을 수행 할 수있는 알고리즘이나 .net 프로그램이 있습니까?

감사합니다 ...

+0

당신이 파일 이름을 저장하는 데 사용되는 (또는 발신자가를 결정 하는가)를 제어를? https://serverfault.com/questions/95444/storing-a-million-images-in-the-filesystem이 도움이됩니까? – mjwills

+0

호출자가 결정하지만 ... 항상 고유합니다. – Hardik

+0

파일 이름의 길이는 얼마나됩니까? – mjwills

답변

2

git 방식을 사용해보십시오. 파일 이름에서 해시를 계산하고 처음 몇 바이트를 디렉토리 이름으로 사용하십시오. 이것은 심지어 디렉토리에 걸쳐 분포를 제출 꽤 보장합니다 :

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

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

전체 데모 : https://dotnetfiddle.net/xlu4P8

관련 문제