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 |