해당 프로젝트에서는 메인 데이터베이스로 RDBMS를 사용할 것이다.
추후 기능을 개발하면서, RDBMS로 풀 수 없는 이슈나 NoSQL을 사용함으로써 개선할 수 있는 이슈에는 목적에 맞는 NoSQL을 도입하여 해결하고자 한다.
DB-Engines에서는 자체 산정 기준에 따라 매월 DBMS 순위를 산정한다.
다음은 2023년 10월 기준, 10위권 내의 RDBMS의 순위를 나타낸다.
DB-Engines RDBMS Ranking
이 중에서 Amazon RDS에서 지원하는 데이터베이스 엔진은
MySQL, PostgreSQL, Oracle, Microsoft SQL Server, MariaDB으로 추릴 수 있다.
마지막으로, 오픈 소스 DBMS로 고려 대상을 추려보면 MySQL, PostgreSQL, MariaDB가 남게 된다! 이제 추려진 3종류의 DBMS 비교하여 내 프로젝트에 가장 적합한 DBMS를 결정해보자.
MariaDB는 MySQL의 창시자가 MySQL 데이터베이스 시스템을 fork한 서비스
즉, MySQL의 개선된 버전이다.
MySQL과의 호환성이 매우 높다는 점에서 MySQL에 익숙한 내 입장에서는
PostgreSQL보다는 MySQL과 MariaDB에 더 관심이 간다.
따라서, MySQL과 MariaDB를 먼저 비교하여 하나를 선택하고,
그와 비교하여 PostgreSQL의 러닝 커브를 감수할만한 메리트가 있다면 PostgreSQL을
그게 아니라면, MySQL과 MariaDB 중 선택된 DBMS를 사용하도록 하자!
일반적으로 MariaDB는 낮은 규모 지점에서 MySQL보다 훨씬 뛰어난 성능을 발휘하며 더 높은 규모에서도 계속해서 성능 차이를 유지한다.
즉, MySQL보다 MariaDB의 대기 시간이 낮고 MySQL보다 MariaDB의 처리량이 더 높다.
대기 시간이 짧다는 것은 데이터베이스의 응답성이 향상되고 궁극적으로 사용자에게 응답성이 뛰어난 애플리케이션 환경이 제공된다는 것을 의미한다.
처리량이 높을수록 초당 더 많은 작업을 수행할 수 있는 능력을 나타내는데,
MariaDB가 실제 비즈니스 워크로드(90% 읽기, 10% 쓰기)에 대해 상용 클라우드 하드웨어에서 MySQL보다 낮은 대기 시간과 높은 처리량을 모두 나타낸다는 사실은
MariaDB가 더 저렴한 비용으로 더 나은 사용자 경험을 제공할 수 있음을 의미한다.
( 참고 링크 )
MariaDB는 MySQL에서는 지원되지 않는 많은 기능을 제공하며, 의심할 여지 없이 매우 강력하며 매우 유용하기 때문에 기본 백엔드 데이터베이스로 사용하기에 유리한 선택이다.
일반적으로 이미 Oracle 라이선스를 구매한 조직은 MariaDB에 투자할 필요가 없지만, 그러나 새로 시작하고 어떤 데이터베이스를 사용할지 결정하려는 사람들에게는 의심할 여지 없이 MariaDB가 더 나은 선택이다.
(참고 링크)
위에 정리한 내용 이외에도 여러 참고 자료를 읽어보면서, MariaDB를 쓰지 않을 이유가 없다고 판단했다.
MySQL과 비교했을 때, MariaDB는 성능적인 면에서 큰 장점이 있지만
주로, MySQL에 비해 커뮤니티 규모가 작다는 점이 단점으로 꼽히곤 한다.
하지만, 위에 제시한 DB-Engines 랭킹에서 보았듯 MariaDB 역시 RDBMS 랭킹 상 10위권을 차지하고 있으며, 현재는 수많은 사용자와 개발자들이 참여하여 버그 수정과 새로운 기능 개발이 활발하게 이루어지고 있는 것으로 보인다.
또한, MariaDB는 비교적 최근에 출시되었기 때문에 오히려 구글링을 통해 최신 버전에 맞는 충분한 레퍼런스를 찾을 수 있을 것이라고 전망한다.
다음으로 단점으로 제시되는 것 중 하나는 호환성 문제로,
MySQL을 사용 중인 프로젝트에서 MariaDB로 마이그레이션 하고자 하는 경우
충분히 고려해야할 만한 단점이지만, 어떤 데이터베이스를 사용할지 결정하고 있는 나의 상황에서는 문제가 되지 않는다.
참고 링크
위 글에 MySQL과 PostgreSQL을 여러 관점에서 비교하여 제시하고 있다.
MySQL과 MariaDB 중 MariaDB를 선택했기 때문에 MariaDB와 PostgreSQL을 비교해 DBMS를 선택하는게 맞지만,
MariaDB와 MySQL은 어느 정도 궤를 같이 하고 있다고 판단했기 때문에 MySQL과 PostgreSQL의 차이를 잘 정리한 위의 글을 레퍼런스 삼아, MySQL과 PostgreSQL을 비교하여 메인 DBMS를 선택해도 되겠다고 결론지었다.
MySQL 데이터 타입
PostgreSQL 데이터 타입
PostgreSQL 공식 문서를 통해 데이터 타입의 자세한 활용법은 더 알아봐야 하겠지만,
PostgreSQL 제공하는
Geometric Data Types,Boolean Data Type, Enumerated Data Types, Range Data Types, Arrays는 내 서비스에서 필요한 데이터를 설계하고, 처리하는데 도움이 될 것 같다.
대소문자 구분은 쿼리 작성의 용이성에 영향을 미친다.
대소문자를 구분하는 경우 쿼리를 작성할 때 매우 주의해야 하지만, 대소문자를 구분하지 않으면 대문자나 소문자에 관해 생각할 필요가 없다.
UTF-8은 가능한 모든 문자와 기호를 저장할 수 있는 인코딩 시스템으로,
모든 알파벳의 문자와 이모티콘을 포함한 기타 다양한 기호를 저장할 수 있다.
MySQL은 버전에 따라 UTF-8로 변환해야 할 수도 있다.
반면, PostgreSQL은 UTF-8로 변환할 필요 없이, 원하는 문자를 사용하기만 하면 나머지는 데이터베이스가 알아서 처리한다.
MySQL Join 및 Combining 유형
PostgreSQL Join 및 Combining 유형
PostgreSQL은 MySQL보다 Join 옵션 이 하나 더 많고, Combiging 옵션이 두개 더 많다.
Window Function : 행과 행간의 관계를 쉽게 정의 하기 위해 제공되는 함수
MySQL Window Functions
PostgreSQL JWindow Functions
PostgreSQL은 MySQL과 동일한 Window Function을 제공하지만, 훨씬 더 많은 집계 기능을 제공한다.
뿐만 아니라, MySQL과 달리 모두 윈도우 함수로 사용할 수 있도록 하기 때문에 데이터 분석에 있어 더 많은 가능성을 제공한다.
PostgreSQL Window Functions 공식 문서
성능적인 측면에서 보았을 때, MySQL은 읽기 전용 명령을 처리할 때 더 빠르기 때문에 읽기 작업이 더 빈번한 프로젝트라면 MySQL을 사용하는 것이 더 나을 수도 있다.
그러나 프로젝트에 읽기 및 쓰기 작업, 복잡한 쿼리 작업이 포함되어 있거나 향후 포함되기를 원하는 경우 PostgreSQL의 성능이 더 좋다.
위의 MySQL VS PostgreSQL 분석에서 보았듯, 많은 영역에서 PostgreSQL은 유리하지만
MySQL은 더욱 간단하고 사용자 친화적이므로 러닝 커브가 그다지 가파르지 않은
반면, PostgreSQL은 매우 강력하고 기능이 풍부한 대신 초보자에게는 학습 곡선이 꽤 가파르게 느껴질 수 있다고 한다.
그러나, SQL 표준 준수 수준의 관점에서 봤을 때, PostgreSQL은 훨씬 더 높은 규정 준수 수준(150개 이상의 SQL 표준)을 갖고 있는 반면, MySQL은 부분적으로 규정을 준수하고 있다고 한다.
따라서, MySQL에 익숙하고 PostgreSQL은 낯선 상황일지라도 표준 SQL을 학습한 경험이 있기 때문에 충분히 익혀 사용할 수 있을 것이다!
어차피 개인 프로젝트는 평소 시간에 쫓겨 못했던, 해보고 싶었던 것을 적용하고자 하는거 아닌가 ~~
다음 포스팅에서는 PostgreSQL 공식 문서를 읽고, 정리해보자.
Greetings! Very helpful advice within this article! It is the little changes that produce the largest changes. Many thanks for sharing!
https://infocampus.co.in/ui-development-training-in-bangalore.html
https://infocampus.co.in/web-development-training-in-bangalore.html
https://infocampus.co.in/mern-stack-training-in-bangalore.html
https://infocampus.co.in/reactjs-training-in-marathahalli-bangalore.html
https://infocampus.co.in/javascript-jquery-training-in-bangalore.html
https://infocampus.co.in/data-structure-algorithms-training-in-bangalore.html
https://infocampus.co.in/angularjs-training-in-bangalore.html
https://infocampus.co.in/
https://infocampus.co.in/web-designing-training-in-bangalore.html
https://infocampus.co.in/front-end-development-course-in-bangalore.html