본문 바로가기
정리

RDBMS vs NoSQL

by dyddyd0 2025. 4. 26.

RDBMS

Relational DataBase Management System, 관계형 데이터베이스 관리 시스템)이란,
"데이터를 표(테이블) 형태로 저장하고 관리하는 데이터베이스 시스템"을 말한다.

 

 

  • Relational: 데이터가 "관계(relationship)"를 통해 연결. (예: 회원 테이블과 주문 테이블이 회원 ID로 연결됨)
  • DataBase: 데이터를 저장하는 저장소.
  • Management System: 데이터를 효율적으로 추가, 수정, 삭제, 조회할 수 있도록 돕는 소프트웨어.

 

 

RDBMS 특징 :

  • 데이터를 행(row)과 열(column)로 구성된 테이블에 저장한다.
  • 테이블 간 관계(foreign key 등)를 정의할 수 있다.
  • SQL(Structured Query Language)이라는 언어를 사용해 데이터를 다룬다.
  • 정합성(일관성)과 무결성(Integrity)을 중요하게 생각한다. (예: 없는 회원 ID로 주문을 만들 수 없음)

대표적인 RDBMS 예시로는

MySQL, MariaDB, PostgreSQL, Oracle DB, Microsoft SQL Server 등이 있음.

 

 

 

RDBMS는 언제 써야 될까?

- 데이터의 구조가 명확할 때.

예를 들어 회원 정보(이름, 이메일, 비밀번호), 주문 정보(주문 번호, 상품 ID, 결제 금액) 등.

 

- 데이터 간 관계가 복잡할 때.

예를 들어 외래키로 테이블간 연결되어 있고, 조인연산이 많이 들어갈 때 : 특정 카테고리의 상품 중 리뷰 평점이 높은 것만 조회 등

 

- 데이터의 일관성과 무결성이 중요할 때.

예를들어 은행 시스템이나, 병원 환자 기록 등 잘못된 데이터 입력을 막아야 되는 경우

 

구조적인 데이터 + 데이터 간 관계가 필요 + 정확성(무결성)이 중요한 상황 → RDBMS가 적합함.

 

 


NoSQL

"Not Only SQL"의 줄임말로, 전통적인 RDBMS(관계형 데이터베이스)가 아닌 방식으로 데이터를 저장/관리하는 시스템을 말한다.

초기에 "SQL을 쓰지 않는 데이터베이스"라는 의미였지만, 요즘은 "SQL뿐만 아니라 다양한 방식으로 데이터를 저장하는 시스템"으로 해석한다.

 

 

NoSQL 특징 :

 

  • 스키마가 유동적이다.
    (테이블 구조를 미리 정의하지 않아도 되고, 자유롭게 변경 가능)
  • 수평적 확장(Scale-out) 이 용이하다.
    (서버를 여러 대 추가해서 부하를 분산할 수 있음)
  • 대용량 데이터 처리에 유리하다.
    (빅데이터, IoT 데이터 같은 경우)
  • 고성능, 빠른 읽기/쓰기가 가능하다.
    (특히 캐시나 세션 저장 같은 경우)
  • 관계형 JOIN 연산이 없다.
    (필요하면 데이터 중복을 허용하기도 한다)

 

 

NoSQL의 종류

구분 설명 예시
Key-Value 저장소 키(Key)와 값(Value)로 데이터를 저장 Redis, DynamoDB
문서(Document) 저장소 JSON처럼 문서 형태로 데이터를 저장 MongoDB, CouchDB
컬럼(Column) 저장소 열 단위로 데이터를 저장 Cassandra, HBase
그래프(Graph) 저장소 노드(Node)와 간선(Edge)로 데이터를 저장 Neo4j, ArangoDB

 

NoSQL 단점으로는 

  • 데이터 일관성(Consistency)을 완벽하게 보장하기 어렵다.
  • JOIN 같은 복잡한 쿼리가 어렵거나 불가능하다.
  • 설계가 자유로운 만큼 개발자가 직접 "데이터 모델링"을 신경 써야 한다.
  • 특정 상황에서는 RDBMS보다 비효율적일 수 있다.

 

NoSQL은 언제 써야 될까?

- 데이터 구조가 자주 변할 때

- 초당 수십만 건 이상의 읽기/쓰기 처리가 필요할 때

- 복잡한 JOIN 없이 빠른 속도가 중요할 때

- 대규모 분산 환경이 필요할 때 (서버 여러 대에 데이터 분산)

- 데이터 간 관계보다는 "빠른 접근"이 우선일 때

 

 

자유로운 데이터 저장 + 대규모, 빠른 성능이 필요할 때 NoSQL을 고려하자.

 

 

 

반응형

'정리' 카테고리의 다른 글

자바 동시성이슈  (0) 2025.04.28
동기(Synchronous)와 비동기(Asynchronous), blocking과 nonBlocking  (0) 2025.04.27
Collection정리하기 List, Set, Map  (0) 2025.04.25
스프링  (0) 2025.04.22
프로세스와 스레드  (0) 2025.04.22