데이터베이스를 사용하는 이유

Arthur·2023년 11월 20일
0
post-thumbnail

파일 시스템의 단점과 불편함


게임 서버 개발을 하면서 중요한 정보를 데이터베이스에 저장해서 사용하고 있습니다.
이에 반해 중요도가 낮은 것들은 Json 형식의 파일에 저장합니다.

데이터베이스의 부하를 줄이기 위해서 Json 파일을 사용하고 있지만,
파일 시스템의 불편함을 상당히 많이 느끼고 있습니다.

그러면서 데이터베이스를 사용하는 이유를 더욱 명확하게 알게 되었습니다.
하지만 그렇다고해서 모든 정보를 데이터베이스에 담는 것 또한 지양해야 한다는 것을 알게되었습니다.

이번에 알게 된 내용과 책을 통해 얻은 지식을 글로 작성하게 되었습니다.



이 글의 핵심 키워드 및 내용


  • 파일 포맷

    • Json
  • 데이터베이스 관리 시스템(DBMS)

  • 데이터베이스

    • 장점
      • 데이터 독립성
      • 데이터의 중복 통제 가능
      • 데이터 동시 공유
      • 데이터베이스 권한 검증을 통한 보안
      • 장애 발생 시 회복 시스템
      • 데이터 무결성 유지
        • 데이터 값 정확성
          • 데이터의 범위와 형식 보장
    • 단점
      • 비용적인 문제
      • 백업과 회복 방법이 복잡하다
      • 중앙 집중 관리로 인한 취약점 존재
  • 파일 시스템

    • 문제점
      • 데이터 파일에 종속적
      • 데이터 보안 문제
      • 동시 공유의 불편함에 대한 문제
      • 동시 수정으로 인한 데이터 중복
      • 장애 발생 시 복구 문제

ChatGPT 요약

게임 서버 개발에서는 중요한 정보는 데이터베이스에 저장하고 중요도가 낮은 정보는 Json 파일에 저장하면서 파일 시스템의 불편함을 경험하고 있다. 파일 시스템의 문제점으로는 데이터 중복, 데이터 파일에 종속적인 구조, 동시 공유 및 보안 문제, 회복이 어려운 등이 있다. 데이터베이스 관리 시스템(DBMS)를 통해 파일 시스템의 문제를 해결하고, 데이터베이스의 장점으로는 중복 제어, 독립성, 동시 공유, 보안 강화, 데이터 무결성 유지, 회복 기능, 개발 비용 절감 등이 있다. 단점으로는 비용, 복잡한 백업 및 회복 방법, 중앙 집중 관리로 인한 취약점이 있다.



파일 시스템의 문제점


파일 시스템은 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리합니다.
이런 파일 시스템은 특정 경로에 저장을 하는 방식을 사용합니다.

이런 방식은 응용 프로그램별로 파일을 따로 유지 및 관리하는 문제가 발생합니다.
결국에는 데이터의 중복을 야기하게 됩니다.

데이터의 중복

고객의 아이디, 고객명, 연락처와 같은 데이터를 파일에 모두 저장하면,
아무리 관리를 잘 한다고 해도 중복된 데이터가 저장되어 관리되게 됩니다.

그러면 결국 낭비되는 저장 공간이 생기게 됩니다.

결국 데이터의 일관성데이터 무결성을 지키기 어렵게 됩니다.

예를 들면, 고객의 연락처가 변경 되었습니다.
하지만 고객의 주문 내역에 저장된 연락처는 변경이 되지 않았습니다.

데이터의 불일치가 발생해 일관성이 깨지고, 유효하고 일관되지 않은 데이터가 저장되어 있기 때문에 무결성도 어기게 됩니다.

  • 데이터의 일관성 : 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는 것을 말한다.
  • 데이터의 무결성 : 데이터의 Lifecycle 동안 모든 데이터가 얼마나 완전하고, 일관되며, 정확한지를 나타내는 정도를 말합니다.

데이터 파일에 종속적

응용 프로그램을 개발 할 때 데이터 파일의 양식에 맞춰서 개발을 해야 합니다.
이런 데이터의 파일의 형식이 바뀌면 또 그것에 맞게 개발을 해줘야 합니다.

구조가 바뀔 때 지속적으로 수정을 해야 하기 때문에 유지 보수성에 문제가 생깁니다.


데이터 파일에 대한 동시 공유, 보안 회복이 힘들다.

파일 시스템은 동시 공유를 하기 상당히 불편합니다.
하나의 기기에 데이터 파일을 저장해서 사용해야 합니다.

이런 방식은 동시 수정이 발생하면 데이터의 중복이 발생 할 수 있습니다.
이 외에도 작업 중에 덮어 쓰기 문제로 인해 기존에 수정 하고 있는 사람의 작업이 날라 갈 수 있습니다.

