RDB와 NoSQL 비교

2025. 5. 27. 14:15·Backend/DB
728x90

RDB (Relational Database)

관계형 데이터베이스는 가장 많이 사용되고 있는 DB 중 하나로, 데이터를 테이블 형태로 표현하여 구조화

각 테이블은 `행`과 `열`으로 이루어져 있으며, 테이블 간의 관계를 맺어서 데이터를 조직적으로 관리

// MySQL

-- Users 테이블
+----+--------+----------------------+
| ID | Name   | Email                |
+----+--------+----------------------+
| 1  | 철수   | chulsoo@gmail.com    |

-- Orders 테이블 (user_id 외래 키)
+----+----------+-----------+
| ID | user_id  | Product   |
+----+----------+-----------+
| 1  |    1     | Keyboard  |

테이블
테이블 간 관계

이러한 테이블 집합을 관계형 데이터베이스 라고 함.


특징

  • 스키마 기반: 테이블 구조 (컬럼 이름, 데이터 타입 등)를 미리 정의
  • SQL 사용: 데이터를 조회, 삽입, 수정, 삭제하는 표준 언어
  • 트랜잭션 지원: `ACID` 특성을 강력히 보장
  • 복잡한 조인을 통해 여러 테이블 데이터 결합 가능
❓ ACID란
원자성 (Atomic): 트랜잭션 내 모든 작업이 전부 수행 또는 전부 수행되지 않아야 함
일관성 (Consistency): 트랜잭션 수행 전후에 db는 항상 일관된 상태 유지
고립성 (Isolation): 여러 트랜잭션 동시 수행 시 서로 간섭X
지속성 (Durability): 트랜잭셩이 성공적으로 완료되면, 그 결과는 영구적 저장

NoSQL (Not Only SQL)

  • 비관계형 데이터베이스로 전통적인 RDB와 다르게 비정형 또는 반정형 데이터를 저장하는 데이터베이스
  • 분산 환경에서 데이터를 빠르게 처리하기 위해 개발됨
  • 데이터 모델이 자유롭고, 스키마가 미리 정의되지 않거나 유연한 스키마 사용
// MongoDB - Document
{
  "_id": 1,
  "name": "철수",
  "email": "chulsoo@gmail.com",
  "orders": [
    { "product": "Keyboard" },
    { "product": "Mouse" }
  ]
}

특징

  • 비관계형 데이터 베이스로 데이터 간의 관계 정의X
  • 스키마에 제약을 두지 않으며, 동적으로 스키마 변경 가능
  • 다양한 데이터 모델 지원
  • 스키마가 유연하므로 비정형 또는 반정형 데이터 효율적 처리 가능
  • SQL을 사용하지 않음
  • 분산형 구조를 갖ㅁ
  • 여러 대의 저렴한 서버를 사용할 수 있도록 설계되어 효율적

데이터 모델

 

데이터 모델

Key-Value Store (키-값 스토어)

단순한 키-값 쌍으로 데이터 저장, 복잡한 조회 연산 지원X

구조가 단순하기 때문에 빠른 읽기 & 쓰기가 가능하며 분산환경에 적합

ex) Redis, DynamoDB, Riak 등 

Document Database (문서 데이터베이스)

  • 데이터를 문서 형태로 저장하고 처리하는 데이터베이스
  • 주로 `JSON`, `XML` 등과 같은 형식으로 표현되며, 유연한 데이터 구조를 가짐
  • 중첩된 데이터 구조를 지원하여 복잡한 데이터 모델 표현 가능
ex) MongoDB, CouchDB

Wide-Column Store Database (와이드 컬럼 스토어 데이터 베이스)

  • 열에 대한 데이터를 집중적으로 관리하는 데이터베이스로 각 열에는 `Key-Value` 형식으로 데이터 저장
  • 컬럼 패밀리라고 하는 열의 집합체 단위로 데이터 처리 가능
  • 하나의 행 내에 많은 열을 포함할 수 있어 높은 유연성을 가지므로 대규모 데이터 분석, 실시간 데이터 처리에 적합
ex) Apache Cassandra, Hbase

