RDB와 NoSQL 비교

2025. 5. 27. 14:15·Backend/DB
목차
  1. RDB (Relational Database)
  2. 특징
  3. NoSQL (Not Only SQL)
  4. 특징
  5. 데이터 모델
  6.  
  7. RDB, NoSQL 선택 기준
  8. 참고
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
  1. RDB (Relational Database)
  2. 특징
  3. NoSQL (Not Only SQL)
  4. 특징
  5. 데이터 모델
  6.  
  7. RDB, NoSQL 선택 기준
  8. 참고
'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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.