왜 파일은 데이터베이스에 넣지 않고, 파일 저장소에서 불러올까?



왜 파일은 데이터베이스에 넣지 않고 다른 저장소에서 불러올까?

서버 개발을 하다보면 파일은 데이터베이스가 아니라 다른 저장소를 통하여 제공하는 것을 알 수 있습니다. 만약, 우리의 서버를 모두 아마존에 구축한다고 가정해보겠습니다. 아마존의 경우에 EC2 인스턴스를 사용하여 자신의 서버를 제작하고, RDS를 통하여 데이터베이스를 제작하고, 파일은 S3를 이용하여 저장하는 경우가 많습니다.

그런데 생각해보면 데이터베이스에 넣어도 되는 파일을 왜 우리는 저장소에 따로 넣는 것일까요?? 데이터베이스가 알아서 다 효율적으로 처리하지 않을까요?? 이유는 다음과 같습니다.

데이터베이스 시스템의 소프트웨어의 규모가 크고 복잡하기 때문에, 파일 시스템 방식보다 많은 하드웨어 자원을 필요로 합니다. 데이터베이스 시스템의 경우에는 파일 시스템에서 지원하지 않는 사용자 편의성, 표준화, 데이터 무결성 유지 등의 다양한 기능을 지원하기 때문입니다.

따라서, 더 높은 성능을 요구하는 데이터베이스 시스템의 경우에는 추가적인 하드웨어 구입 비용이 들 수 있고, DBMS 자체의 구입 비용과 유지, 보수 비용도 상당히 비싼 편입니다. 또, DBMS가 자동적으로 데이터베이스의 일관성을 유지하기 위해서 컴퓨터의 자원을 많이 필요로 하므로 응답 시간이 많이 걸릴 수 있습니다.

요약하면 성능에 대한 오버헤드 때문에 저장소를 나눠서 사용하는 것 같습니다. 파일의 경우 요청하면 바로 주기만 하는 경우가 많아서 DB에서 유지하는 많은 기능이 필요가 없기 때문에, 부하를 줄이기 위하여 아마존의 파일 저장 시스템인 S3 같은 서비스를 사용한다고 보면 되겠습니다.


출처

  • https://kldp.org/node/134032
  • https://m.blog.naver.com/qbxlvnf11/221127762091