MariaDB와 MySQL의 차이점은 무엇인가요?

MySQL과 MariaDB는 모두 오픈 소스 데이터베이스 기술입니다. 이들 데이터베이스를 사용하여 행과 열이 있는 표 형식으로 데이터를 저장할 수 있습니다. MySQL은 가장 널리 채택된 오픈 소스 데이터베이스입니다. 또한 수많은 유명 웹 사이트, 애플리케이션 및 상용 제품을 위한 기본 관계형 데이터베이스입니다. MariaDB는 MySQL의 수정된 버전입니다. MariaDB는 MySQL이 Oracle Corporation에 인수된 후 라이선스 및 배포 문제로 인해 MySQL의 원래 개발 팀이 개발했습니다. 인수 이후 MySQL과 MariaDB는 다르게 발전했습니다. 그러나 MariaDB는 MySQL의 데이터 및 테이블 정의 파일을 채택하고 동일한 클라이언트 프로토콜, 클라이언트 API, 포트 및 소켓도 사용합니다. 이는 MySQL 사용자가 번거로움 없이 MariaDB로 전환할 수 있도록 하기 위한 것입니다.

MySQL에 대해 읽어보기 »

MariaDB와 MySQL의 유사점은 무엇입니까?

MySQL은 1995년에 릴리스된 관계형 데이터베이스 관리 시스템입니다. 2009년에 개발자들은 MySQL 5.1.38의 코드 포크로 MariaDB를 릴리스했습니다.

MariaDB가 MySQL에서 포크된 것처럼, 두 관계형 데이터베이스 관리 시스템에는 많은 유사점이 있습니다. 일례로 MariaDB는 MySQL의 구조, 명명 규칙 및 데이터 정의 파일을 유지했습니다. 또한 모든 MySQL 커넥터, 연결 및 포트를 지원합니다. MySQL 클라이언트 패키지는 변경 없이 MariaDB에서 작동합니다.

다음으로 몇 가지 유사점을 더 살펴보겠습니다.

ACID 규정 준수

원자성, 일관성, 격리 및 내구성(ACID)은 데이터베이스 트랜잭션의 신뢰성을 보장하는 네 가지 핵심 원칙입니다. MySQL과 MariaDB는 모두 이러한 원칙을 준수합니다. 두 데이터베이스 모두 ACID를 준수하여 데이터의 정확성과 무결성을 유지합니다.

SQL 호환성

MySQL과 MariaDB는 데이터를 테이블로 구성하는 관계형 데이터베이스입니다. MariaDB와 MySQL은 모두 SQL을 사용하여 데이터를 관리하고 쿼리합니다. 이들 시스템에서 동일한 명령을 많이 사용할 수 있습니다.

SQL에 대해 읽어보기 »

MySQL과 MariaDB 모두 SQL 인터페이스를 사용하여 데이터를 관계형 테이블로 저장합니다.

오픈 소스 소프트웨어

오픈 소스 관계형 데이터베이스 관리 시스템인 MySQL과 MariaDB는 모두 개발자 커뮤니티에서 탄생한 협업의 산물입니다. 이들 시스템의 소스 코드는 일반에 공개됩니다.

MySQL 데이터베이스에는 일반 공용 라이선스(GPL)에 따라 릴리스된 완전 오픈 소스 버전이 하나 있습니다. 또한 추가 기능 및 지원이 제공되는 유료 Enterprise 버전이 하나 있습니다. MariaDB는 GitHub에서 완전 오픈 소스로 제공됩니다.

보안

MySQL과 MariaDB는 유사한 기본 보안 기능을 제공합니다. 암호화, 액세스 제어 메커니즘, 사용자 인증 및 권한 부여, SSL/TLS 지원을 제공합니다. 또한 세분화된 액세스 제어가 가능하므로 사용자마다 다른 권한 수준을 부여할 수 있습니다.

주요 차이점: MariaDB와 MySQL

MySQL에서 포크한 이후 MariaDB는 지속적으로 기능을 확장해 왔습니다. 이러한 변화 중 일부는 핵심 기능, 처리 능력 및 성능의 차이로 이어졌습니다.

MySQL과 MariaDB 간의 중대한 차이점은 다음과 같습니다.

JSON 데이터 처리

MariaDB와 MySQL은 JSON 데이터의 검색 및 저장을 지원합니다. 하지만 JSON 보고서를 서로 다른 방식으로 저장합니다. MariaDB는 JSON 보고서를 문자열로 저장하는 반면, MySQL은 JSON 보고서를 바이너리 객체로 저장합니다.

또한 MySQL과 MariaDB 모두 지원하지 않는 JSON 함수가 있습니다. MariaDB는 JSON_QUERYJSON_EXISTS를 지원하지만 MySQL은 지원하지 않습니다. 마찬가지로, MySQL은 MariaDB에서는 지원하지 않는 네이티브 JSON 데이터 유형 JSON_TABLE을 지원합니다.

