게임 서버 개발을 하면서 중요한 정보를 데이터베이스에 저장해서 사용하고 있습니다.
이에 반해 중요도가 낮은 것들은 Json 형식의 파일에 저장합니다.
데이터베이스의 부하를 줄이기 위해서 Json 파일을 사용하고 있지만,
파일 시스템의 불편함을 상당히 많이 느끼고 있습니다.
그러면서 데이터베이스를 사용하는 이유를 더욱 명확하게 알게 되었습니다.
하지만 그렇다고해서 모든 정보를 데이터베이스에 담는 것 또한 지양해야 한다는 것을 알게되었습니다.
이번에 알게 된 내용과 책을 통해 얻은 지식을 글로 작성하게 되었습니다.
파일 포맷
데이터베이스 관리 시스템(DBMS)
데이터베이스
파일 시스템
게임 서버 개발에서는 중요한 정보는 데이터베이스에 저장하고 중요도가 낮은 정보는 Json 파일에 저장하면서 파일 시스템의 불편함을 경험하고 있다. 파일 시스템의 문제점으로는 데이터 중복, 데이터 파일에 종속적인 구조, 동시 공유 및 보안 문제, 회복이 어려운 등이 있다. 데이터베이스 관리 시스템(DBMS)를 통해 파일 시스템의 문제를 해결하고, 데이터베이스의 장점으로는 중복 제어, 독립성, 동시 공유, 보안 강화, 데이터 무결성 유지, 회복 기능, 개발 비용 절감 등이 있다. 단점으로는 비용, 복잡한 백업 및 회복 방법, 중앙 집중 관리로 인한 취약점이 있다.
파일 시스템은 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리합니다.
이런 파일 시스템은 특정 경로에 저장을 하는 방식을 사용합니다.
이런 방식은 응용 프로그램별로 파일을 따로 유지 및 관리하는 문제가 발생합니다.
결국에는 데이터의 중복을 야기하게 됩니다.
고객의 아이디, 고객명, 연락처와 같은 데이터를 파일에 모두 저장하면,
아무리 관리를 잘 한다고 해도 중복된 데이터가 저장되어 관리되게 됩니다.
그러면 결국 낭비되는 저장 공간이 생기게 됩니다.
결국 데이터의 일관성과 데이터 무결성을 지키기 어렵게 됩니다.
예를 들면, 고객의 연락처가 변경 되었습니다.
하지만 고객의 주문 내역에 저장된 연락처는 변경이 되지 않았습니다.
데이터의 불일치가 발생해 일관성이 깨지고, 유효하고 일관되지 않은 데이터가 저장되어 있기 때문에 무결성도 어기게 됩니다.
응용 프로그램을 개발 할 때 데이터 파일의 양식에 맞춰서 개발을 해야 합니다.
이런 데이터의 파일의 형식이 바뀌면 또 그것에 맞게 개발을 해줘야 합니다.
구조가 바뀔 때 지속적으로 수정을 해야 하기 때문에 유지 보수성에 문제가 생깁니다.
파일 시스템은 동시 공유를 하기 상당히 불편합니다.
하나의 기기에 데이터 파일을 저장해서 사용해야 합니다.
이런 방식은 동시 수정이 발생하면 데이터의 중복이 발생 할 수 있습니다.
이 외에도 작업 중에 덮어 쓰기 문제로 인해 기존에 수정 하고 있는 사람의 작업이 날라 갈 수 있습니다.
이런 동시 공유는 보안에도 상당히 취약합니다.
해당 폴더에 권한을 각각 주면 되기는 하지만,
파일에 있는 데이터에 대한 보안이 보장되지는 않습니다.
이렇듯 파일은 쉽게 수정 삭제가 가능하고 장애가 발생하면 복구 하는 것도 어렵습니다.
데이터베이스 관리 시스템은 파일 시스템의 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어입니다. 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리를 담당합니다.
그림 출처 : https://maily.so/queryaddict/posts/692ff51.데이터의 중복을 통제할 수 있다.
2.데이터 독립성이 확보된다.
3.데이터를 동시 공유할 수 있다.
4.데이터의 보안이 향상된다.
5.데이터 무결성을 유지할 수 있다.
6.장애 발생 시 회복이 가능하다.
7.응용 프로그램 개발 비용이 줄어든다.
1.비용이 많이 든다.
데이터베이스 관리 시스템도 하나의 프로그램이고 해당 시스템을 개발한 회사가 존재합니다.
이런 데이터베이스 관리 시스템을 사용하기 위해 비용을 지불해야 합니다.
보안적인 부분과 다양한 기능을 제공해주는 장점도 있지만 비용을 지불해야 하는 단점도 있습니다.
2.백업과 회복 방법이 복잡하다.
대부분의 데이터베이스 관리 시스템은 동시 공유를 보장하면서 거기서 발생하는 장애를 복구할 수 있는 기능이 있습니다.
데이터를 미리 백업해놓고 장애 발생 후 데이터를 원래의 일관된 상태로 회복하는 방법이 있습니다.
3.중앙 집중 관리로 인한 취약점이 존재한다.
데이터베이스는 데이터를 통합 관리하기 때문에 해당 시스템에 취약점이 발생되면,
데이터의 유출이나 여러 문제가 발생할 수 있습니다.
서버 개발을 처음 시작할 때는 DB는 당연히 사용해야 하기 때문에 사용하는 줄 알았습니다.
어떻게 보면 사용하는 이유를 정확히 모르고 있었습니다.
이번에 게임 개발을 공부하면서 파일 시스템을 사용해 일부 데이터를 저장해보면서 불편함을 알게 되었습니다.
파일 시스템은 쉽게 사용할 수 있다는 장점도 있지만, 단점도 명확했습니다.
이런 파일 시스템의 단점을 알게 되면서 데이터베이스의 장점도 더 자세히 알게 되었습니다.