[DB] Maria DB

young-gue Park·2024년 7월 12일
0

DB

목록 보기
6/6
post-thumbnail

⚡ Maria DB


싸피가 끝나고, 함께 프로젝트를 진행했던 팀원들과 디자이너를 섭외하여 새로운 사이드 프로젝트를 하기로 하였다.
이번 프로젝트에 대한 아직 완전한 기획이 이루어지지는 않았지만, 곧 개발 단계에 착수하게 된다.
지금까지 관계형 데이터베이스로 MySQLPostgreSQL을 이용했었는데, 이번엔 새롭게 MariaDB를 적용할 예정이다.
그래서 이번 기회에 MariaDB에 대해 알아본다.


📌 Maria DB 란?

🔷 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)

  • MySQL과 같은 소스 코드를 기반으로 하고 있다.

    💡 주요 개발자인 '몬티 와이드니어스'는 MySQL이 인수된 '썬 마이크로시스템즈'가 Oracle에 인수된 후, 개발 지침, 사라진 오픈 소스 가치 등에 불만을 품으며 회사를 나와 'Monty Program AB'를 창립, MySQL 소스 코드를 기반으로 Maria DB를 개발하였다.

  • 2013년부터 Google, Wikimedia 등의 대기업이 Maria DB로 전환하였으며, 2015년에는 오픈 소스 유지를 위한 MariaDB 재단이 설립되었다.

  • MySQL과의 호환성을 유지하면서 성능, 안정성, 기능 면에서 개선된 오픈 소스 데이터베이스이다.

  • 주요 기능으로는 여러 스토리지 엔진 지원, 복제 기능, JSON 지원, 공간 데이터베이스 기능 등이 있다.

💡 기본적인 기능 자체는 모체인 MySQL과 결이 비슷하다. 때문에 MySQL과의 차이를 위주로 설명한다.


📌 MySQL과의 차이

👍 AWS에서 이 것을 잘 설명해주는 레퍼런스를 제공한다.

⭐ 공통점

  1. 두 데이터베이스 모두 ACID를 준수하여 데이터의 정확성과 무결성을 유지한다.

  2. SQL을 사용하여 데이터를 관리하고 쿼리한다.

  3. 둘 다 오픈 소스 소프트웨어이다.

💡 그러나 MySQL의 경우 추가 기능을 붙여 유료로 판매하는 MySQL Enterprise Edition 버전이 존재한다.

  1. 암호화, 액세스 제어 메커니즘, 사용자 인증 및 권한 부여, SSL/TLS 지원을 제공한다. 또한 세분화된 액세스 제어가 가능하므로 사용자마다 다른 권한 수준을 부여할 수 있다.

⭐ 차이점

MySQLMariaDB
JSONJSON 보고서를 바이너리 객체로 저장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보다 많은 수

⭐ 확실하게 구분되는 Maria DB만의 기능

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도 고려할만한 단점이 존재한다.


📌 Maria DB의 장단점

⭐ 장점

1) 오픈 소스

  • 비용 없이 사용할 수 있으며, 커뮤니티의 활발한 지원을 받을 수 있다.

2) 높은 성능

  • MySQL 대비 성능이 향상된 부분이 많다.

3) 다양한 스토리지 엔진

  • InnoDB, Aria, MyISAM 등을 포함하여 다양한 스토리지 엔진을 지원한다.

4) 안정성

  • MySQL의 안정성을 바탕으로 추가적인 기능과 성능 향상을 통해 더욱 안정적이다.

5) MySQL과의 호환성

  • 대부분의 MySQL 기능과 호환되며, MySQL에서 MariaDB로 쉽게 전환이 가능하다.

⭐ 단점

1) 도입 사례 부족

  • 일부 특정 기능이나 모듈에서 MySQL만을 지원하는 경우가 있다.
  • MySQL에 비해 역사가 짧은 것과 바로 다음에 언급할 단점으로 인해 다른 기업들이 도입하지 않은 경우들이 꽤 있기 때문으로 보인다.

2) 커뮤니티 중심의 지원

  • 상용 DBMS에 비해 공식적인 기술 지원이 부족할 수 있다.
  • 기업에서 솔루션을 제공하는 타 DB에 비해, 오픈 소스로만 운영되는 Maria DB의 커뮤니티 중심 지원은 약해보일 수 있다.
  • 이 부분을 보완하기 위해 재단을 세우고 갖은 노력을 하는 것으로 보인다.

이러한 장단점을 고려하였을 때, 단점이 우리가 진행할 프로젝트에 큰 영향을 끼치진 않을 것이라 판단하였으며 새로운 기술 학습 의도 및 MySQL 대체 이유가 충분하여 이 DB를 그대로 적용하기로 결정하였다.


ps. Maria DB에서 마리아는 몬티 와이드니어스의 딸 이름이라고 한다.확실히 애정을 많이 담은 모양...

profile
Hodie mihi, Cras tibi

0개의 댓글