RDB와 NoSQL의 차이
2024. 2. 23. 17:10ㆍCS/DB
RDB와 NoSQL의 차이
RDB 특징
- 기존의 테이블에 컬럼을 변경하고자 할 경우, 스키마를 변경해야줘야한다.
- 이미 기존에 대용량의 데이터가 저장된 경우에 스키마를 변경한다면, 상당히 위험 부담이 크다. → 유연한 확장성이 부족하다.
- 중복 제거를 위해 정규화를 진행함으로써, 데이터 중복을 최소화할 수 있지만, join을 함으로써 응답시간이 길어진다. → 복잡한 join은 Read성능을 하락시킨다.
- RDB는 기본적으로 한대의 컴퓨터에 저장한다.
- Read/Write요청이 매우 많아진다면, 기존 RDB를 저장한 서버는 부하가 많이 발생한다.
- 위 경우, scale up을 통해 DB 성능을 향상시킨다. (컴퓨터 자체를 성능 좋은 컴퓨터로 바꾼다는 의미임.)
- 혹은, 컴퓨터를 여러대 둔다.(scale-out) 그러나, RDB가 scale-out에 유연한 DB는 아니다.
- Read/Write요청이 매우 많아진다면, 기존 RDB를 저장한 서버는 부하가 많이 발생한다.
- 트랜잭션 ACID를 보장한다.
- 그러나 ACID를 보장하려다보니, DB 서버의 성능에 영향을 미친다.
NoSQL 특징
- mongoDB, Redis 등 종류가 다양하다.
- Redis
- in-memory, key-value형태로 저장, cache혹은 db로 사용한다.
- Redis
- flexible Schema
- mongoDB의 경우,
- db.createCollection(”student”) // student테이블 생성
- db.student.insertOne({ name : “easycode” }) // student테이블의 name컬럼에 easycode데이터 추가
- 이처럼, flexible Schema 특징을 가진다.
- 단, application레벨 (개발자)에서 스키마관리가 필요하다.
- mongoDB의 경우,
- 중복을 허용 (join회피)
- 단, application레벨에서 중복된 데이터들이 모두 최신 데이터를 유지할 수 있도록 관리해야한다.
- scale-out에 최적화되어있다.
- 서버 여러대로 하나의 클러스터를 구성하여 사용한다.
- ACID의 일부를 포기하고 high-throughput(높은 처리량), low-latency(빠른 응답성)를 추구한다.
- 금융/결제/예약 시스템처럼, consistency가 중요한 환경에서는 NoSQL을 사용하기가 조심스럽다.
- 참조블로그
'CS > DB' 카테고리의 다른 글
DBMS, 스키마, 3단계 데이터베이스 구조 (0) | 2024.03.04 |
---|---|
파일시스템과 데이터베이스의 차이점 (0) | 2024.03.04 |
clustered Index vs non-clustered Index (MYSQL기준) (0) | 2024.02.21 |
인덱스로 BTree계열이 자주 사용되는 이유 (1) | 2024.02.02 |
DB Index(MySQL기반) (0) | 2024.01.19 |