Rootable의 개발일기
RDBMS와 NoSQL의 차이 본문
📌 RDBMS
스키마에 맞춰 데이터를 관리하기 때문에 데이터의 정합성을 보장한다. 하지만, 시스템이 커질수록 쿼리가 복잡해지고 성능이 저하되며 Scale-out이 어렵다.
(Scale-up만 가능)
Scale-Up과 Scale-Out
인프라 확장 문제를 해결하기 위한 방법
Scale-Up은 기존 서버의 사양을 업그레이드해 시스템을 확장하는 것을 말한다. CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법이
있다. 이처럼 하나의 서버 사양을 업그레이드하기 때문에 수직 스케일로 불리기도 한다.
Scale-Out은 서버를 여러 대 추가하여 시스템을 확장하는 것을 말한다. 서버가 여러 대로 나뉘기 때문에 각 서버에 걸리는 부하를 균등하게 해주는
'로드밸런싱'이 필수다. 이처럼 여러 대의 서버로 나눠 시스템을 확장하기 때문에 수평 스케일로 불리기도 한다.
📌 NoSQL(Not Only SQL)
RDBMS와 반대로 데이터 간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있으며, 컬렉션이라는 형태로 데이터를 관리한다.
🔎 장점
- 스키마 없이 Key-Value 형태로 데이터를 관리하므로 자유롭게 데이터를 관리할 수 있다.
- 데이터 분산이 용이하여 성능 향상을 위한 scale-up 뿐만 아니라 scale-out 또한 가능하다.
🔎 단점
- 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 한다.
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않아 데이터 구조 결정이 어려울 수 있다.
📌 비교
RDBMS는 데이터 구조가 명확하고, 변경 될 여지가 없으며 스키마가 중요한 경우 사용하는 것이 좋다. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에
관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.
NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장될 수 있는 경우에 사용하는 것이 좋다. 또한 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 시
모든 컬렉션에서 수정해야 하므로 갱신이 많이 이루어지지 않는 시스템에 좋다. 그리고 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 하므로 DB를 Scale-out 해야 되는 시스템에 적합하다.
References:
https://dev-coco.tistory.com/143
https://dev-coco.tistory.com/158
'데이터베이스' 카테고리의 다른 글
RDBMS vs NoSQL (1) | 2024.03.29 |
---|---|
데이터베이스 관리 대상 (0) | 2023.09.08 |
인덱스(Index) (0) | 2023.09.07 |
트랜잭션 (0) | 2023.08.07 |
데이터 무결성 (0) | 2023.06.15 |