gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Mysql & MariaDB

MySQL vs MariaDB의 차이점, 성능, 보안, 라이선스 비교분석

gbmin 2023. 7. 22. 23:06

MySQL과 MariaDB는 모두 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. 데이터를 테이블 형태로 저장하고, 이 테이블들 간의 관계를 통해 데이터를 조직화하고 관리한다. 그러나 이 두 시스템은 비슷한 기능화 호환성을 가지고 있지만, 구현 방식과 기능, 성능, 보안 등 여러 측면에서 차이점이 있다. 이러한 차이점들은 개발자나 기업이 데이터베이스 시스템을 선택할 때 중요한 고려 사항이 될 수 있다. 비슷하지만 다른 MySQL과 MariaDB의 성능, 보안, 라이선스등의 차이점을 정리하였다.


[목차]

1. MySQL의 특징

2. MariaDB의 특징

3. MySQL과 MariaDB의 성능 비교

4. MySQL과 MariaDB의 호환성

5. MySQL과 MariaDB의 보안

6. MySQL과 MariaDB의 라이선스

7. MySQL과 MariaDB의 차이점 정리

8. 결론


MySQL vs MariaDB

 

1. MySQL의 특징

MySQL은 세계에서 가장 널리 사용되는 오픈 소스 RDBMS 중 하나이다. 1995년에 스웨덴의 회사인 MySQL AB에 의해 개발되었으며, 현재는 Oracle에서 소유하고 있다. MySQL은 웹 기반 애플리케이션, 데이터 웨어하우싱, e-commerce 등 다양한 애플리케이션 프로그램에 사용된다.

MySQL 은 그 풍부한 기능과 뛰어난 성능, 그리고 안정성 때문에 많은 개발자들에게 이용되고 있다. MySQL 은 다양한 데이터 타입을 지원하며, 복잡한 쿼리를 처리할 수 있는 강력한 SQL 엔진을 가지고 있다. 또한, mysql은 트랜잭션 처리, 복제, 파티셔닝, 서브 쿼리 등 다양한 고급 기능을 지원한다. 그러나 MySQL 은 Oracle Corporation이 소유하고 있기 때문에, 일부 상업적인 사용에는 제한이 있을 수 있다.

 

 

2. MariaDB의 특징

MariaDB는 MySQL의 포크로, MySQL의 기능과 성능을 개선하고자 하는 목표를 가지고 있다. MariaDB는 MySQL의 원래 개발자인 Michael "Monty" Widenius가 주도한 프로젝트로, MySQL 이 Oracle Corporation에 인수된 후에 시작되었다. MariaDB는 MySQL과 완전히 호환되며, 더 많은 스토리지 엔진과 기능을 제공한다.

 

 

3. MySQL 과 MariaDB의 성능 비교

데이터베이스의 퍼포먼스는 그 시스템의 전반적인 효율성과 사용자 환경에 따라 중요한 영향을 미친다. MySQL과 MariaDB의 성능을 비교하는 것은 이 두 시스템 중 어느 것을 선택할지 결정하는 데 중요한 요소가 될 수 있다.

 

속도와 효율성

MySQL과 MariaDB의 성능은 매우 비슷하다. 이 둘은 모두 빠른 응답 시간과 높은 처리량을 제공하며, 대규모 데이터베이스와 복잡한 쿼리를 효율적으로 처리할 수 있다. 하지만 복잡한 쿼리나 큰 데이터셋에서 MySQL보다 MariaDB가 더 나은 성능을 보인다는 게 정론이다.  MariaDB 가 MySQL 보다 더 많은 스토리지 엔진을 지원하고, 일부 작업에 대해 더욱 최적화되어 있기 때문으로 보인다. 성능 차이는 사용하는 애플리케이션의 특성, 사용하는 하드웨어, 네트워크 환경 등 여러 요인에 따라 달라질 수 있기 때문에 객관적인 밴치마킹 자료를 참고해보는 것이 좋다.

 

출처 : mariadb.com

 

안정성과 복구

MySQL 과 MariaDB모두 안정적인 시스템을 제공한다. 두 시스템 모두 데이터의 무결성을 보장하며, 장애 발생 시에도 데이터를 안전하게 보호할 수 있다. 그러나 MySQL에서는 지원하지 않는 트렌젝션 백업을 MariaDB는 지원하며 트랜잭션 로그를 사용하여 데이터베이스의 상태를 지속적으로 추적하며, 시스템 장애 발생 시에도 더 강력한 복구 기능을 제공하기 때문에 데이터 손실 위험을 좀 더 줄일 수 있다.


4. MySQL과 MariaDB의 호환성