하지만 MariaDB는 10.2 이후 버전에서만 JSON 데이터 유형을 지원합니다. MariaDB에서 사용하는 JSON 데이터 유형은 LONGTEXT의 별칭입니다.

기능

MariaDB와 MySQL은 개발 경로가 달랐기 때문에 이제 서로 약간 다른 기능을 제공합니다.

예를 들어 MySQL은 단일 열에 여러 데이터 값을 정의하고 함수를 사용하여 열을 수정할 수 있는 동적 열을 제공합니다. 동적 열을 사용하면 데이터 마스킹을 통해 민감한 정보를 보호할 수 있습니다.

반면, MariaDB는 데이터베이스 보기에서 보이지 않는 열을 지원합니다. 사용자가 SELECT 문을 수행하거나 INSERT 문에서 값을 요청할 때는 보이지 않는 열이 나열되지 않습니다.

사용자 인증

MySQL에는 validate_password 구성 요소가 있으며, 이 구성 요소를 사용하여 암호 보안을 강화할 수 있습니다.

MariaDB에는 기본적으로 이 기능이 없지만, 세 가지 검사기 플러그인을 제공합니다. 이러한 암호 검사기 플러그인을 사용하여 암호에 대한 보호를 강화할 수 있습니다. 버전 10.4에서 MariaDB는 이전에 사용된 SHA-1 인증을 대체하기 위해 ed25519 인증 플러그인을 도입했습니다. 이를 통해 사용자를 인증하고 암호를 안전하게 저장할 수 있습니다. 

암호화

MySQL과 MariaDB는 모두 저장 데이터와 전송 중인 데이터를 암호화합니다.

MySQL을 사용하면 관리자가 다시 실행 및 실행 취소 로그를 구성하고 암호화할 수 있지만, MySQL은 임시 테이블스페이스나 바이너리 로그는 암호화하지 않습니다.

반면 MariaDB는 바이너리 로그 암호화와 임시 테이블 암호화를 지원합니다. 

스레드 풀링

스레드 풀링은 데이터베이스가 새 연결을 기존 스레드와 페어링하여 리소스를 최적화할 수 있도록 합니다. 수천 명의 사용자를 동시에 확장하고 서비스를 제공하려는 애플리케이션에는 높은 스레드 풀 용량이 필수적입니다.

MariaDB의 경우 Community Edition의 일부인 스레드 풀 플러그인에 스레드 풀링이 포함되어 있습니다. MariaDB는 한 번에 20만 개 이상의 연결을 관리할 수 있는 기능을 제공합니다.

MySQL의 경우 Enterprise 버전에 스레드 풀 플러그인이 있습니다. 하지만 MariaDB만큼 많은 연결을 한 번 처리할 수는 없습니다.

사용 사례 비교: MariaDB와 MySQL

MariaDB는 MySQL에 비해 확장성이 뛰어나고 쿼리 속도가 더 빠릅니다. 따라서 대용량 데이터를 관리하는 데 유용합니다. MariaDB에는 시퀀스 스토리지 엔진 및 가상 열과 같이 MySQL에 없는 기능이 더 있습니다. 한 테이블에 여러 엔진을 사용할 수도 있습니다.

하지만 MySQL은 MariaDB보다 훨씬 더 오랫동안 사용되어 왔습니다. 일부 조직에서는 MySQL이 제공하는 엔터프라이즈 지원을 선호합니다.

다음으로 두 데이터베이스 중 하나를 선택할 때 고려해야 할 점을 몇 가지 알아보겠습니다.

스토리지 엔진

데이터베이스 관리 시스템에서 스토리지 엔진은 데이터베이스 내의 데이터를 검색, 업데이트 및 저장하는 데 도움을 주는 구성 요소입니다. 사용하려는 스토리지 엔진이 데이터베이스 결정에 영향을 미칠 수 있습니다.

MySQL과 MariaDB 모두에서 여러 스토리지 엔진을 사용할 수 있지만 MySQL은 제공하는 옵션이 더 적습니다. MySQL의 스토리지 엔진으로는 InnoDB, CSV, Federated, MyISAM, Merge 등이 있습니다.

MariaDB는 XtraDB, Aria, InnoDB, MariaDB ColumnStore, Memory, Cassandra, Connect 등 MySQL에서 지원하지 않는 몇 가지 스토리지 엔진을 지원합니다.

라이선스

MariaDB와 MySQL에는 모두 일반 공용 라이선스(GPL) 버전이 있습니다. MariaDB는 완전히 GPL로 제공되는 반면, MySQL에는 퍼블릭 라이선스와 프라이빗 라이선스의 두 가지 라이선스로 제공됩니다.

