MongoDB의 기본 저장 형식 BSON
- 데이터는 BSON(Binary JSON) 형식의 문서로 저장
- BSON 문서의 크기 제한은 16MB
- 크기 제한을 넘기는 파일은 저장할 수 없음
MongoDB의 파일 저장 시스템 GridFS
- MongoDB에 BSON 크기 제한인 16MB를 넘기는 파일을 저장하고 검색하는 데에 사용
- 파일을 여러 개의 청크로 나누어 각각의 청크를 별도의 문서로 저장
- 기본적으로 GridFS는 255 kB의 기본 청크 크기 → GridFS는 마지막 청크를 제외하고 파일을 255 kB의 청크로 나눔
- MongoDB의 청크 파티셔닝: https://www.mongodb.com/ko-kr/docs/manual/core/sharding-data-partitioning/
- GridFS는 두 개의 컬렉션을 사용하여 파일을 저장
- fs.chunk: 바이너리 청크를 저장
{ "\_id" : <ObjectId>, //청크의 고유 객체 ID "files\_id" : <ObjectId>, // 청크가 속한 파일을 식별 "n" : <num>, // 청크의 순서 번호 "data" : <binary> // 실제 파일 데이터 }
- fs.files: 파일의 메타데이터를 저장
{ "\_id" : <ObjectId>, "length" : <num>, "chunkSize" : <num>, "uploadDate" : <timestamp>, "filename" : <string>, "metadata" : <any>, }
GridFS 사용 (python)
client = MongoClient(host="localhost", port=27017)
db = client['customDB'] # 데이터베이스 생성
fs = gridfs.GridFS(db) # 생성될 DB를 지정하여 GridFS 인스턴스 생성
... # 파일 생성
file_id = fs.put(file_content, filename="custom_name") # 파일 이름 지정(선택)하여 파일 저장, 리턴 값은 저장된 파일의 id
'데이터베이스 메모' 카테고리의 다른 글
[MongoDB] 알게 된 내용 정리 (0) | 2024.07.10 |
---|