MySQL과 MariaDB는 MySQL의 코드베이스를 기반으로 많은 호환성을 유지하지만. 100% 완벽한 호환은 아니다.

 

데이터 타입과 인덱스

MySQL과 MariaDB 는MariaDB는 대부분의 데이터 타입과 인덱스에서 호환성을 유지한다. 두 시스템 모두 모두 정수, 실수, 문자열, 날짜/시간 등 다양한 데이터 타입을 지원하며, B-Tree, Hash, R-Tree 등 다양한 인덱스를 지원한다. 그러나 MariaDB는 몇 가지 추가적인 데이터 타입과 인덱스를 제공하는데 MariaDB는 동적 칼럼과 MySQL보다 더 많은 JSON 함수 등을 지원한다.

 

SQL 모드

MySQL과 MariaDB의 SQL 모드는 약간 다르다. SQL 모드는 데이터베이스 서버가 SQL 쿼리를 해석하고 실행하는 방식을 결정하는데 MySQL과 MariaDB는 각각 다른 SQL 모드 설정 값 를 지원하며, 이는 쿼리의 작성 방식에 따라 쿼리 결과에 영향을 미칠 수 있다.

 

예를 들어, MySQL에서는 NO_ZERO_DATE 모드가 기본적으로 활성화되어 있다. 이 모드는 '0000-00-00'과 같은 날짜를 허용하지 않는다. 따라서 이 모드가 활성화된 상태에서 '0000-00-00' 날짜를 입력하려고 하면, MySQL은 오류를 반환한다.

mysql> SET sql_mode = 'NO_ZERO_DATE';
mysql> CREATE TABLE test (d DATE NOT NULL);
mysql> INSERT INTO test VALUES ('0000-00-00');
ERROR 1067 (42000): Invalid default value for 'd'

반면에 MariaDB에서는 NO_ZERO_DATE 모드가 기본적으로 비활성화되어 있다. 따라서 MariaDB에서는 '0000-00-00' 날짜를 허용하며, 이와 같은 날짜를 입력하려고 하면 오류 없이 수행된다.

mariadb> SET sql_mode = '';
mariadb> CREATE TABLE test (d DATE NOT NULL);
mariadb> INSERT INTO test VALUES ('0000-00-00');
Query OK, 1 row affected (0.01 sec)

이와 같이, MySQL과 MariaDB의 SQL 모드 차이는 쿼리의 작성 방식과 결과에 영향을 줄 수 있다. 즉 MySQL에서 MariaDB로 전환할 때는 이러한 차이점이 고려해야 한다.

 

5. MySQL과 MariaDB의 보안

데이터베이스의 보안은 시스템 운영에 있어서 매우 중요하며 민감하다. 데이터베이스는 개인 정보나 기업의 중요한 정보를 저장하고 있기 때문에, 이러한 정보를 보호하는 것은 너무나 당연하다. MySQL과 MariaDB는 모두 다양한 보안 기능을 제공하며, 이들은 데이터의 암호화, 권한 관리, SQL 인젝션 방지 기능들이 있다.

 

암호화

MySQL과 MariaDB모두 데이터 암호화를 지원한다. 데이터 암호화는 데이터를 저장하거나 전송할 때 암호화 하는 것을 말하며 데이터가 유출되더라도 암호화되어있기 때문에 데이터의 기밀성을 유지하여 데이터 유출을 방지하는 기능이다. 그러나 MariaDB는 MySQL보다 더욱 진보된 암호화 기능을 제공한다. MariaDB는 테이블 수준의 암호화를 지원하며, 이는 각 테이블을 별도의 키로 암호화할 수 있다. 즉 데이터의 보안성을 더욱 높이며, 특정 테이블의 데이터만을 보호할 수 도 있다. 또한, MariaDB는 키 관리 서비스를 통해 암호화 키를 안전하게 관리할 수 더 있다.

 

권한 관리

MySQL과 MariaDB모두 권한 관리 기능이 있다. 사용 방법은 두 시스템 모두 비슷하며 사용자에게 데이터베이스의 특정 부분에 대한 접근 권한을 부여하거나 제한할 수 있게 한다. 이는 데이터의 접근을 제어하며, 불필요한 데이터 접근을 방지할 수 있다. 그러나 MariaDB는 MySQL보다 더욱 세밀한 권한 관리를 할 수 있다. MariaDB는 역할 기반 접근 제어를 지원하며, 이는 사용자를 여러 역할로 분류하고, 각 역할에 대한 접근 권한을 부여할 수 있게 한다. 이는 권한 관리를 더욱 효율적으로 하며, 사용자의 전체 권한 변경을 쉽게 할 수 있게 한다.

 