Graph Database (그래프 데이터베이스)

  • 데이터 간의 관계를 그래프 구조로 표현하는 데이터베이스
  • 노드와 간선으로 구성되며, 각 노드는 속성별로 데이터를 저장하고 간선은 노드 사이의 관계 표현
  • 복잡한 데이터 관계를 쉽게 표현하고 복잡한 Join 작업도 간단하게 처리 가능
  • 지도 서비스, 추천 시스템, 소셜 네트워크 등 다양한 분야에 활용
ex) Neo4J, InfiniteGraph

 

RDB, NoSQL 선택 기준

  • RDB
    • 정형 데이터, 안정성 & 정확성이 중요한 경우
    • 복잡한 관계, 강한 트랜잭션 필요한 경우
    • 데이터의 구조가 명확하여 명확한 스키마가 필요한 경우
    • 관계를 맺고 있는 데이터가 자주 변경되는 경우
  • NoSQL
    • 비정형 데이터, 빠른 개발, 유연성 필요한 경우
    • 대량의 로그, 사용자 행동 기록을 저장하는 경우
    • 정확한 데이터 구조를 알 수 없는 경우
    • 대용량 데이터로 Scale-out 해야하는 경우
    • 읽기는 자주하나, 변경은 자주 없는 경우

선택 기준 RDB NoSQL
데이터 구조 정형화된 구조 (스키마 엄격) 비정형/반정형 구조 (스키마 유연하거나 없음)
스키마 변경 어렵고 번거로움 유연하고 쉽게 변경 가능
데이터 관계 테이블 간 복잡한 관계를 자주 다룸 (Join) 관계보단 개별 데이터 저장 중심
트랜잭션 요구 ACID 보장 필요 (정확성 중요) 대량 처리, 일부 유실 감수 가능할 때
확장성 수직 확장 (서버 업그레이드) 수평 확장 (서버 여러 대 분산 저장)
쿼리 복잡도 복잡한 SQL 쿼리, 조인 다수 필요 단순 조회/삽입 중심, 조인 피함
개발 속도 구조 먼저 설계 필요, 변경 어려움 유연한 구조로 빠른 개발 가능
사용 예시 은행, ERP, 회계 시스템, CRM 소셜미디어, 채팅 앱, IoT, 게임, 로그 저장 등

참고

https://dev-records.tistory.com/entry/Database-RDB%EC%99%80-NoSQL-%EB%B9%84%EA%B5%90%ED%8A%B9%EC%A7%95-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%93%B1

 

[Database] RDB와 NoSQL 비교(특징, 장단점 등)

이전 글에서 데이터베이스에 대해 알아보았습니다. 이번 글에서는 데이터베이스 중 자주 쓰이는 관계형 데이터베이스와 NoSQL에 대해 알아보겠습니다. 각 특징과 장단점을 비교하며 언제 사용되

dev-records.tistory.com

 

728x90
'Backend/DB' 카테고리의 다른 글
  • DB 정규화, 역정규화, 이상현상
  • 스키마 3계층
  • 키 (Key), 인덱스 (Index)
  • SQL 기초
0woy
0woy
Algorithm, CS, Web 등 배운 내용을 기록합니다.
  • 0woy
    0woy dev
    0woy
  • 전체
    오늘
    어제
  • 🌐 LANGUAGE
    • 분류 전체보기 (80)
      • Backend (21)
        • JAVA (7)
        • DB (11)
        • Spring (1)
        • Spring Security (2)
      • Computer Science (22)
        • 네트워크 (9)
        • 운영체제 (5)
        • 보안 (7)
      • Frontend (15)
        • HTML5 (1)
        • CSS (1)
        • JS (4)
        • Vue 3 (9)
      • PS (16)
        • LeetCode (2)
        • Baekjoon (1)
        • Programmers (1)
        • 알고리즘 (12)
      • Dev Trivia (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    function
    속성
    DP
    set
    Vue3
    대칭키
    javascript
    Graph
    leetcode
    dfs
    Filter
    가용성
    트리
    그래프
    java
    select
    공개키
    tcp
    https
    BFS
    비밀키
    Props
    JDBC
    shortestpath
    JS
    CA
    PreparedStatement
    RDB
    security
    Spring
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
0woy
RDB와 NoSQL 비교
상단으로

티스토리툴바