SQL
RDBMS
- 관계형 데이터베이스 (SQL)
- 관계를 나타내기 위해 외래 키 (foreign Key) 사용
- fk를 이용하여 table 간 Join이 가능하다.
- Scale-in (데이터를 분산하여 저장 X → 비용 문제에서 많이 든다. )
NoSQL
-
관계형 데이터베이스 x
- Scale-out ( 데이터를 분산하여 저장 )
-
대표적인 예
-
Key-Value Database
- 데이터가 Key와 Value의 쌍으로 저장
- ex) NoSQL Key-Value 모델로는 Redis, Riak, Amazon Dynamo DB 등
-
Document Database
-
Wide Column Database
-
Graph Database
- Node와 Edge, Property와 함께 그래프 구조를 사용
- ex)
RDBMS와 NoSQL의 장단점
RDBMS
장점
- 또한 관계는 각 데이터를 중복없이 한 번만 저장 가능
- 스키마에 따라 데이터를 저장해야 하므로 명확한 데이터 구조 보장
단점
- 테이블간테이블 간 관계를 맺고 있어 시스템이 커질 경우 복잡한 쿼리 생성
- 성능 향상을 위해서는 Scale-up만을 지원
- 스키마로 인해 데이터가 유연하지 못함
NoSQL
장점
- NoSQL에서는 스키마가 없기 때문에 유연하며 자유로운 데이터 구조 가짐
- 데이터 분산이 유용하며 Scale-up 뿐만 아니라 Scale-out또한 가능
단점
- 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수정
- 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않는다.
RDBMS, NoSQL 언제 사용?
- RDBMS
- 데이터 구조가 명확하며 변경될 여지가 없는 곳
- 관계를 맺고 있는 데이터가 자주 변경될 여지가 있는 곳
- EX) 넷플릭스
- NoSQL
- 정확한 데이터 구조 알 수 없고 데이터 변경, 확장이 용이한 데 사용
- 막대한 데이터를 저장해야 하는 곳
- EX) 인스타그램