# RDB vs NoSQL

# RDB

  • 보통 Spring에서 주로 사용한다.
  • 관계형 데이터베이스는 정해진 스키마에 데이터를 삽입한다.
  • 테이블에 정해진 형식의 데이터가 들어가게 된다.
  • Join을 활용해 관계를 맺는 기능을 사용함으로써 중복을 없앤다.

# RDB 장점

  • 데이터의 중복이 없음
  • 데이터의 무결성이 보장됨

# RDB 단점

  • 복잡한 쿼리가 필요할 수 있음
  • 스키마를 변경하기에 굉장히 안좋음

# RDB는 언제 쓸까?

  • 데이터를 자주 수정해주어야 할때
  • 스키마가 명확히 정해져 있을 때

# NoSQL

  • Node.JS 개발할 때 주로 사용한다.
  • RDB와 반대로 스키마가 없다.
  • 하나의 컬렉션(문서)에 모든 데이터를 json형식으로 넣어준다.

# NoSQL 장점

  • 데이터를 읽어오는 속도가 빠르다.
  • 스키마가 없으므로 유연하게 데이터를 받을 수 있다.
  • 대용량의 데이터에 사용하기 용이하다.(문서에 모두 넣어서 관리하기 때문에 서버를 늘려서 DB확장 가능 - 수평적 확장)

# NoSQL 단점

  • 데이터가 중복이 있을 수 있다.
  • 중복된 데이터를 모두 처리해주어야하기 때문에 변경의 성능이 안좋다.

# NoSQL은 언제쓸까?

  • 대용량의 데이터를 처리해야할 때
  • DB의 스키마가 불 명확할 때
  • 데이터의 수정이 적고 읽는 것이 많을때