프라이빗 MySQL Enterprise Edition 라이선스는 쿼리 속도를 가속화하는 스레드 풀링과 같은 추가 기능을 제공합니다. GPL로 소스 코드를 배포하지 않고 MySQL 소프트웨어를 배포하려는 회사는 MySQL Enterprise Edition을 선호할 수 있습니다.

Oracle 데이터베이스 호환성

Oracle 데이터베이스 호환성은 Oracle 데이터베이스가 MariaDB 또는 MySQL 데이터베이스로 구축된 애플리케이션과 함께 작동할 수 있도록 하는 기능입니다.

조직에서 이미 Oracle 데이터베이스 제품을 사용하고 있다면 MySQL을 선호할 수 있습니다. Oracle 데이터베이스는 MySQL 고유의 SQL 구문에 대한 특정 호환성 모드를 제공합니다. 하지만 MySQL은 Oracle이 개발한 애플리케이션 지향 언어인 PL/SQL을 지원하지 않습니다.

MariaDB는 버전 10.3부터 PL/SQL을 지원했습니다. 또한 MariaDB는 변경 없이 Oracle 데이터베이스 애플리케이션을 실행할 수 있는 Oracle 구문 호환성 모드를 제공합니다.

속도 및 성능

수년 동안 MySQL은 여러 사용 사례에서 MariaDB보다 뛰어난 성능을 발휘했습니다. 예를 들어 MySQL 8.0은 MariaDB 10.3 버전보다 초당 더 많은 쿼리를 처리할 수 있습니다. 하지만 MariaDB는 최근 몇 년 동안 많은 개선을 이루었습니다.

현재 MariaDB는 쿼리 수행 및 복제 작업 처리 속도가 더 빠릅니다. 성능이 중요한 워크로드에는 MariaDB를 선호할 수 있습니다.

MySQL에서 MariaDB로 전환할 수 있나요?

예. MySQL에서 MariaDB로 간단히 이동할 수 있습니다. MariaDB는 MySQL과의 이전 버전 호환성을 제공하도록 설계되었습니다. 따라서 MySQL용으로 작성된 애플리케이션 및 스크립트는 큰 변경 없이 MariaDB에서 작동합니다. 

MariaDB 서버는 MariaDB 5.5까지 동일한 메이저 버전의 MySQL과의 드롭인 호환성을 목표로 MySQL 버전 번호 지정 체계를 따랐습니다. 2012년, MySQL에서 사용할 수 없는 기능의 수가 증가함에 따라 MariaDB 서버의 버전 번호 지정 방식이 달라졌습니다. MariaDB는 10.0을 릴리스했고 MySQL은 5.6을 릴리스했습니다.

MariaDB 서버는 여전히 MySQL과의 높은 수준의 호환성을 유지하고 있습니다. 기존 MySQL 버전에서 최신 MariaDB 버전으로의 업그레이드도 인플레이스 업그레이드를 통해 지원됩니다.

MySQL에서 MariaDB로의 전환 방식은 표준 설치 절차를 따릅니다. mysql_upgrade 도구를 실행하여 MySQL 데이터베이스의 권한 및 이벤트 테이블을 그에 상응하는 MariaDB로 업데이트합니다.

차이점 요약: 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보다 많은 수입니다.

AWS는 MySQL 및 MariaDB 요구 사항을 어떻게 지원하나요?

Amazon Relational Database Service(RDS)는 클라우드에서 간편하게 데이터베이스를 설치, 운영 및 확장할 수 있는 완전관리형 서비스 모음입니다.

7개의 인기 엔진 중에서 선택하세요. 그 중 2개는 MySQL 및 MariaDB 전용입니다. Amazon RDS for Maria DB는 MariaDB Server 버전 10.3, 10.4, 10.5 및 10.6을 지원합니다. Amazon RDS for MySQL은 MySQL Community Edition 버전 5.7 및 8.0을 지원합니다. 

CloudWatch Logs

Amazon RDS를 유용하게 사용하는 방법은 다음과 같습니다.

  • 비용 효율적이며 크기 조정이 가능한 하드웨어 용량을 갖춘 확장 가능한 MariaDB 및 MySQL 클라우드 데이터베이스를 몇 분 만에 배포
  • 기존 코드, 애플리케이션 및 도구를 변경 없이 사용
  • 50개 이상의 CPU, 메모리, 파일 시스템 및 디스크 I/O 지표에 액세스하여 고급 데이터베이스 모니터링을 수행
  • 단일 데이터베이스 인스턴스의 용량 한도 이상으로 탄력적으로 스케일 아웃할 수 있는 향상된 가용성 및 내구성을 활용

지금 계정을 만들어 AWS에서 MySQL과 MariaDB를 시작하세요.

AWS 활용 다음 단계

PostgreSQL을 사용하여 구축 시작