RDBMS의 파일 저장에 대해서

Binary type은 이미지, 파일, 비디오 파일과 같은
이진 데이터를 저장할 수 있는 저장 공간을 제공한다.
(Blob)



일반적으로 이런 파일을 저장하는 서버는
RDBMS를 사용하지 않고 파일을 서빙하는 파일 서버를 따로 둔다.



RDBMS는 데이터 집합 간의 Relation과
ACID를 보장하는 작업에 특화되어있기 때문에
파일 서빙 요청보다는
데이터베이스 쿼리와 관련된 트랜잭션을 수용하는 것이 더 이득이다.



이미지와 동영상 같은 크기의 파일을 DB에 BLOB형태로 저장할 시 

- 읽기/쓰기 속도가 떨어진다.
  파일 전송이 끝날 때까지 DBMS 자원을 소모하므로,
  파일 데이터의 연속적인 Fetch 작업에
  DB 자원을 소모하는 것은 비효율적임.

  파일의 크기는 쓰는 속도에도 영향을 미친다.





그런데 이 Binary Type이 존재하는 이유가 무엇일까?

1. 1MB 미만의 작은 사이즈의 파일을 서빙할 때

2. DB의 보안이 반드시 필요한 파일 데이터.


1의 의미도, 1MB 미만의 파일은 DB에 저장해도 좋다는 뜻은 아니고 
그만큼 작은 파일이라도 제한적으로 사용해야 한다는 뜻이다.



blob 적용


- raw data를 표현할 때 blob을 사용하는 경우는 찾아보기 힘들었다.



대체 방법

- 낮은 해상도의 단순한 이미지라면
  DB에는 단순한 이미지에 대한 메타 정보만 저장하고
  메타 정보를 바탕으로 FE or Mobile에서 렌더링하는 것이 이득이다.


- 이전 프로젝트에서 Social profile image를 구현할 때
  위와 같이 이미지가 단순한 조합으로 이뤄지므로
  이를 이용하여 프로필 이미지를 저장하는 파일 서버를 두지 않고 
  DB의 Profile table에 profile image를 위와 같이 메타정보만 저장했다.



결론

- RDBMS를 꼭 사용해야 할 Use case가 아니라면 파일 서버를 이용한다.

- Blob으로 취급할 수 있는 정도의 파일 사이즈라면
  Client side가 이해할 수 있는 다른 형태로 표현 가능한지 고려해본다. 
   
   

댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Intel 14th gen CPU의 칩 충돌 사태와 해결 방법