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(캐시)로 많이 사용한다.