💾 Backend/DB, SQL

MySQL 기본 개념, MariaDB와 비교

hjinn0813 2024. 10. 28. 16:18
728x90

MariaDB를 설치하고 사용하기 시작하니까 백엔드 기술로 아주 유명한 MySQL은 뭔지 궁금해졌다.

그래서 MySQL의 기본 개념과, MariaDB와는 어떤 공통점이나 차이점이 있는지 정리해봤다.✍


MySQL은?

관계형 데이터베이스 관리 시스템(RDBMS).

데이터를 구조화하여 테이블 형식으로 저장하고 SQL을 통해 관리하는 소프트웨어.

1995년에 처음 개발되었고, 2010년에 오라클이 인수한 이후 현재까지 관리하고 있다.

서버 프로그램과 클라이언트 프로그램으로 이루어져, 서버는 데이터를 관리하고 클라이언트는 SQL을 통해 서버에 쿼리를 요청해 데이터를 처리한다. (MySQL을 fork해서 만든 MariaDB도 서버-클라이언트 구조를 갖고 있다.)

MySQL의 주요 특징

  • 오픈소스: 오픈소스로 제공되어 누구나 사용할 수 있지만, 특정 고급 기능은 유료 라이선스를 통해 사용 가능하다.
  • 다중 사용자/멀티스레딩 지원: 여러 사용자가 동시에 데이터에 접근하고 작업할 수 있으며, 고성능을 위해 여러 스레드를 이용해 효율적으로 작업을 분산한다.
  • 안정성 및 성능: 오랜 기간 동안 최적화되고 개선된 시스템으로 높은 안정성과 성능을 제공하여, 특히 대규모 웹 애플리케이션에서도 원활히 동작한다.
  • 다양한 스토리지 엔진: MySQL은 여러 스토리지 엔진을 지원한다. 대표적으로 InnoDB와 MyISAM이 있다.
    • InnoDB: 트랜잭션과 외래 키를 지원해 데이터 무결성과 일관성을 보장.
    • MyISAM: 빠른 읽기 성능을 제공하지만 트랜잭션을 지원하지 않으며, 외래 키도 사용할 수 없음.
  • 확장성/유연성: DB를 분할하거나 여러 서버로 분산하여 데이터 양이 많아져도 성능을 유지할 수 있는 구조이다.
  • 보안: 사용자별 접근 권한을 설정할 수 있어 데이터의 보안성을 높일 수 있다. 각 사용자가 접근할 수 있는 테이블, 컬럼 등을 세부적으로 제어할 수 있다.
  • 다양한 플랫폼 지원: Windows, Linux, macOS 등 여러 운영체제에서 작동한다.

MySQL의 기본 기능

  • 데이터 쿼리: SQL 명령을 통해 데이터베이스에서 데이터를 검색하고, 필터링 및 정렬할 수 있다.
  • DB 백업 및 복원: 데이터 유실을 방지하기 위해 DB를 백업하고 복원하는 기능이 제공된다.
  • 마스터-슬레이브 복제: 하나의 MySQL 서버에서 데이터를 업데이트하고 여러 슬레이브 서버에 이를 복제하여, 데이터 접근 속도를 높이고 서버 부하를 분산시킬 수 있다.
  • 트랜잭션 관리: 여러 쿼리를 하나의 트랜잭션으로 묶어, 부분적인 데이터 업데이트 없이 전체 트랜잭션이 성공할 때만 반영되게 할 수 있다.
💡 트랜잭션 (Transaction)
DB의 상태를 변환시키는 여러 연산(쿼리문)을 묶어서 처리하는 하나의 작업 단위.
DB의 일관성과 무결성을 유지하기 위해 ACID 원칙을 가지며, 5가지 상태로 나눌 수 있다.
💡 트랜잭션의 ACID 원칙
- 원자성 (Atomicity): 트랜잭션 내의 모든 작업이 완벽히 성공해야 DB에 반영되고, 하나라도 실패하면 전체 취소된다.
- 일관성 (Consistency): 트랜잭션이 완료되면 DB는 일관된 상태를 유지해야 한다.
- 격리성 (Isolation): 동시에 여러 트랜잭션이 실행될 때, 각 트랜잭션은 서로 영향을 주지 않도록 독립적으로 처리된다. 실행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
- 지속성 (Durability): 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 DB에 저장된다.
💡 트랜잭션의 5가지 상태
- 활동 (Active): 트랜잭션이 실행 중인 상태.
- 실패 (Failed): 트랜잭션 실행 중 오류가 발생하여 중단된 상태.
- 철회 (Aborted): 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행하고 변경 사항을 취소한 상태.
- 부분 완료 (Partially Committed): 트랜잭션이 모두 성공적으로 실행되어 Commit되기 직전인 상태.
- 완료 (Committed): 모든 작업이 성공적으로 완료되고 Commit하여 DB에 반영된 상태.

MySQL과 MariaDB의 공통점과 차이점

공통점 - 기본 아키텍처: MariaDB와 MySQL 모두 비슷한 DB 구조를 가지고 있고, SQL 언어를 사용하여 쿼리를 실행한다.
- SQL 호환성: 대부분의 SQL 구문이 동일하게 작동하여 MySQL에서 작성된 코드가 MariaDB에서도 거의 그대로 실행된다.
- 애플리케이션 호환성: 일반적인 웹 애플리케이션, CMS, 워드프레스 등은 MariaDB와 MySQL을 모두 지원한다.
- 오픈소스 기반: 두 시스템 모두 오픈소스 버전이 있어 자유롭게 사용할 수 있지만, MySQL은 일부 기능을 유료 버전으로 지원한다.
차이점 - 소유권과 관리 방식: MySQL은 오라클이 인수한 이후 오라클이 관리한다. MariaDB는 MySQL의 창립자인 Michael Widenius가 오라클 인수 후 따로 만든 포크로, 독립적인 커뮤니티가 관리한다.
- 라이선스: MySQL은 일부 고급 기능을 유료 라이선스로 지원한다. MariaDB는 100% 오픈소스로 제공되며, MySQL의 기능을 무료로 포함하거나 개선해 배포한다.
- 성능 및 기능 개선: MariaDB는 MySQL보다 고성능을 목표로 성능 개선이 이루어진 기능들이 있다. 예를 들어 JSON, 가상 열, 복제 기능 등이 향상되었으며 최신 MySQL 버전보다 더 빠르게 업데이트된다.
- 엔진 호환성: MariaDB는 MySQL보다 다양한 스토리지 엔진을 추가 지원하여 유연하게 사용할 수 있다.
- 구조와 내부 코드: MariaDB는 MySQL과 구조적으로 차이가 더 벌어졌기 때문에 일부 버전에서는 완전히 동일하게 사용하기 어려울 수 있다.
- 버전 호환성: MySQL의 버전 업그레이드에 따라 일부 기능이나 구조가 차이가 생기므로, MariaDB로 전환할 때 호환성 이슈가 생길 수 있다.
728x90