MySQL
90년대 중반에 개발된 MySQL은 시장에서 사용할 수 있는 최초의 오픈 DB중 하나이며 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)이다. MySQL은 단순 쿼리 처리 성능이 어떤 제품보다 압도적이며 이미 오래 사용되어 왔기 때문에 성능과 신뢰성 등에서 꾸준히 개선되어 온 것도 장점이다. 또한 MySQL은 오픈 소스이며, 다중 사용자와 다중 스레드를 지원하고 C언어, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하고 있다.
MySQL은 유닉스, 리눅스, 윈도우 등 다양한 운영체제에서 사용할 수 있으며, 특히 PHP와 함께 웹 개발에 자주 사용된다. 그러나 MySQL은 오픈 소스 라이센스를 따르기는 하지만, 상업적으로 사용할 때는 상업용 라이센스를 구입해야만 한다.
→ 상업적이라는 게 무엇일까? 밑에 MySQL 라이센스 유료 참고
MariaDB
발전하던 MySQL이 2010년에 썬마이크로시스템즈와 오라클이 합병되면서 많은 MySQL 개발자들은 썬마이크로시스템즈을 떠나며 본인만의 프로젝트를 진행하게 된다. 이 중 MySQL의 창시자인 몬티 와이드니어가 만든 프로젝트가 바로 MariaDB이다.
MariaDB는 MySQL 데이터베이스 시스템을 기반으로 fork한 서비스로 MySQL의 개선된 버전이다. 그래서 MariaDB와 MySQL의 호환성은 매우 높다. (공식문서 참고) 또한 MySQL에서 찾을 수 없는 수많은 내장된 강력한 기능과 많은 유용성, 보안 및 성능 개선사항이 함께 제공된다.
어떤 RDS DB를 사용하는 것이 적절할까?
많은 RDS에는 MySQL, MariaDB, PostgreSQL 중에 고르는 것이 좋다. 이유는 두 가지이다.
- 가격
- Amazon Aurora(오로라) 교체 용이성
RDS의 가격은 라이센스 비용 영향을 받는다. 상용 DB인 MySQL이 오픈소스인 MariaDB, PostgreSQL보다는 동일 사양 대비 가격이 더 높다. 프리티어 기간이 지나면 비용을 지불하면서 RDS를 사용해야하므로 미리 비용에 관련해 생각해 볼 필요가 있다.
두 번째로는 Aurora 교체 용이성이다. Amazon Aurora는 AWS에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스이다. 공식 자료에 의하면 RDS MySQL 대비 5배, PostgreSQL보다 3배의 성능을 제공한다. 더군다나 AWS에서 직접 엔지니어링하고 있기 때문에 계속해서 발전하고 있다. 이렇게 보면 Aurora가 좋아보이지만 최소 월 10만 이상이기 때문에 가격에서 부담스럽다.
MySQL vs MariaDB 비교하기
MariaDB는 MySQL기반으로 만들어졌기 때문에 쿼리를 비롯한 전반적인 사용법은 MySQL과 유사하니 사용 방법에 대해서는 크게 걱정하지 않아도 된다. 비슷한 사용법 외에도 MariaDB는 MySQL 대비 더 좋은 장점이 있다. 10 reasons to migrate to MariaDB (if still using MySQL) 2015년에 현 AWS개발자가 MariaDB를 사용해야 할 10가지 이유를 제시했다.
- MariaDB 개발이 좀 더 개방적이고 활발한 커뮤니티를 지님
- 빠르고 투명한 보안패치 릴리즈
- 다양한 기능
- 다양한 스토리지 엔진
- 더 나은 성능
- Galera 액티브-액티브 마스터 클러스터링
- 오라클 관리하의 불확실성
- 계속 상승하는 MariaDB의 유명세
- 호환성과 쉬운 마이그레이션
- 15년 이후에는 마이그레이션이 어려울 수 있다
MariaDB 공식문서에도 친절히 MySQL과의 비교를 보여주고 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'책에서도 MariaDB의 장점을 보여준다. 이 내용들을 참고하면 현재 MariaDB의 장점은 5가지로 요약할 수 있다.
- 동일 하드웨어 사양으로 MySQL보다 향상된 성능
- 좀 더 활성화된 커뮤니티
- 다양한 기능
- 다양한 스토리지 엔진
- 빠르고 투명한 보안패치 릴리즈
MySQL 라이센스 유료
그리고 MySQL 라이센스 유료라는 몇 개의 글이 있어서 찾아봤다. 라이센스는 제품 종류에 따라 GPL과 자체적인 상용 라이센스 두 가지가 적용된다. 결론부터 말하면 개인/기업이 웹서버를 구축하여 운영하는 경우에는 라이센스에 아무런 제약없이 MySQL을 활용할 수 있고 무조건 유료라는 말은 그냥 찌라시이다.
MySQL 라이센스는 제품 종류에 따라 GPL과 자체적인 상용 라이센스 두 가지가 적용된다.
- 무료 버전은 커뮤니티 에디션(Community Edition)이라는 이름이고, GPL이 적용되어 있어 MySQL 소스 코드 수정 시 수정된 코드를 공개해야 한다.
- 유료 버전은 영리 목적으로 사용하려고 할 때 써야 한다. 유료 버전의 가격은 2,000~10,000달러 사이이다. 유료 버전은 자체 상용 라이센스이기 때문에 소스 공개의 위험이 없다.
- 하지만 무료 GPL 버전도 개인이 사용하는 데는 전혀 문제가 없고, 기업이 사용하는 일반적인 목적에도 사실상 문제가 없다.
여기서 말하는 "영리 목적"이란?
문제가 될 수 있는 상황은 MySQL 소프트웨어를 가져다가 대폭 수정해서 고객에게 납품하는, 즉 "배포하는" 경우에 수정한 내용의 소스를 공개하지 않는 목적을 말하는 것이지 기업에서 일반적인 인터넷 서비스를 만들 때 사용하는 "영리 목적"을 가리키는 게 아니다. 그러나 많은 개발자들은 오라클에 대한 인식이 좋지않던 참에 MySQL이 오라클에 인수된 후 어떻게 상황이 전개될지도 모르는 찝찝함 때문에 MariaDB의 사용을 권장한 것 같다.
MySQL 라이센스에 대한 여러 커뮤니티 글
- MySQL은 어디까지 무료이고, 어디부터 유료가 되는걸까요?
- MySQL 라이센스에 대한 고민
- [정보] Mysql은 라이센스가 어떻게 될까?
- 라이센스 문의 드립니다 (mysql, mariaDB)
MySQL 커뮤니티 vs 엔터프라이즈 에디션 차이는?
유료 버전(엔터프라이즈 에디션)은 사실상 이에 대한 고민은 대형 프로젝트 단위에서 고민거리가 되는 부분이라서 그냥 넘겼다. 그래도 Real MySQL8.0의 내용을 참고하여 조금 적어보면 커뮤니티 에디션과 엔터프라이즈 에디션의 핵심 기능은 차이가 없고, 부가적인 기능과 서비스들이 엔터프라이즈 에디션에서 지원된다고 한다.
- Thread Pool, Enterprise Audit, Enterprise TDE, Enterprise Authentication ...
그런데 이러한 기능은 경험상 Percona에서 출시하는 Percona Server 백업 및 모니터링 도구 또는 Percona Server에서 지원하는 플러그인을 활용하면 엔터프라이즈 에디션의 부족한 부분을 메꿀 수 있다고 한다. 물론 기술 지원은 별개의 문제이니 단위가 큰 프로젝트는 꼼꼼한 검토가 필요할 것 같다.
결론
사실상 PostgreSQL은 제쳐두고 더 익숙한 MySQL과 MariaDB를 두고 고민하다 개인 프로젝트에는 MariaDB를 사용하기로 했다. MySQL은 가장 널리 사용되고 있는 DB이고 많은 유저 경험과 레퍼런스가 있다는 장점을 가지고 있긴 했지만 개인적으로 MariaDB를 쓸 이유가 더 많았다.
- 첫 번째 이유로는 MySQL과 MariaDB의 러닝커브가 별로 차이나지 않는다. 그런데 MariaDB가 오픈소스라서 기업에 인수된 MySQL보다 정책적인 면에서 더 안정적이고 업데이트도 활발하다.
- 두 번째 이유로는 MariaDB는 비교적 최근 오픈소스라서 커뮤니티도 더 활발하다.(에러 구글링할 때 좋음) 미래 지향적인 관점으로 봤을 때 더 긍정적이다. (사실 이 부분은 직접 체감해보지 못해서 뇌피셜)
- 마지막으로 MariaDB는 MySQL을 포크한 서비스라서 어떻게 보면 많은 유저 경험과 레퍼런스가 있다는 MySQL의 장점이 MariaDB의 장점으로 봐도 큰 무리가 없다고 생각했다.