본문 바로가기

백엔드 스터디/데이터베이스

NoSQL 개념

RDB의 단점
- 유연한 확장성의 부족
- 복잡한 join은 read 성능의 하락
- RDB는 기본적으로 한 대의 컴퓨터에 저장 -> read/write 요청이 많아 지면 CPU/메모리 사용이 늘어남 -> db서버 부하

-> scale-up(컴퓨터를 성능 좋은 컴퓨터로 바꿔주는 것)을 통한 database 성능 향상

- multi-master, sharding같은 방법도 있지만 일반적으로 RDB는 scale-out(데이터 서버를 추가로 투입해 해결하는 방법)에 유연한 DB는 아님

- ACID를 보장하려다 보니 DB서버의 퍼포먼스에 어느 정도 안좋은 영향을 미침

 

 

NoSQL 특징

- 유연한 스키마 (ex : mongoDB) application 레벨에서 스키마 관리를 해줘야 함 

데이터베이스를 짤때 제약조건을 다 설정해둘 필요가 없다 → 필드를 짤때 스키마를 다 짤 필요가없다

 

- 중복 허용 (join 회피) → application 레벨에서 중복된 데이터들이 모두 최신 데이터를 유지할 수 있도록 관리해야 함

- scale-out 최적화 → 서버 여러대로 하나의 클러스터를 구성하여 사용

- ACID 일부를 포기하고 높은 처리량, 빠른 응답성 추구

* 금융,결제, 예약 시스템처럼 데이터의 일관성이 중요한 환경에서는 사용하기가 조심스러움

 

 

출처 - 쉬운코드 NoSQL