RDBMS와 MySQL의 특징
RDBMS
- Relational Database Management System
- 모든 데이터를 2차원 테이블 형태로 표현하는 RDB를 관리하는 소프트웨어
- 정규화를 통해 데이터의 중복성을 최소화하여 트랜잭션을 수행
MySQL 특징
기본 특징
- 대표적인 오픈소스 RDBMS, SQL 표준을 대부분 따름
- 오픈소스 기반 : GNU GPL(일부는 상업 라이선스)로 배포되어 자유롭게 사용 가능, 커스터마이징 가능
- 다중 플랫폼 지원 : Linux, Windows, macOS 등
- 다양한 스토리지 엔진 지원
- 트랜잭션 및 ACID 지원
기술적 특징
- Replication 지원
- Master-Slave, Master-Master 구조로 데이터 복제를 구성할 수 있어 고가용성 및 분산 처리 가능
- Partitioning : 대용량 데이터를 물리적으로 분할하여 관리할 수 있음
- 클러스터링 기능 : NDB 엔진을 통해 고가용성 및 수평 확장을 지원
- 보안 기능 : 사용자 인증, 권한 관리, SSL 암호화, 플러그인 기반 인증 등이 가능
- 다양한 개발 언어와 연동 : Python, Java, PHP, C/C++, Node.js 등 언어와 연동을 위한 드라이버 및 라이브러리 제공
운영 및 관리 특징
- 유지 관리 용이 : 간편한 설치 , GUI 도구(MySQL Workbench) 및 CLI 도구 지원
- 백업과 복구 기능 : mysqldump , mysqlhotcopy , xtrabackup 등을 통해 백업과 복구 가능
- 확장성 및 성능 튜닝 : 인덱스, 쿼리 최적화, 캐시 설정 등을 통해 성능 향상 가능
MySQL 아키텍쳐
- 크게 MySQL 클라이언트, 커넥터, SQL Layer, 스토리지 엔즌으로 구성됨
- 클라이언트 : 애플리케이션이나 사용자가 쿼리를 보내는 부분
- 커넥터 : 클라이언트와 MySQL 서버 간의 통신을 담당
- 스토리지 엔진 : MySQL의 독특한 특징 중 하나, 실제로 데이터를 디스크에 저장하고 읽어오는 방식을 담당하는 플러그인 형태 모듈. 사용자는 테이블 생성 시 어떤 스토리지 엔진을 사용할지 선택할 수 있음
스토리지엔진 | 설명 |
InnoDB | 기본 스토리지 엔진. 사용자 데이터를 보호하기 위한 커밋, 롤백 및 충돌 복구 기능을 갖춘 트랜잭션 안전(ACID 호환) 스토리지 엔진 |
다수의 사용자 동시접속과 대용량 데이터를 처리할 때 최대 퍼포먼스를 내도록 설계됨 | |
일반 쿼리 I/O 줄이기 위해 클러스터형 인덱스에 사용자 데이터 저장 | |
데이터 무결성을 유지하기 위해 FOREIGN KEY 참조 무결성 제약 조건 지원 | |
행 단위 잠금 지원 → 트랜잭션 처리가 필요한 대용량 데이터에 유리 | |
버퍼 풀 메모리 영역을 갖춰 모든 데이터를 메모리에 유지 | |
풀텍스트 인덱스 미지원 | |
MyISAM | Non-Transactional-Safe 테이블 관리 |
전체 문장 검색, 고성능 스토리지 및 복구 기능 제공 | |
항상 Row Count 가지고 있어 SELECT count (*) 명령에 응답빠르고 SELECT 도 빠른 속도 지원 | |
풀텍스트 인덱스를 지원 → Read Only 기능이 많은 서비스에 효율적 | |
row level locking 미지원 → SELECT, INSERT, UPDATE, DELETE시 해당 테이블 전체 locking → row 수 와 CRUD 속도 반비례 | |
Memory | 중요하지 않은 데이터를 빠르게 조회해야 하는 환경에서 빠른 액세스를 위해 모든 데이터를 RAM에 저장 |
범용적이고 내구성 있는 방법을 제공하는 다른 엔진들이 도입되어 사용량 감소 추세 | |
CSV | 테이블은 실제 쉼표로 구분된 값이 포함된 텍스트 파일 |
CSV 형식으로 데이터를 가져오거나 덤프하여 동일한 형식을 읽고 쓰는 스크립트 및 애플리케이션과 데이터 교환 가능 | |
CSV 테이블은 인덱싱 되지 않아 일반 작업 중에는 InnoDB 테이블에 데이터를 유지하고 가져오기 또는 내보내기 단계에서는 CSV 테이블만 사용 | |
ARCHIVE | 거의 참조되지 않는 기록, 아카이브 또는 보안 감사 정보를 대량으로 저장하고 검색하기 위한 엔진 |
Blackhole | Unix /dev/null 장치와 유사하게 데이터를 허용하지만 저장하지 않음. 쿼리는 항상 빈 집합을 반환 |
DML 문이 복제본 서버로 전송되지만 원본 서버가 자체 데이터 복사본을 유지하지 않는 복제 구성에서 사용 | |
NDB | NDBCLUSTER 라고도 함, 클러스터형 데이터베이스 엔진 |
대규모 분산 데이터 센트에 대한 빠른 키-값 조회를 제공 | |
최고 수준의 가동시간과 가용성이 필요한 애플리케이션에 특히 적합 | |
Merge | MySQL DBA 또는 개발자가 일련의 동일한 MyISAM 테이블을 논리적으로 그룹화하고 이를 하나의 개체로 참조할 수 있음 |
데이터 웨어하우징과 같은 VLDB 환경에 적합 | |
Federated | 별도의 MySQL 서버를 연결하여 여러 물리적 서버에서 하나의 논리적 데이터베이스를 생성하는 기능을 제공 |
분산 또는 데이터 마트 환경에 매우 적합 |
MySQL Edition 차이
구분 | Community Edition | Commercial Edition |
가격 | 무료 | 유료 |
라이선스 | GPL | Oracle |
기능 | 기본 기능 제공 | 클러스터링, 고가용성, 확장성 등 기능 추가 |
기술지원 | 커뮤티티 지원 | 오라클 공식 지원 |
대규모 시스템 지원 | 지원 가능 | 고가용성, 확장성 등 대규모 시스템에 적합 |
보안 | 데이터 암호화 등 기본 보안 기능 제공 | 더 많은 보안기능 제공 |
'DBMS > MySQL' 카테고리의 다른 글
[DBMS] MySQL(6) - Replication (0) | 2025.09.12 |
---|---|
[DBMS] MySQL(5) - 백업 및 복구 (0) | 2025.09.12 |
[DBMS] MySQL(4) - 사용자 및 권한관리 (0) | 2025.09.12 |
[DBMS] MySQL(3) - 인덱스 활용 및 튜닝 (0) | 2025.09.12 |
[DBMS] MySQL(2) - MySQL 특화 SQL (0) | 2025.09.12 |