이번 포스팅에선 RDBMS
에서 오라클제외 가장 많이 사용되는 MySQL, MariaDB, PostgreSQL 들을 비교해 보고자 글을 작성하였다. 아래의 각 프레임워크별 슬로건을 시작으로 하나씩 알아보고자 한다
- MySQL - The world's most popular open source database
- MariaDB - the innovative open source database
- PostgreSQL - The World's Most Advanced Open Source Relational Database
MySQL
MySQL HeatWave is a fully managed database service for transactions, real- time analytics across data warehouses and data lakes, and machine learning services, without the complexity, latency, and cost of ETL duplication. It is available on OCI, AWS, and A
www.mysql.com
MariaDB Foundation - MariaDB.org
… Continue reading "MariaDB Foundation"
mariadb.org
PostgreSQL
The world's most advanced open source database.
www.postgresql.org
MySQL, Latest releases 8.4.0 (24.05.08기준)
보통 SQL을 "스큐엘"으로 읽는 PostgreSQL(포스트그레-스큐엘)과는 다르게 "에스큐엘=ess-cue-el"로 읽으라고 공식문서에 적혀있다. 최초 제작사는 1995년 스웨덴의 MySQL AB -> 2008년 썬 마이크로시스템즈에 10억 달러 인수 -> 2010년 오라클이 72억 달러 인수하여 지금 주인은 오라클이다. (opensource버전관리에 쥐약인 점이 많아서 사람들이 많이 불안해함)
2009년 MySQL 5.1.38의 코드 포크로 MariaDB를 릴리스하게 됨. 두 개의 차이는 JSON을 String으로 보느냐(Maria), 바이너리 객체로 저장하느냐(MySQL)의 가장 두드러짐. 속도 측면에서는 아무래도 포크를 떠서 지속적으로 버전업 중인 MariaDB가 더 빠름. 캐싱/인덱싱 전반적으로 24% 정도 빠르다는 결과가 존재함
MariaDB vs MySQL – Difference Between Them
What is Maria DB? MariaDB is a fork of the MySQL database management system. The RDBMS offers data processing capabilities for both small and enterprise tasks. This DBMS is an improved version of MySQ
www.guru99.com
오픈소스 라이센스를 따르기는 하지만, 상업적으로 사용할 때는 상업용 라이센스를 구입해야 한다는 특징이 존재함.
MariaDB, Latest releases 11.4.1 (24.05.08기준)
2010년 싼마이크로즈+오라클이 합병하면서 많은 MySQL 개발자+창시자들이 떠나 본인들만의 프로젝트를 만들게 됨. 그중 MySQL의 창시자인 몬티 와이드니어가 만든 프로젝트가 MariaDB. 즉 MariaDB는 MySQL를 기반으로 fork 해서 만든 MySQL의 개선된 버전. 상징은 강치(바다사자)이다. 돌고래인 MySQL과 비슷하게 바다 포유류를 상징으로 썼다.
초창기 버전인 MariaDB 5.5 버전은 MySQL 5.5 버전을 기반으로 포크 했기 때문에 MySQL 5.5 버전과 거의 모든 기능이 호환된다. 그 이후 나온 10.0 버전은 MySQL 5.6에서 업데이트된 기능을 반영한 버전이다. 10.1 버전은 MySQL 5.7에서 추가 및 변경된 기능을 반영하여 출시되었다. MySQL과의 호환성을 최대한 유지하면서 좀 더 나은 성능을 구현하는 것이 주된 개발 방향이었다. MySQL이 오라클로 인수된 뒤로 기능 추가가 더뎌져서 10.2부터는 MySQL의 개발 속도를 앞서나가면서 오히려 MariaDB 기능이 MySQL로 역수출되기도 한다.
AWS에서 말하는 MySQL과 MariaDB의 차이점
MySQL | MariaDB | |
JSON | MySQL은 JSON 보고서를 바이너리 객체로 저장합니다. | MariaDB는 JSON 보고서를 문자열로 저장합니다. MariaDB의 JSON 데이터 유형은 LONGTEXT의 별칭입니다. |
Oracle 데이터베이스 호환성 | MySQL은 높은 수준의 호환성을 제공하지만 PL/SQL을 지원하지 않습니다. | MariaDB는 높은 수준의 호환성을 제공하며 버전 10.3부터 PL/SQL을 지원합니다. |
속도 및 성능 | MySQL은 복제 및 쿼리 속도가 MariaDB보다 약간 느립니다. | MariaDB는 복제 및 쿼리 속도가 MySQL보다 약간 빠릅니다. |
기능 | MySQL은 super 읽기 전용 함수, 동적 열 및 데이터 마스킹을 지원합니다. | MariaDB는 보이지 않는 열과 임시 테이블 공간을 지원합니다. |
인증 | MySQL에는 validate_password 구성 요소가 있습니다. | MariaDB에는 세 가지 암호 검사기 플러그인이 있습니다. |
암호화 | MySQL 데이터베이스는 InnoDB 및 AES를 사용하여 저장 데이터를 암호화합니다. | MariaDB는 임시 로그 암호화 및 바이너리 로그 암호화를 지원합니다. |
스토리지 엔진 | MySQL은 MariaDB보다 스토리지 엔진 수가 적습니다. | MariaDB는 MySQL보다 스토리지 엔진 수가 더 많으며 한 테이블에 여러 엔진을 사용할 수 있습니다. |
라이선스 | MySQL은 MySQL Enterprise Edition과 GPL 버전의 두 가지 버전이 있습니다. | MariaDB는 GPL로 제한 없이 사용할 수 있습니다. |
스레드 풀링 | MySQL의 Enterprise Edition에는 스레드 풀링 기능이 있습니다. | MariaDB는 한 번에 20만 개 이상의 연결을 관리할 수 있으며 이는 MySQL보다 많은 수입니다. |
PostgreSQL, Latest releases 16.2 (24.05.08기준)
1996년에 The PostgreSQL Global Development Group에서 개발한 오픈소스 ORDBMS다. MySQL에 비해서 SQL 표준을 더 잘 지원하고 기능이 더 강력하고 쿼리가 복잡해질수록 성능이 더 잘 나오는 편. 특히 ㅖㅐㄴㅅ햔fmf xhdgks Geospatial query(위치기반쿼리)는 오라클마저 씹어먹음.
대신 기본적인 CRUD 성능이 MySQL 등 경쟁 DB에 비해 좋지 않은 편이라고 여겨진다. 하지만 이는 상대적인 것으로, 엔진의 아키텍처적인 특성이 반영된 결과라고 볼 수 있다. 일반적으로 조회성 트랜잭션에서는 파일베이스 아키텍처의 IO 한계로 인해 타 DBMS에 비해 우수한 성능을 내기 어렵다. 하지만 충분한 메모리가 제공되는 환경에서는 큰 차이를 보이지 않으며, 삽입성 트랜잭션에서는 오라클을 상회하는 엄청난 속도를 보여준다. 처리할 데이터의 양이 상당할 때 빛을 발하는 DBMS
AWS에서 말하는 MariaDB와 PostgreSQL의 차이
MariaDB | PostgreSQL | |
데이터 유형 | 비정형 데이터용 LONGTEXT를 비롯한 다양한 데이터 유형. | 비정형 데이터용 JSON 데이터 및 UUID를 비롯한 다양한 데이터 유형. |
인덱싱 | B-트리 인덱스와 네 가지 다른 인덱싱 유형이 있습니다. | 다양한 인덱스가 있으며 부분 인덱스 옵션도 제공합니다. |
복제 | 비동기식, 반동기식 및 지연된 복제. | 비동기식, 동기식, 병렬, 스트리밍 및 캐스케이딩과 같은 다양한 복제 방법. |
열 기반 스토리지 | 10.5.4부터 열 기반 스토리지를 사용할 수 있는 ColumnStore를 제공합니다. | 엔진에 열 기반 스토리지가 없지만 cstore_fdw를 설치할 수 있습니다. |
속도 | 최신 버전의 비용 기반 옵티마이저는 쿼리 계획 수립과 성능을 개선합니다. | 서드 파티 벤치마킹 테스트에서 더 빠른 읽기 및 쓰기 성능을 입증했습니다. |
확장성 | 수직 확장에 대한 추가 옵션. | 수평 확장에 대한 추가 옵션. |
데이터 타이핑 | MariaDB는 데이터 유형 매칭을 위한 고급 기능과 함께 유연성을 제공합니다. | PostgreSQL은 데이터 타이핑에 있어 더 엄격합니다. |
선택을 할 때의 고려할 점
가격
RDS의 가격은 라이센스 비용 영향을 받는다. 상용 DB인 MySQL이 오픈소스인 MariaDB, PostgreSQL보다는 동일 사양 대비 가격이 더 높다. 프리티어 기간이 지나면 비용을 지불하면서 RDS를 사용해야 하므로 미리 비용에 관련해 생각해 볼 필요가 있다.
Amazon Aurora(오로라) 교체 용이성
Amazon Aurora는 AWS에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스이다. 공식 자료에 의하면 RDS MySQL 대비 5배, PostgreSQL보다 3배의 성능을 제공한다. 더군다나 AWS에서 직접 엔지니어링 하고 있기 때문에 계속해서 발전하고 있다. 이렇게 보면 Aurora가 좋아 보이지만 최소 월 10만 이상이기 때문에 가격에서 부담스럽다.
레퍼런스
mariaDB를 고른다면 라이센스 관련 문제, MySQL을 고른다면 지원 및 레퍼런스의 많음을 고려해서 선택할 것 같습니다. 상용 버전이 별도로 없다는 것이 mariaDB의 최대 장점으로 느껴졌고 MySQL은 역시 상대적으로 많은 레퍼런스들이 이점으로 다가왔습니다.