RDB와 NoSQL의 차이를 설명해주세요.

면접용 답변

RDB는 테이블 기반의 정형화된 구조를 가진 관계형 데이터베이스로, 고정된 스키마를 가지며 SQL을 사용하여 데이터 조작을 수행합니다. 반면, NoSQL은 비정형 데이터를 저장하기 위한 데이터베이스로, 문서형, 키-값, 그래프 등 다양한 형태로 데이터를 저장할 수 있으며, 유연한 스키마를 가집니다.

RDB는 정합성과 트랜잭션이 중요한 경우에 적합하고, NoSQL은 대용량 데이터 처리, 빠른 읽기/쓰기, 스키마가 자주 바뀌는 환경에 더 적합합니다.

요구되는 데이터 구조와 시스템 특성에 따라 데이터베이스를 선택하는 것이 좋습니다.

개념 설명

RDB vs NoSQL

구분
RDB (Relational DB)
NoSQL (Not Only SQL)

구조

테이블 기반 (행-열 구조, 관계 중심)

문서, 키-값, 컬럼, 그래프 등 다양한 구조

스키마

고정된 스키마 (정형화된 구조)

유연한 스키마 (필드 추가/변경 자유로움, 중첩 구조 가능, 문서마다 다름)

데이터 구성

정규화 기반 (중복 최소화, JOIN 활용)

비정규화 허용 (중복 저장, JOIN 없이 한 문서에 데이터 포함)

쿼리 언어

SQL (표준화된 구조화 질의 언어)

DB마다 다름 (MongoDB – JSON 스타일, Redis – 명령어 기반)

핵심 원칙

ACID (원자성, 일관성, 고립성, 지속성)

BASE 지향 (가용성과 확장성 중시, Eventually Consistent)

성능 특성

JOIN이 많아질수록 복잡한 연산 발생 → 성능 저하 가능성

단일 문서 중심 설계로 읽기/쓰기 빠름

대용량 처리

데이터 증가 시 성능 저하 가능성, 분산 처리 상대적 어려움

대규모 데이터 처리와 분산 저장에 최적화

사용 예시

금융, ERP, 회계 시스템 등 트랜잭션 중심 서비스

SNS, 로그 저장, 실시간 분석, IoT, 게임 등 유연성과 속도 중시 서비스


RDB 종류

DBMS 이름
특징

MySQL

가장 많이 쓰이는 오픈소스 RDB

PostgreSQL

기능 강력한 오픈소스, JSON도 지원

Oracle

기업용 상용 DB, 높은 안정성과 보안

SQLite

모바일, 임베디드용 경량 DB

NoSQL 종류

DB 종류
주요 예시
설명

문서형

MongoDB

JSON 문서 저장, 유연한 스키마 구조

키-값형

Redis

인메모리 기반, 빠른 캐시·세션 저장

컬럼형

Cassandra

열 단위 저장, 대규모 데이터 처리(로그 분석 등)에 쓰임

그래프형

Neo4j

노드-간 관계를 그래프로 표현, 추천 시스템·SNS(친구 관계)에 유리

  • RDB는 행 단위로 저장하지만, 컬럼형 DB는 컬럼 단위로 저장해 대량의 특정 컬럼만 조회할 때 효율적


추가 질문

그럼 어떤 기준으로 선택하나요?

데이터 정합성과 트랜잭션이 중요하다면 관계형 데이터베이스(RDB)를, 빠른 속도, 유연한 구조, 확장성이 중요하다면 NoSQL을 선택하는 것이 좋습니다.

실제 서비스에서는 RDB와 NoSQL을 혼합해서 사용하는 경우가 많습니다. 예를 들어, 사용자 정보와 주문 내역은 MySQL에 저장하고, 사용자 활동 로그나 피드 데이터는 MongoDB에 저장하는 구조를 사용할 수 있습니다.

Redis는 어떤 상황에서 주로 사용하나요?

Redis는 인메모리 기반의 키-값 저장소로 매우 빠른 응답 속도를 가지고, TTL 설정, Atomic 연산, Pub/Sub 기능 등을 지원합니다. 캐시, 세션 저장소, 실시간 랭킹 시스템, 메시지 큐, JWT 리프레시 토큰 저장소 등으로 많이 사용됩니다.

Last updated