2014-02-23 3 views
1

우리는 이미지 갤러리에서 1 백만에서 4 천만 장의 사진을 예상하고 있지만 사진 폴더 에 보관할 생각이지만 한 장의 사진 폴더에 4 천만 장의 사진을 보관할 수 있습니다. 만약 내가 직접 하위 폴더를 만들지 않고 사진 폴더 안에 그들을 유지하는 모든 문제는 내가 그 날짜에 업로드 된 사진을 그 날에 그 날 폴더에 갈 것입니다 업로드 날짜에 따라 폴더를 만들 필요가있다.폴더의 이미지 최대 개수

그 구조를 만드는 데 문제가 없지만 지식의 관점에서 볼 때 한 폴더에 직접 수십만 개의 사진을 저장하면 어떤 문제인지 알고 싶습니다. 나는 이것을하는 사람이 거의 없다는 것을 보았습니다. 예를 들어,이 페이지를 볼 수있는 경우 모든 이미지가 이미지 폴더에 있습니다.

무언가 약 5 백만개의 images.all 이미지가 해당 id 아래에 있습니다 (예 : 4132808). 그래서 이미지 디렉토리 아래에 500 만 개 이상의 sub folder.is가 있습니다. 많은 디렉토리를 하나의 디렉토리 아래에 유지하는 것이 좋습니다.

http://www.listal.com/viewimage/4132808http://iv1.lisimg.com/image/4132808/600full-the-hobbit%3A-an-unexpected-journey-photo.jpg

+1

약 4 천만 장의 사진과 약 0.5TB (대단히 많지 않음)는 대략 20TB 정도입니다. HDD 제한을 초과하지 않겠습니까? –

+0

@ IngoBürk 예 hdd는 아무런 문제가되지 않습니다. – sachin

+0

좋아요, 이것을 지적하고 싶었습니다. 그러나 HDD를 컴퓨터에 설치하지 않고도 원 폴드 솔루션이 잘 확장되지 않는다는 점을 명심하십시오 (잘 확장되지 않습니다). –

답변

2

비교를 위해 파일 시스템을 체크 the file system comparison page on Wikipedia에 의존. 이와

images/[1st 2 char of some kind of hash/[2nd 2 char of hash]/... 

같은 몇 가지 구조로 정렬 할 수 있습니다 그러나 는 크게 하나 개의 폴더에있는 파일의 수를 감소와 쉽게 재현 할 경로를 만들 수 있습니다. 어떤 경우에도 폴더의 내용을 나열하려면 (또는 모든 응용 프로그램에서 필요로하는 경우) 엄청난 성능 문제가 발생할 수 있기 때문에이 작업을 수행하려고합니다.

다른 사이트에서 볼 수있는 것은 해당 이미지를 게시하는 방법뿐입니다. 물론 안전한 URL에서 제공 될 수 있지만 기본 구조에서는 파일을 어떻게 든 분할하고자합니다.

일부 계산 : 경로를 만들기 위해 파일 이름의 sha256 해시를 사용한다고 가정 해 보겠습니다. 그건 당신에게 [0-9a-f]의 40자를줍니다. 그래서 2 글자 하위 폴더를 선택한 경우 각 레벨에 256 개의 폴더가 있습니다. 이제 당신이 3 레벨을 위해 그것을한다고 가정 해 봅시다 : ab/cd/ef/1234...png. 그것은 256^3 폴더 의미 16,000을 의미합니다. 심지어 최대 10 억 개의 이미지를 얻을 수 있습니다.

당신이 아파치와 같은 것을 할 수있는 파일을 제공 관해서 + mod_rewrite를 :이 How many files can I put in a directory?를 참조 올바른 위치

+0

나는 하나의 하위 폴더에 100000 개의 이미지를 보관할 수 있으므로 사진 폴더 아래에 4000 개의 하위 폴더가 있습니다. – sachin

+0

구조가 심해 져서 특정 수준에서 수천 또는 최대 몇 천 개의 파일/폴더 만 갖도록 권합니다. – fejese

2

에 이미지에 대한 요청을 라우팅 할

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/images/../../../.* 
RewriteRule ^/images/(..)(..)(..)(.*)$ /images/$1/$2/$3/$4 [L] 

.

모든 파일을 하나의 폴더에 저장하지 마십시오. 확장되지 않습니다. 깊은 폴더 계층 구조로 시작하고 싶지 않다면 간단히 시작하고 하나의 클래스 또는 메서드에서 폴더의 경로를 빌드하는 논리를 배치하십시오. 이렇게하면 필요한 경우 나중에 다시 정렬 할 수 있습니다.