Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
MongoDB의 document의 최대 크기는 16MB이다.
따라서 여러 사진이 저장되는 document는 16MB를 초과하여 저장되지 않는 오류가 발생할 수 있다.
이때는 GridFS를 이용하여 데이터를 분할 저장한다.
GridFS는 두가지 종류의 document를 사용해서 저장된다.
이는 위의 그림에서 확인할 수 있듯이 fs.files와 fs.chunks이다.
fs.files는 해당 데이터의 정보(크기, 생성 일시, 이름 등)이 저장되어 있고, 원하는 metaData도 삽입할 수 있다.
실질적인 대용량 데이터는 fs.chunks들에 256KB 크기로 분할되어 저장된다.
chunk들이 자신의 상위 file의 id값을 가져서 참조하게된다.
Configuration 설정
GridFS 파일 저장
이때의 inputStream으로 이미지나 대용량 파일과 같은 데이터를 저장시킬 수 있다.
본인의 경우 이미지 파일을 가지는 document의 field중 하나로 GridFS file id를 String으로 저장하였다.
이미지 불러오기
document(당신의 MongoDb collection) 는 imageId 값을 가지고 있고 GridFsTemplate통해 찾아오면 이미지 파일을 전송 시킬 수 있다.
참조
https://www.baeldung.com/spring-data-mongodb-gridfs
https://mkyong.com/mongodb/spring-data-mongodb-save-binary-file-gridfs-example/
https://medium.com/nerd-for-tech/file-upload-with-springboot-and-mongodb-76a8f5b9f75d
'개발 > Spring DataBase' 카테고리의 다른 글
[Spring] MariaDB 테이블 생성 오류 (ERROR: 1146-42S02, 1063-42000) (0) | 2022.11.05 |
---|---|
[Spring] DAO, DTO, Entity, 기본 계층 설계 (0) | 2022.08.28 |
[Spring Boot] MongoDB에서 참조 관계 설정하기 (0) | 2022.08.16 |
[Spring Boot] MongoDB Gradle로 연결하고 Test 수행하기 (0) | 2022.08.02 |
[Spring DB] 12. 스프링 트랜잭션 전파 (0) | 2022.07.31 |