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

4.1 KiB

id, created, tags
id created tags
MariaDB vs PostgreSql 20260421 2026-04-21 16:43

이 두 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가 필요할 때.