Files
kui-vault/content/02.Volume/DB/MariaDB vs PostgreSql.md
T
2026-05-04 10:30:04 +09:00

66 lines
4.1 KiB
Markdown

---
id: "MariaDB vs PostgreSql 20260421"
created: "2026-04-21 16:43"
tags:
---
이 두 DB는 현재 오픈소스 RDBMS 시장의 양대 산맥입니다. **MariaDB**가 MySQL의 친숙함을 계승하며 실용성에 집중한다면, **PostgreSQL**은 데이터 무결성과 고급 기능을 중시하는 학구적이고 정교한 DB라고 할 수 있습니다.
## 1. 철학 및 개발 배경
|**구분**|**MariaDB**|**PostgreSQL**|
|---|---|---|
|**태생**|MySQL에서 분차(Fork)되어 나온 실용주의 DB|학계에서 시작된 객체-관계형(ORDBMS) 표준 지향 DB|
|**슬로건**|"MySQL보다 빠르고 더 많은 기능을 무료로"|"세계에서 가장 진보된 오픈소스 관계형 데이터베이스"|
|**라이선스**|GPL v2 (비즈니스 시 소스 공개 의무 주의)|PostgreSQL 라이선스 (BSD/MIT와 유사, 매우 자유로움)|
## 2. 기술적 핵심 차이
### 🚩 SQL 표준 및 복잡한 쿼리 처리
- **PostgreSQL:** SQL 표준 준수율이 매우 높습니다. 복잡한 조인(Join), 재귀 쿼리(Recursive CTE), 윈도우 함수 성능이 뛰어나며, 분석용 쿼리 최적화가 강력합니다. (MSSQL과 사용감이 비슷합니다.)
- **MariaDB:** MySQL의 문법을 따르며, 단순한 CRUD 성능에 최적화되어 있습니다. 최근 버전에서 CTE나 윈도우 함수를 지원하지만, 복잡한 비즈니스 로직 처리에서는 PostgreSQL에 비해 최적화가 덜 정교할 수 있습니다.
### 🚩 데이터 타입과 확장성
- **PostgreSQL:** 독보적입니다. JSONB(바이너리 JSON) 지원으로 NoSQL처럼 쓸 수 있고, 지리 정보(PostGIS), 전문 검색(Full-text search) 등이 내장되어 있습니다. 사용자 정의 타입도 만들 수 있습니다.
- **MariaDB:** 동적 컬럼(Dynamic Columns) 기능을 통해 비정형 데이터를 다루지만, PostgreSQL의 JSONB 성능에는 미치지 못합니다. 대신 다양한 스토리지 엔진(InnoDB, Aria, ColumnStore 등)을 용도에 맞게 선택할 수 있는 유연성이 있습니다.
### 🚩 동시성 제어 (MVCC)
- **PostgreSQL:** 데이터 쓰기 중에도 읽기가 차단되지 않는 MVCC(Multi-Version Concurrency Control) 방식이 매우 세련되어 있어, 동시 접속자가 많은 대형 시스템에 유리합니다.
- **MariaDB:** 스토리지 엔진(주로 InnoDB) 수준에서 MVCC를 지원하며, 읽기 위주의 서비스에서 가볍고 빠르게 동작합니다.
## 3. 상세 비교 테이블
| **항목** | **MariaDB** | **PostgreSQL** |
| ------------------- | ---------------------------- | ------------------------------------------- |
| **주요 용도** | 웹 서비스, CMS(워드프레스 등), 단순 CRUD | 복잡한 데이터 분석, 금융 시스템, GIS 서비스 |
| **성능 특징** | 읽기(Read) 성능이 매우 빠름 | 복잡한 쓰기(Write) 및 대량 데이터 처리에 강함 |
| **복제(Replication)** | 마스터-슬레이브 방식이 매우 쉽고 직관적 | 논리적 복제 등 다양한 방식 지원 (설정은 좀 더 복잡) |
| **저장 프로시저** | 지원 (MySQL 문법) | 강력 지원 (PL/pgSQL, Python, Perl 등 지원) |
| **인덱싱** | 기본 B-Tree 위주 | B-Tree, Hash, GiST, SP-GiST, GIN, BRIN 등 다양 |
## 4. 어떤 것을 선택해야 할까?
### 🐧 MariaDB를 선택할 때
- 기존에 MySQL을 써본 적이 있어 익숙함이 중요할 때.
- 커뮤니티나 자료가 많은 것을 선호할 때.
- 단순한 웹 게시판이나 가벼운 데이터 저장용일 때.
- PHP나 구형 웹 스택과의 호환성이 중요할 때.
### 🐘 PostgreSQL을 선택할 때
- **MSSQL 2019의 고급 기능을 오픈소스에서도 누리고 싶을 때.**
- 데이터 정합성이 무엇보다 중요한 금융, 결제, 정산 관련 프로젝트일 때.
- JSON 데이터를 빈번하게 다루면서 속도도 포기할 수 없을 때.
- 프로젝트가 커질 것을 대비해 확장성이 뛰어난 DB가 필요할 때.