티스토리 뷰
- 데이터베이스 : 컴퓨터에 전자 방식으로 구조화된 정보를 저장
- DBMS : 사용자와 데이터베이스 사이에 사용자의 요구에 따라 정보를 생성 및 관리하는 소프트웨어
- SQL : 관계형 데이터베이스에서 데이터를 관리하기 위한 프로그래밍 언어
1. RDBMS
R(Relational, 관계) + DBMS = RDBMS
RDBMS는 SQL을 사용하여 데이터를 저장한다. 데이터는 테이블 형태로 저장되며, 다른 테이블과의 관계를 통해 데이터를 관리한다. 이를 통해 데이터 정합성을 유지할 수 있다. 서로 다른 테이블 간의 관계를 맺기 위해 외래키(foreign key)를 사용하며, 이 외래키를 통해 테이블 간 조인이 가능하다.
RDBMS 특징
- 테이블 형태로 데이터를 저장한다.
- SQL(Structured Query Language) 언어를 사용하여 데이터를 처리한다.
- 저장, 질의, 수정, 삭제가 가능하다.
- 트랜잭션을 제공한다.
- ACID 속성을 통해 데이터의 일관성을 보장합니다.
- 스키마 규격에 맞게 데이터를 저장해야 한다.
- 유연한 데이터 저장이 어렵다.
- 수직적 확장(Scale-Up)이 가능하다.
RDBMS 장단점
- 장점
- 스키마 규격에 맞게 데이터를 저장하므로 데이터 구조가 명확하다.
- 데이터를 중복 없이 저장할 수 있다.
- 단점
- 스키마 규격에 맞게 데이터를 저장해야 하므로, 데이터를 유연하게 저장하기 어렵다. 이로 인해 스키마 변경이 어렵다.
- 성능 향상을 위해 수직 확장이 필요하다. 그러나 이는 비용을 기하급수적으로 증가시킨다.
- 테이블 간의 관계를 맺기 때문에, 데이터가 많아질수록 JOIN으로 인해 데이터 용량이 커진다.
2. NoSQL
관계형 데이터베이스 형태로 데이터를 저장하지 않기 때문에 테이블 간에 관계를 맺지 않는다. 테이블은 독립적으로 존재하며, 테이블 간의 조인이 불가능하다.
빅데이터의 등장으로 인해 데이터와 트래픽 증가하면서 RDBMS의 성능을 올리기 위해서는 Scale-Up(수직적 확장)을 해야 하는데, 이는 비용이 기하급수적으로 증가시키는 문제가 있다. 따라서 데이터의 일관성을 포기하고 여러 대의 서버에 분산하여 저장하는 Scale-Out을 목표로 한다.
4가지 데이터베이스
- Key-Value 데이터베이스
키와 값(값은 JSON 형태로 저장) 쌍으로 데이터를 저장한다. 각 데이터 항목이 고유한 키 값을 갖기 때문에, 이 키를 통하여 값을 빠르게 검색할 수 있다.
- Document 데이터베이스
키와 도큐먼트 쌍으로 데이터를 저장한다. key-value와 다른 점은 value가 계층 형태인 document로 저장되는 것이다.
- Wide Column 데이터베이스
행마다 키와 값을 저장할 때, 서로 다른 스키마를 저장할 수 있다. 사진을 보면 사용자 이름(Key)에 해당하는 값인 스키마들이 서로 다른 것을 알 수 있다.
- Graph 데이터베이스
NoSQL의 특징
- 고정된 스키마를 사용하지 않기 때문에 유연성이 높다.
- 스키마가 고정되지 않기 때문에 데이터 구조가 자주 변경되는 애플리케이션에 적합하다.
- Scale-Out을 사용하기 때문에 서버 확장이 용이하다.
- 데이터를 여러 대의 분산하여 저장 및 처리가 가능하므로, 데이터와 트래픽이 증가해도 유연하게 대응할 수 있다.
- 데이터 간의 관계를 정의하지 않는다. → 테이블 간의 조인 불가능
NoSQL 장단점
- 장점
- 스키마가 없기 때문에 데이터의 유연성이 높다. (자유로운 데이터 구조를 갖는다)
- 데이터를 분산하여 저장하기 용이하다.
- 단점
- 데이터의 중복이 발생할 수 있다.
- 스키마가 존재하지 않기 때문에 규격화된 데이터 구조를 보장하지 않는다.
- 데이터의 일관성보다는 가용성과 분산성을 우선시한다. 이는 데이터의 일관성이 중요한 애플리케이션에서 문제가 된다.
결론
RDBMS와 NoSQL은 상호 대체재라기보다는 각기 다른 용도와 상황에 맞게 선택하여 사용해야 한다. RDBMS는 데이터 정합성과 관계가 중요한 경우에 유리하며, NoSQL은 대규모 데이터와 유연성이 필요한 경우에 적합하다.