RDBMS
- Relational Database Management System
- 대표적인 예가 오라클, MySql, MsSql
- 정해져 있는 데이터 스키마에 따라 데이터베이스를 테이블에 저장함. 각 테이블은 ERD방식을 통해 관계를 형성한다.
- 변경될 데이터가 별로 없고, 명확한 스키마가 중요한 경우 사용
특징
엄격한 스키마
- 스키마를 준수하지 않는 레코드는 테이블에 저장할 수 가 없다. 즉, 모두 같은 구조를 갖는다.
- 데이터의 무결성(Integrity)보장한다.
관계형
- 데이터들을 여러개의 테이블로 나누어서, 데이터들의 중복을 피할 수 있다.
단점
- 테이블끼리 관계를 맺고 있기 때문에 JOIN문이 많은 매우 복잡한 쿼리가 만들어진다.
- 수평적 확장이 어렵고, 수직적 확장만 가능하다.
- 유연성이 떨어져서 데이터를 넣는게 자유롭지 못하다.
NoSQL
- 대표적인 예가 Hadoop, MongoDB
- RDBMS와 달리 스키마가 없다. 즉, 관계가 없다.
- 대규모의 데이터를 유연하게 처리할 수 있으며, 분산처리 목적으로 탄생.
- 레코드를 문서(documents)라 한다. 문서는 JSON데이터와 비슷한 형태를 가지고 있다.
- 정확한 데이터 구조를 알 수 없거나 변경/확잘 될 수 있는 경우 사용
- 읽기(read)처리를 자주하지만, 데이터를 자주 변경(update)하지 않는 경우
특징
No스키마
- 스키마가 없기 때문에, 다른 구조의 데이터를 같은 컬렉션(table)를 추가할 수 있다. (유연성)
- 관련 데이터(documents)들을 동일한 컬렉션에 넣는다.
단점
- 데이터가 여러 컬렉션에 중복되어 있기 때문에, 하나의 document가 수정해야 하는 경우 모든 컬렉션에서 수행해야 한다.
수직적(Vertical) VS 수평적(Horizontal) 확장
출처: https://siyoon210.tistory.com/130