싸피가 끝나고, 함께 프로젝트를 진행했던 팀원들과 디자이너를 섭외하여 새로운 사이드 프로젝트를 하기로 하였다.
이번 프로젝트에 대한 아직 완전한 기획이 이루어지지는 않았지만, 곧 개발 단계에 착수하게 된다.
지금까지 관계형 데이터베이스로 MySQL
과 PostgreSQL
을 이용했었는데, 이번엔 새롭게 MariaDB
를 적용할 예정이다.
그래서 이번 기회에 MariaDB
에 대해 알아본다.
🔷 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)
MySQL과 같은 소스 코드를 기반으로 하고 있다.
💡 주요 개발자인 '몬티 와이드니어스'는
MySQL
이 인수된 '썬 마이크로시스템즈'가 Oracle에 인수된 후, 개발 지침, 사라진 오픈 소스 가치 등에 불만을 품으며 회사를 나와 'Monty Program AB'를 창립,MySQL
소스 코드를 기반으로Maria DB
를 개발하였다.
2013년부터 Google, Wikimedia 등의 대기업이 Maria DB로 전환하였으며, 2015년에는 오픈 소스 유지를 위한 MariaDB 재단이 설립되었다.
MySQL과의 호환성을 유지하면서 성능, 안정성, 기능 면에서 개선된 오픈 소스 데이터베이스이다.
주요 기능으로는 여러 스토리지 엔진 지원, 복제 기능, JSON 지원, 공간 데이터베이스 기능 등이 있다.
💡 기본적인 기능 자체는 모체인
MySQL
과 결이 비슷하다. 때문에 MySQL과의 차이를 위주로 설명한다.
두 데이터베이스 모두 ACID
를 준수하여 데이터의 정확성과 무결성을 유지한다.
SQL을 사용하여 데이터를 관리하고 쿼리한다.
둘 다 오픈 소스 소프트웨어이다.
💡 그러나 MySQL의 경우 추가 기능을 붙여 유료로 판매하는 MySQL Enterprise Edition 버전이 존재한다.
MySQL | MariaDB | |
---|---|---|
JSON | JSON 보고서를 바이너리 객체로 저장 | JSON 보고서를 문자열로 저장, JSON 데이터 유형은 LONGTEXT의 별칭 |
Oracle 데이터베이스 호환성 | 높은 수준의 호환성을 제공하지만 PL/SQL을 지원하지 않음 | 높은 수준의 호환성을 제공하며 버전 10.3부터 PL/SQL을 지원 |
속도 및 성능 | 복제 및 쿼리 속도가 MariaDB보다 약간 느림 | 복제 및 쿼리 속도가 MySQL보다 약간 빠름 |
기능 | super 읽기 전용 함수, 동적 열 및 데이터 마스킹을 지원 | 보이지 않는 열과 임시 테이블 공간을 지원 |
인증 | validate_password를 통한 인증 | 세 가지 암호 검사기 플러그인(ed25519 등) 존재 |
암호화 | InnoDB 및 AES를 사용하여 저장 데이터를 암호화 | 임시 로그 암호화 및 바이너리 로그 암호화를 지원 |
스토리지 엔진 | MariaDB보다 스토리지 엔진 수가 적음 | MySQL보다 스토리지 엔진 수가 더 많으며 한 테이블에 여러 엔진을 사용할 수 있음 |
라이선스 | MySQL Enterprise Edition과 GPL 버전의 두 가지 버전이 있음 (부분 유료) | GPL로 제한 없이 사용 가능 (무료) |
스레드 풀링 | Enterprise Edition에 스레드 풀링 기능이 존재 | 한 번에 20만 개 이상의 연결을 관리할 수 있으며 이는 MySQL보다 많은 수 |
1) 스토리지 엔진의 다양성
Aria
: 빠르고 안정적인 MyISAM 대체 엔진으로 설계됨. 크래시 복구 기능이 향상됨.ColumnStore
: 대용량 데이터 분석에 최적화된 컬럼형 스토리지 엔진.MyRocks
: 'Facebook'에서 개발한 RocksDB
기반의 스토리지 엔진으로, 높은 쓰기 성능과 압축 비율을 제공.2) 커넥터
3) 가상 컬럼(Virtual Columns)
4) 시계열 기능(Temporal Features)
5) 병렬 쿼리
6) 복제 기능 향상
Galera Cluster
를 통합. 이를 통해 다중 마스터 복제와 높은 가용성을 제공한다.💡 Galera Cluster
멀티마스터 Cluster 구조를 지원하는 MySQL, MariaDB 등의 계열에 호환되는 오픈 소스, 당장 규모 있는 서비스를 사용하는 것이 아니라 의미까지만 알아둔다.
7) 보안 강화
8) 결과 캐싱
9) 컬럼 압축
이렇게 MySQL
과 확연히 구분되는 특징들을 보다보면, 이런 의문을 품을 수 있다.
'가격, 성능, 기능 면에서 Maria DB
가 더 우월한 것 같은데 당연히 이것을 쓰는게 맞지 않나?'
그러나 당연히 Maria DB도 고려할만한 단점이 존재한다.
1) 오픈 소스
2) 높은 성능
MySQL
대비 성능이 향상된 부분이 많다.3) 다양한 스토리지 엔진
InnoDB
, Aria
, MyISAM
등을 포함하여 다양한 스토리지 엔진을 지원한다.4) 안정성
MySQL
의 안정성을 바탕으로 추가적인 기능과 성능 향상을 통해 더욱 안정적이다.5) MySQL
과의 호환성
MySQL
기능과 호환되며, MySQL
에서 MariaDB
로 쉽게 전환이 가능하다.1) 도입 사례 부족
MySQL
만을 지원하는 경우가 있다.MySQL
에 비해 역사가 짧은 것과 바로 다음에 언급할 단점으로 인해 다른 기업들이 도입하지 않은 경우들이 꽤 있기 때문으로 보인다.2) 커뮤니티 중심의 지원
Maria DB
의 커뮤니티 중심 지원은 약해보일 수 있다.이러한 장단점을 고려하였을 때, 단점이 우리가 진행할 프로젝트에 큰 영향을 끼치진 않을 것이라 판단하였으며 새로운 기술 학습 의도 및 MySQL 대체 이유가 충분하여 이 DB를 그대로 적용하기로 결정하였다.
ps. Maria DB
에서 마리아는 몬티 와이드니어스의 딸 이름이라고 한다.확실히 애정을 많이 담은 모양...