상세 컨텐츠

본문 제목

[DB] DB Binary Type vs File Storage

Database

by thankee 2009. 4. 27. 16:50

본문

DB의 데이터 타입 중에 Binary 형태가 있습니다. 이는 이미지나 파일, 비디오 등의 이진 데이터를 저장할 수 있는 공간을 제공하는데요. 하지만 보통의 경우 이진파일의 경우 파일 서버를 따로 두는 경우가 많습니다. 과연 어느 경우에 DB의 Binary 데이터 형으로 저장해야하고, 어떤 경우에 별도의 저장공간에 데이터를 저장해야할까요?

만약 이진 파일을 어떻게 저장할지 고민된다면, 아래에 제시된 여건을 체크해보세요.

  1. Binary 파일이 읽히는 속도가 중요하다면, DB에 Binary형태로 저장하는 것은 권장되지 않습니다. 예를 들어 Video Streaming Service를 위해 데이터를 저장하는 것이라면, DB에 저장하는 것보다 Streaming에 전념할 수 있는 서버를 따로 두는 것이 옳습니다. DBMS는 애초에 수많은 데이터 Access요청을 빠르게 처리하는 것이 주 임무이기 때문에 Binary 데이터를 전송하는데 온힘을 기울이지 않습니다.
  2. 파일의 크기가 1MB이상의 사이즈라면, File Server를 두는 것이 보다 효율적입니다. 파일의 크기가 커진다는 것은, 파일의 전송이 시작되면 파일전송이 끝마칠 때 까지 DBMS의 자원을 소모한다는 의미입니다. DBMS의 자원은 수많은 데이터 중에서 필요한 데이터를 매우 빠르게 검색하는데 소모되는 것이 바람직하지, 단순한 파일의 연속적인 로드에 DBMS의 자원을 소모하는 것은 옳지 못합니다. 한가지 더, DB의 크기가 커질 수 록 DB가 검색해야할 데이터 크기가 커지므로 대부분의 경우 검색 속도가 저하됩니다.
  3. 보안이 필요한 데이터라면 파일을 DB에 저장하여 DBMS가 제공하는 높은 보안 수준을 적용받을 수 있습니다. 만약, DB에 저장하지 않고 별도의 저장공간(File Storage)에 저장하는 것이라면 별도의 보안 프로세스를 적용해야할 것입니다.
  4. DB에 Binary형으로 저장한다면, DB에 접근하는 방법(ODBC, OleDB 등) 또한 중요합니다. 대형 Video Streaming Service에 ODBC를 사용한다면, Time Out Fail가 발생할 것입니다.
  5. 만약 해당 Binary 데이터의 크기가 크고, 자주 변경된다면 DB에 저장하는 것보다, File Server에 두는 것이 훨신 효과적입니다. 거대한 데이터가 자주 변경된다는 것은 단편화가 많이 발생하게 되는데, DB의 것보다 일반 OS의 단편화 관리가 보다 쉽고 효율적이기 때문입니다.
  6. 트랜젝션이 필요한 경우라면, SQL의 Transaction을 사용하는 것이 손쉬운 방법입니다.

자세한 사항은 다음의 링크를 참조하여, 문서를 읽어보세요.

[To Blob or Not to Blob]

관련글 더보기