웹 서비스·백엔드 개발에서 자주 쓰이는 데이터베이스는 MySQL, MariaDB, PostgreSQL, SQLite 같은 관계형 DB와 MongoDB, Redis 같은 비관계형 DB로 나뉜다. 각각의 특징과 적합한 사용처, 왜 그 기술을 선택하는지, 어떤 차이가 있는지 정리하였다.
1. 크게 나눠 보는 분류
데이터베이스는 보통 관계형(RDBMS)과 비관계형(NoSQL)로 나눈다.
- 관계형(RDBMS) — 행·열 구조(테이블), SQL, 트랜잭션, 조인 지원 예: MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, SQLite
- 비관계형(NoSQL) — 문서·키-값·컬럼 기반 등 스키마가 느슨하거나 다른 구조 예: MongoDB(문서), Redis(키-값), Cassandra(컬럼 패밀리)
MySQL, PostgreSQL 등"] B["비관계형 (NoSQL)
MongoDB, Redis 등"] C["정형 데이터·트랜잭션"] D["유연한 스키마·캐시·로그"] A --> C B --> D
2. MySQL – 가장 널리 쓰이는 오픈소스 RDBMS
MySQL은 오픈소스 관계형 데이터베이스로, LAMP 스택(Linux + Apache + MySQL + PHP)에서 사실상 표준처럼 쓰여 왔다.
- 특징
- SQL 표준 기반, 트랜잭션(InnoDB), 인덱스, 외래키, 조인 지원
- 레플리케이션(마스터-리플리카), 파티셔닝, 다양한 스토리지 엔진
- 상용/클라우드 서비스(AWS RDS for MySQL, Aurora MySQL 등) 풍부
- 사용처
- 일반 웹 서비스의 회원/게시글/주문 등 정형 데이터 저장
- 블로그·쇼핑몰·백오피스 등 대부분의 CRUD·리포트 시스템
- 왜 쓰는가 — 문서·예제가 많고 호스팅·클라우드 지원이 좋아, 시작이 쉽고 운영 경험이 풍부하다. PHP·Node.js·Java 등 각종 언어에서 드라이버·ORM 지원이 충실하다.
3. MariaDB – MySQL 호환 오픈소스 포크
MariaDB는 MySQL을 만든 개발자들이 주도하여 만든 포크로, MySQL과 높은 호환성을 유지한다.
- 특징
- MySQL과 유사한 SQL 문법·프로토콜, 드라이버 호환
- 독자적인 스토리지 엔진·기능(Aria 등)을 추가하고 성능·라이선스를 개선하려는 방향
- 사용처
- MySQL과 유사한 용도, 단일 서버 또는 단순 레플리카 구성
- MySQL에서 비교적 쉽게 마이그레이션 가능한 환경
- 왜 쓰는가 — 오픈소스 친화적인 라이선스, MySQL 호환성, 일부 기능·성능 개선 때문에 MySQL 대안으로 선택된다.
4. PostgreSQL – 표준 준수·기능 풍부한 RDBMS
PostgreSQL은 \"오픈소스 세계의 상용 DB에 가까운 RDBMS\"로 평가받는다.
- 특징
- 강력한 트랜잭션·락·동시성 제어(MVCC), 윈도우 함수, CTE 등 고급 SQL 기능
- JSONB, 배열 등 반정형 데이터를 RDB 안에서 다룰 수 있는 타입 지원
- 확장성: 사용자 정의 함수, 타입, 인덱스 메서드 등
- 사용처
- 정합성이 중요한 금융·회계·거래 시스템
- 복잡한 쿼리·리포트를 많이 사용하는 서비스
- RDB 안에서 JSON 등 반정형 데이터를 함께 다루고 싶은 경우
- 왜 쓰는가 — SQL 표준 준수·기능이 풍부하고 안정적이라, MySQL보다 더 강력한 RDB를 원할 때 선택된다.
5. SQLite – 파일 하나로 끝나는 경량 DB
SQLite는 서버 프로세스 없이 하나의 파일로 동작하는 경량 RDBMS이다.
- 특징
- 서버 설치 없이 애플리케이션에 라이브러리 형태로 포함
- 하나의 .db 파일에 모든 데이터 저장
- 단일 사용자·소규모 동시 접속 환경에 적합
- 사용처
- 모바일 앱, 데스크톱 앱의 내장 데이터 저장소
- 소규모 도구·테스트용 로컬 DB
- 왜 쓰는가 — 설치·운영 부담이 거의 없고, 하나의 파일만 관리하면 되기 때문에 경량·내장 용도에 적합하다.
6. MongoDB – 문서(Document) 지향 NoSQL
MongoDB는 JSON 유사한 문서를 그대로 저장하는 문서 지향 DB이다.
- 특징
- 스키마가 유연하고, 컬렉션마다 서로 다른 형태의 문서 허용
- 수평 확장(샤딩)에 비교적 친화적인 구조
- 중첩 구조·배열을 그대로 저장·쿼리 가능
- 사용처
- 자주 바뀌는 스키마, 다양한 필드를 가진 이벤트·로그 데이터
- 문서형·JSON 구조를 그대로 저장하고 싶은 서비스
- 왜 쓰는가 — RDB에서 스키마를 계속 변경하기 부담스러운 경우, 유연한 스키마와 수평 확장을 위해 선택된다.
7. Redis – 인메모리 키-값 저장소
Redis는 메모리에 데이터를 보관하고 필요한 경우 디스크에 스냅샷·로그를 남기는 키-값 저장소이다.
- 특징
- 매우 빠른 읽기·쓰기(메모리 기반)
- 문자열뿐 아니라 리스트·셋·정렬된 셋·해시 등 다양한 자료구조 지원
- TTL(만료 시간) 설정, Pub/Sub, Lua 스크립트 등
- 사용처
- 세션 저장, 캐시, 레이트 리밋 카운터, 랭킹보드
- 큐·Pub/Sub 기반 간단한 메시징
- 왜 쓰는가 — 속도와 TTL·자료구조가 강점이라, RDB를 대체하기보다는 옆에서 캐시·보조 저장소로 함께 사용된다.
8. 선택 기준과 비교 요약
어떤 데이터베이스를 쓸지는 데이터 구조·정합성 요구·트래픽 패턴·운영 환경을 기준으로 결정한다.
| DB | 주요 특징 | 적합한 사용처 |
|---|---|---|
| MySQL / MariaDB | 관계형, SQL, 웹에서 가장 널리 사용 | 일반 웹 서비스, CRUD·리포트 |
| PostgreSQL | 표준·기능 풍부, JSONB 등 고급 기능 | 정합성·복잡 쿼리가 중요한 시스템 |
| SQLite | 파일 기반, 서버 없이 동작 | 모바일·데스크톱 내장 DB, 소규모 |
| MongoDB | 문서 지향, 유연한 스키마 | JSON 문서, 이벤트·로그, 스키마 자주 변경 |
| Redis | 인메모리 키-값, TTL·자료구조 | 캐시, 세션, 레이트 리밋, 랭킹 |
9. 같이 쓰는 패턴
실제 서비스에서는 하나만 쓰기보다는 여러 종류를 조합하는 경우가 많다.
- MySQL/PostgreSQL + Redis — RDB에 정본 데이터를 두고, Redis는 캐시·세션·카운터에 사용
- RDB + MongoDB — 핵심 정형 데이터는 RDB, 이벤트 로그·유연한 문서는 MongoDB
- RDB + Elasticsearch — 검색·분석 전용으로 Elasticsearch를 붙이는 패턴
이렇게 하면 각 DB의 강점을 살리면서, 약점을 보완할 수 있다.
한 줄 요약
MySQL·MariaDB·PostgreSQL·SQLite는 테이블·트랜잭션·SQL 중심의 관계형 DB이고, MongoDB·Redis 등은 문서·키-값 기반의 비관계형 DB이다. 정합성과 전통적인 CRUD에는 RDB를, 유연한 스키마·캐시·고속 카운팅·세션에는 NoSQL을, 서비스 특성에 따라 조합해서 사용하는 것이 일반적이다.
댓글 0