이런 동시 공유는 보안에도 상당히 취약합니다.
해당 폴더에 권한을 각각 주면 되기는 하지만,
파일에 있는 데이터에 대한 보안이 보장되지는 않습니다.

이렇듯 파일은 쉽게 수정 삭제가 가능하고 장애가 발생하면 복구 하는 것도 어렵습니다.



데이터베이스 관리 시스템(DBMS)


데이터베이스 관리 시스템은 파일 시스템의 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어입니다. 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리를 담당합니다.

그림 출처 : https://maily.so/queryaddict/posts/692ff5

데이터베이스의 장점


1.데이터의 중복을 통제할 수 있다.

  • 데이터베이스는 통합해서 데이터를 관리하기 때문에 중복을 최소화 할 수 있습니다.
  • 데이터 중복을 강제로 막을 수 있기 때문에 일관성도 유지할 수 있습니다.

2.데이터 독립성이 확보된다.

  • 데이터베이스 관리 시스템은 응용 프로그램을 대신해서 데이터베이스에 접근하고 관리하는 책임을 지기 때문에 데이터베이스 구조가 변경되어도 응용 프로그램에 영향을 받지 않아 독립성이 보장됩니다.

3.데이터를 동시 공유할 수 있다.

  • 데이터베이스 관리 시스템이 동일한 데이터를 각 응용 프로그램이 요구에 따라 다양한 구조로 제공해줄 수 있고, 동시 접근을 제어하는 어려운 기술을 보유하고 있어 동시 공유가 가능합니다.

4.데이터의 보안이 향상된다.

  • 데이터베이스에 권한이 없는 사용자의 접근과 허용되지 않은 데이터와 연산에 대한 요청을 사전에 차단할 수 있습니다.

5.데이터 무결성을 유지할 수 있다.

  • 데이터 값의 정확성을 위해 해당 데이터의 범위나 데이터 형식을 보장해서 정확성을 높여줍니다.

6.장애 발생 시 회복이 가능하다.

  • 데이터베이스 관리 시스템은 장애가 발생해도 데이터 일고나성과 무결성을 유지하면서 데이터를 장애가 발생하기 이전 상태로 복구하는 회복 기능을 지원합니다.

7.응용 프로그램 개발 비용이 줄어든다.

  • 데이터를 관리하는 부분을 응용 프로그램이 아닌, DBMS로 관리하기 때문에 개발 비용이 줄어들게 됩니다.
  • 데이터베이스의 구조가 변경되어도 응용 프로그램을 변경할 소요가 적기 때문에 유지 보수 비용이 줄어들게 됩니다.


데이터베이스의 단점


1.비용이 많이 든다.

데이터베이스 관리 시스템도 하나의 프로그램이고 해당 시스템을 개발한 회사가 존재합니다.
이런 데이터베이스 관리 시스템을 사용하기 위해 비용을 지불해야 합니다.

보안적인 부분과 다양한 기능을 제공해주는 장점도 있지만 비용을 지불해야 하는 단점도 있습니다.


2.백업과 회복 방법이 복잡하다.

대부분의 데이터베이스 관리 시스템은 동시 공유를 보장하면서 거기서 발생하는 장애를 복구할 수 있는 기능이 있습니다.
데이터를 미리 백업해놓고 장애 발생 후 데이터를 원래의 일관된 상태로 회복하는 방법이 있습니다.


3.중앙 집중 관리로 인한 취약점이 존재한다.

데이터베이스는 데이터를 통합 관리하기 때문에 해당 시스템에 취약점이 발생되면,
데이터의 유출이나 여러 문제가 발생할 수 있습니다.



작성하면서 느낀 점


서버 개발을 처음 시작할 때는 DB는 당연히 사용해야 하기 때문에 사용하는 줄 알았습니다.
어떻게 보면 사용하는 이유를 정확히 모르고 있었습니다.

이번에 게임 개발을 공부하면서 파일 시스템을 사용해 일부 데이터를 저장해보면서 불편함을 알게 되었습니다.

파일 시스템은 쉽게 사용할 수 있다는 장점도 있지만, 단점도 명확했습니다.
이런 파일 시스템의 단점을 알게 되면서 데이터베이스의 장점도 더 자세히 알게 되었습니다.



참고 자료


  • 데이터베이스 개론(2판) - 03 데이터베이스 관리 시스템의 장단점 => 링크
  • Inpa Dev - 📚 S3 데이터 일관성 모델 원리 이해하기 => 링크
profile
기술에 대한 고민과 배운 것을 회고하는 게임 서버 개발자의 블로그입니다.

0개의 댓글