데이터베이스 기본 개념 정리 (RDBMS vs NoSQL)
데이터베이스와 DBMS란?
데이터베이스란?
체계적으로 저장된 데이터의 집합을 의미한다.
즉, 여러사람이 데이터를 쉽게 접근, 관리, 활용할 수 있도록 만든 저장 공간
- 주요 특징
- 일관성 : 데이터가 논리적으로 일관성을 유지해야 함.
- 무결성 : 데이터가 정확하고 신뢰할 수 있어야 함.
- 보안 : 데이터 접근 권한을 설정할 수 있어야 함.
- 동시성 : 데이터를 여러명이 동시에 접근해도 문제가 없어야 함.
- 영속성 : 데이터가 영구적으로 저장될 수 있어야 함.
DBMS(Database Management System) 란?
데이터베이스를 관리하는 소프트웨어이다.
단순히 파일 시스템이 아니라, 데이터를 효율적으로 저장, 검색, 수정, 삭제 하는 기능을 제공한다.
- 주요 기능
- 데이터 저장 및 관리 : 데이터를 저장하고 쉽게 관리할 수 있는 기능 제공
- 데이터 보안 : 접근 권한 설정 및 암호화
- 동시성 제어 : 여러 사용자가 동시에 데이터 접근할 때 충돌 방지
- 트랙잭션 관리 : 데이터의 일관성과 무결성 유지
대표적인 DBMS로 RDBMS와, NoSQL 이 있다.
RDBMS vs NoSQL
DBMS는 크게 RDBMS(관계형 데이터베이스) 와, NoSQL로 나뉜다.
RDBMS(관계형 데이터베이스) 란?
데이터를 테이블(표) 형태로 저장하는 DBMS 이다.
SQL을 사용하여 데이터를 관리하고, 각 테이블을 정해진 스키마(구조)를 가지며, 데이터 간의 관계를 유지한다.
이러한 관계를 나타내기 위해 RDBMS 는 외래키(foreign key) 라는 것을 사용한다. 외래키를 이용한 테이블 간의 join이 가능하다는 점이 RDBMS의 가장 큰 특징이다.
[회원 Table]
| 회원 번호(Primary key) | 회원 이름 | 이메일 |
| 1111 | 김XX | abc123@naver.com |
| 2222 | 박XX | qwe987@gmail.com |
[주문 Table]
| 주문 번호(Primary key) | 주문 회원 번호(Foreign key) | 상품 |
| 01250331 | 1111 | 노트북 |
| 02250331 | 2222 | 마우스 |
RDBMS 장점
- 데이터 무결성 & 일관성 보장
- SQL을 통한 표준 질의어 제공 -> 복잡한 데이터 쿼리 가능
- 관계형 데이터 저장에 강점 -> 데이터 간 관계를 명확히 확인할 수 있다.
- 데이터 중복 최소화 -> 정규화를 통해 데이터 중복을 줄일 수 있음.
RDBMS 단점
- 확장성이 떨어짐 -> 데이터가 많아질 수록 수직 확장(Scale-Up) 필요
- 쓰기 성능이 상대적으로 낮음 -> 데이터 입력 시 스키마 검증 및 관계 체크로 인해 속도가 느려질 수 있음
- 유연성이 부족 -> 스키마가 고정되어 있어 데이터 구조 변경이 어렵다.
RDBMS 종류
- MySQL
- PostgreSQL
- Oracle DB
- SQL Server
NoSQL 이란?
(Not Only SQL) 말 그대로, 위에서 설명한 RDB(관계형 데이터베이스) 가 아닌 다른 형태의 저장 기술.
RDBMS와 달리, 테이블 간 관계를 정의하지 않으며 스키마가 유연하다는 특징이 있다.
RDBMS의 단점이었던, 데이터가 많아질 수록 수직 확장(Scale-Up)의 비용 문제를 피하기 위해, 데이터 일관성은 포기하되 여러 대의 데이터를 분산하여 저장하는 수평 확장 (Scale-Out) 방식을 택한다.
따라서, 트랜잭션 보다는 속도와 확장성에 집중한 DBMS 라고 볼 수 있다.
- 주요 특징
- 유연한 데이터 모델 -> 스키마가 필요 없음
- 빠른 읽기/쓰기 성능
- 수평 확장 용이 -> 많은 데이터(빅데이터) 처리에 용이함.
NoSQL 장점
- 수평 확장에 용이 -> 서버를 여러대 추가해야 하는 작업(빅데이터 처리)에 용이함
- 고성능 처리 가능 -> 스키마를 신경쓰지 않아도 돼서, 빠른 데이터 저장 및 조회가 가능하다.
- 유연한 스키마 -> 정해진 테이블 구조가 없어, 자유롭게 필드 추가가 가능하다.
- 비정형 데이터 처리 가능 -> (key-value, JSON) 등 다양한 데이터 구조 지원
NoSQL 단점
- 트랜잭션 & 일관성 보장 어려움 -> 대부분의 NoSQL은 ACID를 완벽하게 지원하지 않는다.
- 복잡한 쿼리 처리 어려움 -> Join 을 사용하지 못하여 복잡한 관계형 SQL 처리가 힘듬
- 데이터 중복 가능성 -> 정규화 과정이 없어, 데이터 중복의 가능성 O
NoSQL 종류
- Key-Value Store : Redis, Dynamo DB
- Document Store : Mongo DB
- Column-Family Store
- Graph DB
RDBMS, NoSQL 언제 사용해야 하나?

| 필요한 기능 | RDBMS | NoSQL |
| 트랜잭션 (ACID) 필요 | ✅ | |
| 데이터 모델이 고정됨 | ✅ | |
| 빅데이터 & 빠른 확장성 | ✅ | |
| 복잡한 관계형 데이터 처리 | ✅ | |
| 읽기/쓰기 성능 최적화 | ✅ | |
| 구조가 자주 바뀌는 데이터 | ✅ |
정리하자면,
- RDBMS : 트랜잭션이 중요, 복잡한 데이터 관계
- NoSQL : 확장성이 필요, 빠른 데이터 처리
RDBMS는 일관성과 신뢰성을 보장하기 위해 데이터의 유형에 제약을 두고, NoSQL 은 이러한 제약을 없애, 속도, 유연성 및 확장성을 제공하는 DBMS 이다.
각 DBMS의 특징을 고려하여 상황에 맞는 설계를 하는 것이 중요해보인다. 물론, 두 DBMS를 혼용하는 경우도 있다.
예를 들어, MySQL + Redis 를 사용하여 RDBMS로 핵심 데이터를 저장하고, NoSQL로는 데이터를 캐싱하여 데이터 처리 속도를 높이는 방법도 있으니, 여러 사용 사례를 살펴보며 자신의 상황에 맞는 설계를 고려하는 것이 좋을 것 같다.