NoSQL 이란?
고정된 schema로 데이터를 저장하는 RDB와 다르게, 정해진 틀이나 schema 없이
데이터를 저장할 수 있는 데이터베이스.
이름에서도 알 수 있듯이 Not-only SQL
, 즉 기존의 RDB의 문제를 보완, 극복하기 위해 나온 데이터베이스 유형이다.
RDB vs NoSQL
RDB는 고정된 schema로 인해 유연한 확장성
이 부족한 반면, NoSQL은 데이터를 저장하고 보관하는 방식에 제약이 없기 때문에 매우 유연하다.
중복 제거를 매우 중요하게 생각하는(Ex.정규화 과정) RDB는 복잡한 join 때문에 서버에 트래픽이 몰리면 성능이 하락할 수 있고 자신의 서버 그 자체를 증축하는 scale-up 에는 용이하지만 여러 대의 서버를 증축하는 scale-out에는 유연한 DB는 아니다.
그러나 NoSQL은 중복 데이터를 허용
하기 때문에 트래픽이 몰리면 여러 대의 서버를 늘려 문제를 해결하는 scale-out 에 용이하다.
RDB의 장점인 트랜잭션에서 ACID
를 보장해주는 특징은 데이터 일관성
이 중요한 환경(금융, 예약) 에서 강점을 보인다. 그러나 이런 ACID를 보장하려다 보니 성능에 안좋은 영향이 가는 경향이 있다.
NoSQL의 특징과 대표적인 DB
High-throughput
, low-latency
대신, 데이터 consistency
를 어느 정도 타협.개발자에게 부담이 조금 더
)scale-out
전략에 최적화.JSON 형태
로 데이터를 저장, 관리.in-memory
데이터베이스.in-memory
이기 때문에 cache(캐시)로 많이 사용한다.