ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Database] RDB vs NoSQL - 1
    업무 자동화/Database 2025. 12. 9. 11:23

    1. 데이터베이스 세상의 큰 그림

    1-1. 관계형 데이터베이스(RDB, Relational Database)

    • 데이터를 테이블(표) 구조로 저장하는 데이터베이스
    • 테이블은 행(row, 레코드)과 열(column, 필드)로 이루어짐
    • 테이블 간 관계를 PK(Primary Key), FK(Foreign Key) 로 표현
    • 데이터를 조작하고 조회하기 위해 SQL(Structured Query Language) 사용
    • 예시 제품
      • MySQL / MariaDB
      • PostgreSQL
      • Oracle DB
      • MS SQL Server

    1-2. NoSQL (Not Only SQL)

    • 기존 RDB의 테이블/스키마 모델에서 벗어난 다양한 데이터베이스 계열
    • “SQL을 안 쓴다”는 의미가 아니라, SQL만 고집하지 않는다는 의미에 가깝다
    • 데이터 구조와 확장 방식에서 RDB와 다른 접근을 취함
    • 대표적인 유형
      • 문서 지향(Document) DB – 예: MongoDB
      • 키-값(Key-Value) 스토어 – 예: Redis
      • 칼럼 패밀리(Column Family) – 예: Cassandra
      • 그래프(Graph) DB – 예: Neo4j

    2. NoSQL의 주요 유형과 특징

    2-1. 문서 지향(Document-Oriented) DB

    • 데이터를 문서(Document) 단위로 저장
    • JSON 또는 JSON 유사 구조(BSON 등)를 사용
    • 한 문서 안에 중첩 구조, 배열 등을 자유롭게 넣을 수 있음
    • 예시: MongoDB, CouchDB 등

    특징

    • 스키마가 비교적 유연하다 (필드 추가/삭제가 자유로운 편)
    • API 응답(JSON) 구조와 자연스럽게 맞아떨어지는 경우가 많다
    • 수평 확장(샤딩)에 초점을 둔 설계가 많다

    2-2. 키-값(Key-Value) 스토어

    • 데이터를 단순히 키(key) - 값(value) 쌍으로 저장
    • 예시: Redis, Memcached 등
    • 특징
      • 매우 빠른 읽기/쓰기
      • 캐시, 세션, 일시적인 데이터 저장에 자주 사용
      • 구조가 단순한 대신, 복잡한 조회/집계에는 적합하지 않음

    2-3. 칼럼 패밀리(Column Family) DB

    • RDB의 테이블과 비슷해 보이지만, 내부 구조와 분산 방식이 다름
    • 예시: Cassandra, HBase 등
    • 특징
      • 매우 큰 규모의 데이터에 대해 수평 확장을 적극적으로 활용
      • 특정 패턴의 조회에 매우 빠른 성능을 제공
      • 데이터 모델링 시 접근 패턴을 매우 신중하게 설계해야 함

    2-4. 그래프(Graph) DB

    • 데이터를 노드(Node)와 엣지(Edge) 로 표현
    • 예시: Neo4j, JanusGraph 등
    • 특징
      • 사람-사람, 상품-상품, 노드-노드 간 관계 자체를 1급 데이터로 취급
      • 추천, 소셜 네트워크, 경로 탐색 등 복잡한 관계 분석에 특화

    3. RDB vs NoSQL, 사고방식의 차이

    3-1. 설계 출발점

    • RDB
      • 정규화를 통해 데이터 중복을 최소화
      • 스키마를 먼저 설계하고 그 틀에 맞게 데이터를 적재
      • 복잡한 조인을 활용해 관계형 데이터를 조회
    • NoSQL
      • 중복을 어느 정도 허용하면서, 읽기 패턴 기준 설계를 자주 사용
      • “어떤 화면/기능에서 어떤 데이터가 함께 필요할까?”를 먼저 생각
      • 자주 같이 조회되는 데이터는 한 문서/레코드 안에 묶기도 한다

    3-2. 스키마 유연성과 변경

    • RDB
      • 스키마(테이블 구조, 컬럼 타입)를 명시적으로 정의
      • 스키마 변경(ALTER TABLE)이 필요할 때마다 전체 데이터에 영향
      • 안정성, 예측 가능성이 큰 장점
    • NoSQL
      • 스키마가 느슨하거나, 애플리케이션 레벨에서 관리
      • 필드를 추가/변경해도 기존 문서를 반드시 일괄 변환할 필요는 없는 경우가 많음
      • 빠른 실험과 변경에 유리

    4. MariaDB와 MongoDB

    4-1. MariaDB

    • 유형: 관계형(RDBMS)
    • 특징
      • MySQL과 높은 호환성을 유지하는 오픈소스 DB
      • SQL 기반 쿼리
      • 트랜잭션, 조인, 정규화에 강점
    • 사용 예시
      • 전통적인 웹 서비스(게시판, 쇼핑몰, ERP 등)
      • 금융/회계/정산/재고 관리 등 정합성이 중요한 시스템

    4-2. MongoDB

    • 유형: 문서 지향(Document) NoSQL DB
    • 특징
      • JSON 유사 구조(BSON) 문서 저장
      • 컬렉션(Collection) 단위로 도큐먼트(Document) 관리
      • 스키마 유연성, 수평 확장성(샤딩)에 강점
    • 사용 예시
      • 로그/이벤트 데이터
      • 빠르게 변하는 서비스 모델
      • JSON 기반 API 서버와 연계된 데이터 저장소

    5. 실무에서 왜 둘을 같이 쓰는가?

    현실의 서비스에서는 “RDB vs NoSQL 중 하나만”을 고르는 대신,
    각각의 장점을 살려서 함께 사용하는 패턴이 점점 많아지고 있다.

    예시 패턴

    • 핵심 비즈니스 데이터
      • 주문, 결제, 정산, 계약, 재고 등
      • MariaDB / 다른 RDB 에 저장 (트랜잭션, 정합성 우선)
    • 부가/분석용 데이터
      • 사용자 행동 로그, 이벤트, 알림 기록, 추천용 프로필 등
      • MongoDB / NoSQL 에 저장 (확장성, 유연성 우선)

    이렇게 하면

    • 돈과 관련된 중요한 숫자는 RDB의 안정성을 활용하고,
    • 양이 많고 자주 변하는 데이터는 NoSQL의 확장성과 유연성을 활용할 수 있다.

    6. 정리

    RDB와 NoSQL은 “서로 경쟁하는 관계”라기보다, 각자 강점이 다른 도구 세트에 가깝다.
    MariaDB는 전통적인 관계형 DB, MongoDB는 문서 지향 NoSQL DB의 대표 사례로 볼 수 있다.
    이후 시리즈에서는

    • MongoDB의 개념과 용어
    • MongoDB vs MariaDB 설계 비교
    • 서비스별 DB 선택 가이드
    • 실무 체크리스트

    를 순서대로 정리한다.

Designed by Tistory.