관계형·비관계형 데이터베이스 종류와 사용처 비교 정리

조회수 34

웹 서비스·백엔드 개발에서 자주 쓰이는 데이터베이스는 MySQL, MariaDB, PostgreSQL, SQLite 같은 관계형 DB와 MongoDB, Redis 같은 비관계형 DB로 나뉜다. 각각의 특징과 적합한 사용처, 왜 그 기술을 선택하는지, 어떤 차이가 있는지 정리하였다.

1. 크게 나눠 보는 분류

데이터베이스는 보통 관계형(RDBMS)비관계형(NoSQL)로 나눈다.

  • 관계형(RDBMS) — 행·열 구조(테이블), SQL, 트랜잭션, 조인 지원 예: MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, SQLite
  • 비관계형(NoSQL) — 문서·키-값·컬럼 기반 등 스키마가 느슨하거나 다른 구조 예: MongoDB(문서), Redis(키-값), Cassandra(컬럼 패밀리)
flowchart LR A["관계형 (RDBMS)
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

  • 첫 번째 댓글을 남겨보세요.