[MongoDB] MongoDB에 파일 저장하기 - GridFS

2024. 7. 16. 21:42·데이터베이스 메모

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

'데이터베이스 메모' 카테고리의 다른 글

[데이터베이스] 간편한 로컬 DB, H2 Database not found 에러  (2) 2024.11.11
[MongoDB] 알게 된 내용 정리  (0) 2024.07.10
'데이터베이스 메모' 카테고리의 다른 글
  • [데이터베이스] 간편한 로컬 DB, H2 Database not found 에러
  • [MongoDB] 알게 된 내용 정리
csb0710
csb0710
  • csb0710
    데모장
    csb0710
  • 전체
    오늘
    어제
    • 분류 전체보기 (52)
      • 스프링부트 메모 (7)
      • 개발 메모 (3)
      • 클라우드 메모 (10)
      • 설치&설정 메모 (2)
      • 알고리즘 메모 (18)
      • 인턴 메모 (7)
      • 데이터베이스 메모 (3)
      • 책 메모 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    디비설치
    GitHub
    서버 연결
    코드트리조별과제
    스프링부트
    코딩테스트
    코드트리
    .gitmodules
    알고리즘
    서버배포
    자동 답변 봇
    백준
    그리디
    오블완
    ELK Stack
    서버생성
    티스토리챌린지
    이지퍼블리싱
    submodule
    디비설정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
csb0710
[MongoDB] MongoDB에 파일 저장하기 - GridFS
상단으로

티스토리툴바