2013-04-30 3 views
2

나는 주로 문서 첨부 파일을 저장하는 CouchDB 데이터베이스를 가지고있다.Couchdb는 중복 된 첨부 파일을 어떻게 저장합니까?

파일은 URL 다음과 같은 구조로 DB에 sored됩니다 /db-name/numeric-file-id/official-human-readable-file-name.ext

이 항상 한 첨부 파일 하나에 문서. 오늘 나는 모든 파일의 md5 합계를 계산했으며, 그 중 많은 수가 중복 된 것처럼 보입니다.

couchdb가 중복 첨부 파일을 인식하고 파일에 대한 포인터를 내부적으로 저장하고 참조 횟수를 추적하거나 단순히 각 첨부 파일을 그대로 저장하는지 궁금합니다.

첨부 파일로 5 개의 동일한 100MB 파일을 넣으면 데이터베이스가 100MB 또는 500MB를 사용합니까?

답변

5

나는 또한 CouchDB를 워드 프로세서에서이 질문에 직접 답을 찾을 수 없습니다, 그래서 (CouchDB를 1.4을 사용하여) 간단한 실험 테스트를 고안 :

는 실험 :

나는 점진적으로 3 추가 각 문서에는 문서간에 동일한 여러 개의 대형 (멀티 메가 바이트) 첨부 파일이 있습니다. 그런 다음 각 문서를 삽입 한 후 결과 db.couch 파일의 디스크 크기를 검사했습니다.

결과 :

db.couch 파일은 각각 1, 2, 3 문서 삽입에 대한 다음 24메가바이트을 16메가바이트에 8메가바이트 증가합니다. 따라서 CouchDB는 이 아니며은 다른 문서의 동일한 첨부 파일을 중복 제거하는 것처럼 보입니다. 세 개의 문서가 추가 된 후 데이터베이스를 수동으로 압축하면 파일 크기에 아무런 차이가 없으므로 일부 백그라운드 유지 관리 프로세스가이 사실을 알아 차리고/수정하기가 어려울 것입니다.

첨부 파일 중복 제거의 부족은 다음과 같은 세 가지 관찰 주어진 호기심이 누락입니다

: 저자가 효율적으로 그들이 저장된 첨부 파일을 자동으로 gzip 압축을 추가 대용량 첨부 파일 처리에 대한 충분한 우려했다

  1. 이 (MIME을 가진 사람들을 위해 어떤 종류의 텍스트 내용을 나타내는 유형).

  2. 첨부 파일을 추가하면 MD5 다이제스트가 계산되어 첨부 파일의 메타 데이터와 함께 저장됩니다.

  3. CouchDB를 여전히 DB합니다 (MD5 다이제스트의 아마 하나 개 사용)에서 개최되고있는 같은 문서를 여러 바퀴 돌았 공유 동일한 첨부 파일을 중복 제거 보인다.

는 이러한 요인을 감안할 때, 가치와 (가능성이) 간단 최적화 될 것으로 CouchDB를가,이 점에서보다 지능 아니라고 놀라운 일이다.

관련 문제