예를 들어, MySQL에서는 다음과 같이 사용자에게 특정 데이터베이스에 대한 접근 권한을 부여할 수 있다.

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT SELECT, INSERT, UPDATE ON database.* TO 'user'@'localhost';

이렇게 하면 'user'는 'database' 데이터베이스에 대해 SELECT, INSERT, UPDATE 쿼리를 실행할 수 있는 권한을 받게 된다.
MariaDB는 역할 기반 접근 제어를 지원하며, 이는 사용자를 여러 역할로 분류하고, 각 역할에 대한 접근 권한을 부여할 수 있다.

 

예를 들어, MariaDB에서는 다음과 같이 역할을 생성하고, 이 역할에 권한을 부여하고, 이 역할을 사용자에게 부여할 수 있습니다.

mariadb> CREATE ROLE 'role';
mariadb> GRANT SELECT, INSERT, UPDATE ON database.* TO 'role';
mariadb> GRANT 'role' TO 'user'@'localhost';

이렇게 하면 'user'는 'role' 역할을 통해 'database' 데이터베이스에 대해 SELECT, INSERT, UPDATE 쿼리를 실행할 수 있는 권한을 받게 된다. 이는 권한 관리를 더욱 효율적으로 하며, 사용자의 권한 변경을 쉽게 할 수 있게 한다. 예를 들어, 여러 사용자가 동일한 역할을 가지고 있다면, 이 역할의 권한을 변경함으로써 한 번에 여러 사용자의 권한을 변경할 수 있다.

 

 

6. MySQL과 MariaDB의 라이선스

MySQL과 MariaDB는 모두 GPL 라이선스를 사용한다. 이는 이들을 무료로 사용하고, 수정하고, 배포할 수 있다. 그러나 이들의 라이선스 또한 몆 가지 차이점이 있다.

 

MySQL의 라이선스

MySQL은 GPL 라이선스를 사용하지만, Oracle이 소유하고 있다. 이는 MySQL의 일부 기능, 특히 상업적인 사용을 위한 일부 기능은 별도의 라이선스를 필요로 하며, 이는 추가 비용을 발생시킬 수 있다. 또한, Oracle은 MySQL의 업데이트 개발 방향을 조직 내에서 결정하기 때문에 일반 유저의 의견이 반영되기 어렵다.

MariaDB의 라이선스

MariaDB는 GPL 라이선스를 사용하며, 더욱 자유롭게 사용이 가능하다. MariaDB는 모든 기능을 GPL 라이선스로 제공하며, 추가 비용 없이 모든 기능을 사용할 수 있다. 또한, MariaDB는 커뮤니티 주도의 개발 모델을 따르며, 이는 일반 유저의 의견을 더욱 잘 반영할 수 있다.



7. MySQL과 MariaDB의 차이점 정리

항목 MySQL MariaDB
소유자 Oracle Corporation MariaDB Corporation
라이선스 GPL, 일부 기능은 별도의 라이선스 필요 GPL
성능 일부 작업에서는 MariaDB보다 느릴 수 있음 일부 작업에서는 MySQL보다 빠름
보안 데이터 암호화, 권한 관리 기능 제공 MySQL 기능 모두제공, 세밀한 권한 관리 가능
호환성 MariaDB와 대부분 호환 MySQL과 완전히 호환, 추가적인 데이터 타입과 인덱스 제공
SQL 모드 일부 SQL 모드 지원 MySQL보다 더 많은 SQL 모드 지원
개발성향 Oracle이 주도하는 개발 커뮤니티 주도의 개발
스토리지 엔진 InnoDB, MyISAM 등 일부 스토리지 엔진 지원 InnoDB, MyISAM, Aria, Spider 등 더 많은 스토리지 엔진 지원
복구 기능 기본적인 복구 기능 제공 기본 복구 기능 + 트렌젝션 복구 기능 제공
업데이트와 패치 Oracle이 결정하는 업데이트와 패치 제공 커뮤니티 참여를 통한 더욱 빠른 업데이트와 패치 제공

 

 

8. 결론

전체적인 내용을 살펴보면 MariaDB는 MySQL을 완벽히 호환하며 MySQL은 MariaDB에서 제공하는 일부기능을 제공하지 않기 때문에 호환성 문제가 발생될 수 있다. 성능 또한 일부 작업에 한해서 MariaDB가 앞선다는 벤치 결과가 많이 보이며, 기능 면에서 MariaDB가 MySQL보더 더 많은 이점이 보인다. 이러한 이유로, 많은 기업과 개발자들이 MySQL에서 MariaDB로 전환하고 있다.