RDBMS와 NOSQL DB

2025. 8. 6. 00:24·CS 공부

1. RDB란 ?

  • 관계형 데이터베이스
  • 데이터를 행과 열이 있는 테이블 형식으로 저장한다.
  • 열에는 데이터 속성, 행에는 데이터 값이 있다.

1-1 . RDBMS 단점

  1. 🙅🏻 유연한 확장성의 부족
  • RDBMS는 데이터를 저장하기 위해 사전에 스키마(테이블 구조)를 정의해야 한다.
  • 새로운 컬럼을 추가하거나 기존 스키마를 수정할 때, 기존 데이터 전체에 영향을 미칠 수 있어 유연성이 떨어진다.
  • 특히 대용량 데이터베이스에서는 컬럼 추가나 스키마 변경 작업이 느리거나 복잡할 수 있다.
  1. 🙅🏻 과도한 정규화
  • 데이터 중복 제거를 위한 정규화를 진행하게 된다면, 데이터를 불러올때 join, join … 하게 되면서 성능 저하 가능성이 있다.

→ 테이블 간 관계가 복잡해 질 수 있다는 단점이 있다.

  1. 🙅🏻 트래픽이 몰린다면 ?
  • RDBMS는 기본적으로 수직 확장(Scale-up) 방식에 의존하기 때문에, 서버 사양을 높이는 방식 외엔 처리량 한계가 존재한다.
  • write 요청이 과하다면, memory 사용양이 늘어나면서 부하가 발생할 수 있다.
  • Write 요청은 대부분의 RDBMS에서 하나의 Master(Primary) 노드만 처리 → ACID 보장을 위해
⚠️ 내가 이해한 수평 확장이 어려운 이유 ⚠️
RDBMS에서 read/write로 요청이 들어올때, read 요청은 여러대의 서버를 두어서 분산 시킬 수 있지만, write는 일관성 유지 때문에 분산이 어렵다. write를 담당하는 서버는 어쩔 수 없이 scale-up 방식을 사용해야 해서, RDBMS는 수평 확장 방식에 유연성이 부족하다.

✔️ RDBMS 예시

✅ MySQL, PostgreSQL, Oracle

2. NoSQL이란 ?

  • 비관계형 데이터베이스
  • 데이터를 비정형 또는 반정형 (문서, 키-값, 컬럼, 그래프 등)구조로 저장한다

✔️ NOSQL DB 예시

✅ MongoDB(문서형), Redis(키-값), Cassandra(컬럼형), Neo4j(그래프형)

2-1 . NoSQL 특징

  • 유연성 있는 스키마
  • 중복 허용( 정규화 안함)
  • scale-out(수평 확장)에 최적화 되어져 있다.

 

3. RDBMS 와 NoSQL 차이

3-1. 데이터 무결성 메커니즘

원자성, 일관성, 격리 및 내구성(ACID)은 데이터 처리에서 오류나 중단이 발생하더라도 데이터 무결성을 유지할 수 있는 데이터베이스의 기능을 말한다.

✅ RDBMS

  • 관계형 데이터베이스 모델은 엄격한 ACID 속성을 따른다.
  • 단일 작업이 실패하면 전체 작업 세트가 실패한다. → 데이터 정확성이 항상 보장

✅ NOSQL

  • 비관계형 데이터베이스는 가용성을 보장하지만 즉각적인 일관성은 보장하지 않는다.
  • 데이터베이스 상태는 시간이 지남에 따라 변할 수 있으며 결국 일관된 상태가 된다.
  • 일부 비관계형 데이터베이스는 ACID 규정 준수와 성능 또는 기타 장단점을 제공할 수 있다.

3-2. scale-out

  • RDBS
  • NOSQL

용어 정리

⚙️ Scale-Up (수직 확장)

  • 정의: 기존 서버에 CPU, RAM, 디스크 등 하드웨어 성능을 높이는 방식
  • 비유: 데스크탑 컴퓨터에 더 좋은 부품을 끼우는 것
  • 장점: 구조를 크게 바꾸지 않고 성능 향상 가능
  • 단점: 성능 향상에 한계가 있음, 고사양 장비는 비용이 매우 높음
예: 8코어 서버를 32코어 서버로 교체

🧱 Scale-Out (수평 확장)

  • 정의: 서버를 여러 대 추가해서 분산 처리하는 방식
  • 비유: 컴퓨터를 여러 대 두고 작업을 나누는 것
  • 장점: 확장성이 뛰어나고, 트래픽이 늘어나도 서버 추가로 대응 가능
  • 단점: 시스템이 복잡해지고, 데이터 분산이나 일관성 유지가 어려움
예: 서버 1대를 4대로 늘려서 트래픽을 분산 처리

참고

  • https://www.youtube.com/watch?v=sqVByJ5tbNA&t=1398s



'CS 공부' 카테고리의 다른 글

SSE란 ?  (4) 2025.08.18
웹소켓 개념  (3) 2025.08.07
멀티 태스킹, 동시성, 동기, 비동기 , 락 개념 정리  (4) 2025.08.03
네트워크 기초  (0) 2025.07.04
프로그래밍 패러다임  (0) 2025.06.20
'CS 공부' 카테고리의 다른 글
  • SSE란 ?
  • 웹소켓 개념
  • 멀티 태스킹, 동시성, 동기, 비동기 , 락 개념 정리
  • 네트워크 기초
Adose
Adose
  • Adose
    도즈의 개발 블로그
    Adose
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • JAVA (22)
      • 스프링 | 스프링 부트 (34)
        • 스프링 시큐리티 (1)
        • 채팅 (1)
      • 스프링 프로젝트 (5)
        • JDBC - 은행앱 구현 (1)
        • Spring Boot - 독서 블로그 프로젝트 (3)
        • 개인 프로젝트 - CoreBrief (1)
      • 가상화 기술 (22)
      • Git (1)
      • 코딩테스트 (47)
        • 프로그래머스 입문 (68)
      • AWS (1)
      • 데이터베이스 (0)
      • CS 공부 (8)
      • 알고리즘, 자료구조 (6)
      • 우테코 프리코스 (7)
      • 트러블 슈팅 (6)
      • 프론트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    멋쟁이사자처럼백엔드
    springdatajdbc
    코딩테스트
    멋쟁이사자처럼
    Java
    test
    GIT
    프론트
    스프링부트
    LV0
    스프링
    LV2
    jdbc
    LV1
    프로그래머스
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Adose
RDBMS와 NOSQL DB
상단으로

티스토리툴바