2009-11-09 9 views
0

데이터베이스에 이미지를 저장하는 응용 프로그램이 있습니다. 이제는 이것이 성능 때문에 가장 좋은 방법이 아니라는 것을 알게되었습니다.파일 시스템에 파일 저장

나는 데이터베이스에서 모든 "모양"을 추출 시작 데이터 폴더

문제로 (가상 폴더를 통해)을 추가 한 내가 allready 8000 개 모양이 저장 가지고 내가 넣어 경우 이 폴더와 같이 "data/< blobid>/< blobname.extension>"이 폴더는 많은 폴더를 관리 할 수 ​​있도록 포함됩니다.

파일을 최상으로 저장할 수있는 방법이 궁금합니다. "data/< 년>/< 월>/< 일>/< blob>/< 이름>과 같은 생성 날짜에 그룹화하십시오. 또한 파일이 데이터베이스의 트리에 저장되어야한다고 추가해야합니다. 그 treestructure를 파일 시스템에 매핑해야하는지 궁금 해서요, 유일한 문제는 브랜치를 이동할 수 있다는 것입니다. 즉, 파일 시스템에서 브랜치를 이동해야한다는 의미입니다.

어떤 도움을 환영합니다.

Grtz, M

답변

7

사용하는 SQL 서버의 버전은 무엇? 2008 년을 사용하는 경우 FILESTREAM datatype을 사용하여 이미지를 저장할 수 있기 때문입니다. 이것은 filestore에 저장하는 것만 큼 효율적이지만 관련된 번거 로움이 없습니다. Getting Traction with SQL Server 2008 Filestream을 참조하십시오.

+0

thx, 나는 이것을 명확하게 살펴볼 것입니다. – user29964

+0

+1 -이 유형을 알지 못했지만 사용하는 것처럼 들립니다. 감사! –

0

파일을 관련 트리 구조에 저장해야합니까? 그렇지 않으면 /YOURFOLDER/blobid_blobname.extension 파일의 이름을 지정할 수 있습니다. 이 방법으로 업로드 폴더는 순전히 데이터 구조를 모방하는 것이 아니라 데이터 저장소 역할을합니다.

1

간단한 전략은 첫 번째 [소수] 자릿수에 따라 그룹화됩니다. 예 :

1/ 
    2/ 
     123.blob 
     129.blob 
    5/ 
     151.blob 
2/ 
    0/ 
     208.blob 

그런 식으로하면 디렉토리에 하위 디렉토리가 10 개를 넘지 않을 것입니다. 당연히 더 많거나 적은 레벨 (디렉토리) 및/또는 레벨 당 더 많은 자릿수를 사용할 수 있습니다.

더 복잡한 동적 시스템은 필요에 따라 하위 수준을 만들 수 있습니다. 특정 디렉토리에있는 모양의 개수가 미리 설정 한 최대 값을 초과하는 경우, 또 다른 10 개 하위 디렉토리를 만들고있는 파일을 이동 BLOB 데이터에 대한

1

대부분의 파일 시스템을 것이다 여러 개의 하위 디렉토리를 설정하십시오. 당신이 ID를 1-10000있는 경우 예를 들어, 당신은 할 수 :

00/ 
    00/ 
    01/ 
    02/ 
     00020.blob 
     00021.blob 
     ... 
    ... 
01/ 
02/ 
03/ 
... 

내가 다시 당신이 다른 질문 : 당신이에 BLOB로 관리하는 이유는 그렇게 나쁜?

+0

우리 데이터베이스가 거대하고 + 우리의 파일 (비디오, 음악)을 우리의 플렉스 어플리케이션으로 스트리밍하기를 원하기 때문입니다. – user29964

+0

거대한 DB에는 문제가 없습니다. HTTP를 통해 "스트리밍"합니까? – Xailor

관련 문제