NoSQL에 대하여 - MongoDB, Redis

최민수·2023년 3월 3일
0

CS 전공지식

목록 보기
14/36

movie

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를 어느 정도 타협.
  • schema가 고정되지 않은 데이터를 다룸.
  • 중복 허용. (Join 회피)
    따라서, Application 레벨에서 스키마 관리, 중복 데이터 최신화 관리 등이 필요함.(개발자에게 부담이 조금 더)
  • 서버 여러대를 증축해서 클러스터를 구성해 데이터를 분산해 대응하는 scale-out 전략에 최적화.

MongoDB

  • 대표적인 NoSQL 데이터베이스.
  • JSON 형태로 데이터를 저장, 관리.

Redis

  • 데이터를 key-value 형태로 저장하는 in-memory 데이터베이스.
  • in-memory 이기 때문에 cache(캐시)로 많이 사용한다.
    일반적인 DB가 SSD, HDD인 점을 생각하면 매우 빠른 속도로 접근할 수 있다.
profile
CS, 개발 공부기록 🌱

0개의 댓글