반응형
1. 💡 MariaDB란 무엇인가?
MariaDB는 원래 MySQL의 창시자인 몬티 와이드니우스(Michael "Monty" Widenius)가 MySQL의 대체제로 개발한 오픈 소스 데이터베이스입니다. MySQL과 매우 유사한 인터페이스를 제공하며, 기존 MySQL을 사용하던 애플리케이션에서 손쉽게 MariaDB로 전환할 수 있도록 설계되었습니다.
1.1 MariaDB와 오라클의 관계
- MySQL의 역사:
- MySQL은 1995년에 처음 개발되었고, 빠르게 관계형 데이터베이스 시장에서 주요 플레이어로 자리 잡았습니다.
- 2008년, MySQL은 썬 마이크로시스템즈(Sun Microsystems)에 인수되었습니다.
- 2010년, 썬 마이크로시스템즈가 오라클(Oracle)에 인수되면서 MySQL 역시 오라클의 소유가 되었습니다.
- MariaDB의 탄생:
- MySQL의 창시자였던 몬티 와이드니우스는 오라클의 MySQL 운영 방식에 대한 우려를 표명하며, MariaDB를 별도로 개발하기 시작했습니다.
- MariaDB는 MySQL의 코드베이스에서 분기된 포크 프로젝트로 시작되었으며, MySQL의 100% 오픈 소스 철학을 계승합니다.
2. 🛠️ MariaDB의 핵심 구성 요소
MariaDB는 여러 가지 모듈과 구성 요소로 이루어져 있으며, 데이터베이스 엔진부터 고급 기능까지 다양한 요소를 포함합니다.
2.1 스토리지 엔진(Storage Engine)
MariaDB는 MySQL처럼 다양한 스토리지 엔진을 지원하며, 다음과 같은 주요 엔진이 포함됩니다.
- InnoDB:
- MariaDB의 기본 스토리지 엔진.
- 트랜잭션 지원, 외래 키, ACID 특성 제공.
- 복잡한 애플리케이션과 대규모 트랜잭션 처리에 적합.
- Aria:
- MyISAM의 대체 엔진으로 설계됨.
- 높은 쓰기 성능 제공.
- 주로 임시 테이블 용도로 사용.
- ColumnStore:
- 컬럼 지향 저장 방식을 사용하여 분석 워크로드에 최적화.
- 대용량 데이터 분석에 유리.
- MyRocks:
- RocksDB 기반의 스토리지 엔진.
- 쓰기 성능 최적화 및 효율적인 저장 공간 활용.
- TokuDB:
- 압축 기술과 성능 향상에 중점을 둔 스토리지 엔진.
- 대규모 데이터베이스에서 효율적.
2.2 Replication(복제)
MariaDB는 기본적으로 데이터베이스 복제를 지원합니다. 이를 통해 데이터 가용성을 높이고 읽기 부하를 분산할 수 있습니다.
- Master-Slave Replication:
- 하나의 마스터 데이터베이스에서 데이터를 작성하고, 여러 슬레이브 데이터베이스로 복제.
- Master-Master Replication:
- 여러 노드에서 데이터를 동시에 읽고 쓰는 복제 모델.
- Galera Cluster:
- MariaDB에서 클러스터링을 구현하는 기술.
- 트랜잭션이 모든 노드에 동기화되도록 보장.
3. 🔧 MariaDB 설치 및 설정
MariaDB를 설치하고 기본적으로 사용할 수 있는 방법을 알아보겠습니다.
3.1 MariaDB 설치
MariaDB는 다양한 운영체제에서 사용할 수 있습니다. 여기서는 Ubuntu 기준으로 설명하겠습니다.
1️⃣ Ubuntu에서 설치
sudo apt update
sudo apt install mariadb-server
2️⃣ MariaDB 서버 시작
sudo systemctl start mariadb
sudo systemctl enable mariadb
3️⃣ 설치 확인
mariadb --version
3.2 초기 설정
MariaDB 설치 후 보안 설정을 진행합니다.
1️⃣ 보안 스크립트 실행
sudo mysql_secure_installation
- 기본적으로 루트 비밀번호 설정, 익명 사용자 삭제, 원격 루트 로그인 비활성화 등의 옵션을 설정합니다.
2️⃣ MariaDB 접속
MariaDB에 접속하려면 다음 명령어를 사용합니다:
sudo mariadb -u root -p
4. 🛠️ MariaDB 사용법
4.1 데이터베이스 생성 및 사용
1️⃣ 데이터베이스 생성
CREATE DATABASE test_db;
2️⃣ 데이터베이스 확인
SHOW DATABASES;
3️⃣ 데이터베이스 사용
USE test_db;
4.2 테이블 생성 및 데이터 삽입
1️⃣ 테이블 생성
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
2️⃣ 데이터 삽입
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
3️⃣ 데이터 조회
SELECT * FROM users;
5. 🏗️ RDB의 장점과 한계
5.1 RDB(Relational Database)의 장점
- 데이터 무결성:
- RDB는 엄격한 스키마와 제약 조건(Constraints)을 통해 데이터의 정확성과 일관성을 보장합니다.
- 트랜잭션 관리:
- 트랜잭션의 ACID(원자성, 일관성, 격리성, 지속성) 특성을 보장하여 안정적인 데이터 관리를 제공합니다.
- 관계형 모델:
- 테이블 간의 관계를 명시적으로 정의하여 복잡한 데이터 구조를 효과적으로 관리합니다.
- 표준화된 쿼리 언어(SQL):
- 데이터를 조회, 삽입, 수정, 삭제하기 위한 표준화된 언어를 제공합니다.
5.2 RDB의 한계
- 확장성 문제:
- 수평적 확장(Scale-Out)에 어려움이 있어, 데이터가 매우 방대해지면 성능이 저하될 수 있습니다.
- 고정 스키마:
- 스키마가 고정되어 있어, 데이터 구조가 자주 변경되는 경우 유연성이 떨어집니다.
- 비정형 데이터 처리 제한:
- 텍스트, 이미지, 동영상 등 비정형 데이터를 다루는 데 비효율적입니다.
요약: RDB는 일관성, 무결성, 트랜잭션 중심의 시스템에 적합하고, NoSQL은 확장성과 비정형 데이터 처리에 적합합니다.
7. 요약
- MariaDB는 MySQL의 대안으로, 오픈 소스 철학을 유지하며 안정성과 성능을 제공합니다.
- RDB는 데이터 무결성과 트랜잭션 관리에서 강력하지만, 확장성과 유연성에서 한계가 있습니다.
- NoSQL은 비정형 데이터를 처리하고 확장성 있는 애플리케이션에서 뛰어난 성능을 발휘합니다.
반응형
'DB' 카테고리의 다른 글
[DB] NoSQL의 모든 것 (0) | 2024.11.24 |
---|---|
[DB] JOIN과 EXISTS의 차이점 (1) | 2024.09.27 |
[DB] DB Table Key의 종류 (0) | 2024.08.07 |
테이블 관계 정리 #1:1 #1:N #N:M #1:0 (0) | 2024.02.22 |