서비스를 개발하다 보면 데이터를 어디에, 어떤 형태로 저장할지 결정해야 한다
이때 가장 자주 접하게 되는 선택지가 RDBMS와 NoSQL이다
두 데이터베이스는 단순히 제품 이름이 다른 것이 아니라, 데이터를 구성하고 관리하는 방식 자체가 다르다
1. RDBMS란??
RDBMS는 Relational Databas Management System, 즉 '관계형 데이터베이스 관리 시스템'을 의미한다
데이터를 행(Row)과 열(Column)로 구성된 테이블에 저장하고, 각 테이블 사이의 관계를 이용해 데이터를 관리한다
대표적인 RDBMS는 다음과 같다
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
- MariaDB
쇼핑몰 데이터 예시
쇼핑몰의 고객과 주문 정보를 저장한다고 가정해 볼 때


주문 테이블의 고객 ID를 이용하면 주문한 고객의 정보를 찾을 수 있다
이렇게 테이블 사이의 관계를 기반으로 데이터를 관리하는 거이 RDBMS의 핵심이귿
RDBMS의 장점
- 데이터의 관계를 명확하게 표현할 수 있다
- 데이터 중복을 줄이기 좋다
- SQL을 이용해 복잡한 조회와 집계를 수행할 수 있다
- 트랜잭션을 통해 데이터의 일관성을 관리하기 좋다
- 외래키와 제약조건으로 데이터 무결성을 보장할 수 있다
RDBMS의 단점
- 테이블 구조를 사전에 설계해야 한다
- 운영 중 스키마를 변경하는 작업이 부담스러울 수 있다
- 데이터와 관계가 복잡해지면 쿼리도 복잡해질 수 있다
- 전통적으로 여러 서버를 이용한 수평 확장이 까다로운 편이다
RDBMS가 적합한 경우
RDBMS는 데이터의 정확성과 일관성이 중요한 시스템에 적합하다
- 금융 및 은행 시스템
- 주문 , 결제 시스템
- 회계 시스템
- 회원 관리
- 재고 관리
- 전사 관리 시스템
2. NoSQL이란??
NoSQL은 일반적으로 Not Only SQL의 약자로 셜명된다
관계형 테이블만 사용하는 대신 데이터의 특성과 사용 목적에 맞는 다양한 저장 구조를 제공한다
대표적인 NoSQL 데이터베이스
- MongoDB
- Redis
- Apache Cassandra
- Amazon DynamoDB
- Neo4j
문서형 데이터 예시
MongoDB와 같은 문서형 데이터베이스에서는 쇼핑몰 주문 정보를 JSON과 유사한 형태로 저장할 수 있다
{
"orderId": 101,
"customer": {
"id": 1,
"name": "홍길동"
},
"items": [
{
"product": "키보드",
"quantity": 1
}
],
"amount": 30000
}
RDBMS에서는 고객, 주문, 상품을 서로 다른 테이블에 나눌 수 있지만, 문서형 NoSQL에서는 관련 데이터를 하나의 문서에 함께 저장할 수 있다
NoSQL의 주요 유형
1. 문서형 데이터베이스
JSON과 비슷한 문서 형태로 데이터를 저장한다
- 대표 제품 : MongoDB
- 활용 사례 : 콘텐츠, 상품 정보, 사용자 프로필
2. 키-값 데이터베이스
고유한 키를 이용해 값을 저장하고 조회한다
- 대표 제품 : Redis, DynamoDB
- 활용 사례 : 캐시, 로그인 세션, 실시간 순위
3. 와이드 컬럼 데이터베이스
대규모 데이터를 여러 서버에 분산하여 처리하는 데 적합하다
- 대표 제품 : Cassandra, HBase
- 활용 사례 : 로그 IoT 데이터, 대규모 이벤트 데이터
4. 그래프 데이터베이스
데이터 자체뿐 아니라 데이터 사이의 관계를 중심으로 저장한다
- 대표 제품 : Neo4j
- 활용 사례 : 소셜 네트워크, 추천 시스템, 이상 거래 탐지
NoSQL의 장점
- 스키마가 비교적 유연합니다.
- 비정형·반정형 데이터를 저장하기 좋다
- 데이터 구조가 자주 바뀌는 서비스에 대응하기 쉽다
- 여러 서버를 활용한 수평 확장에 유리한 제품이 많다.
- 특정 데이터 접근 방식에서 높은 성능을 낼 수 있다.
NoSQL의 단점
- 데이터가 중복 저장될 수 있습니다.
- 복잡한 관계와 결합을 처리하기 어려울 수 있습니다.
- 데이터베이스별 사용법과 질의 방식이 다릅니다.
- 트랜잭션과 일관성 지원 수준이 제품마다 다릅니다.
- 잘못 설계하면 데이터 관리가 오히려 복잡해질 수 있습니다.
NoSQL이 적합한 경우
- 대규모 로그 및 이벤트 저장
- 캐시 및 세션 관리
- 실시간 데이터 처리
- 콘텐츠 관리
- 소셜 네트워크
- 추천 시스템
- 구조가 자주 변경되는 데이터
그럼 어떤 데이터베이스를 선택해야 할까??
다음과 같은 경우에는 RDBMS가 좋은 선택이 될 수 있다
- 데이터 사이의 관계가 중요하다
- 데이터의 정확성과 일관성이 중요하다
- 복잡한 검색과 집계가 필요하다
- 여러 작업을 하나의 트랜잭션으로 처리해야 한다
- 데이터 구조가 비교적 명확하다
반대로 다음과 같은 경우에는 NoSQL을 검토할 수 있다
- 데이터 구조가 자주 변경된다
- JSON 형태의 데이터를 자연스럽게 저장하고 싶다
- 대규모 데이터를 여러 서버에 분산해야 한다
- 복잡한 관계보다 빠른 읽기와 쓰기가 중요하다
- 캐시, 그래프, 로그처럼 특수한 데이터 모델이 필요하다
마무리
RDBMS와 NoSQL의 차이는 '어느 것이 더 좋은가' 보다는 현재 데이터와 서비스에 어느 방식이 더 적합한가에 있다
RDBMS는 데이터의 관계, 일관성, 복잡한 질의가 중요한 시스템에 강하다.
NoSQL은 유연한 구조, 대규모 분산 처리, 특정 접근 패턴에 최적화된 저장 방식이 필요할 때 강점을 가진다
처음부터 대규모 서비스를 가정해 불필요하게 복잡한 구조를 선택하기보다는, 데이터 구조와 조회 패턴을 먼저 파악하는 것이 중요하다
일반적인 서비스라면 RDBMS로 시작한 뒤 실제 요구사항에 따라 Redis나 MongoDB 같은 NoSQL을 추가하는 것도 현실적인 접근 방법이