RDBMS vs NoSQL

RDBMS

  • 관계형 데이터베이스 관리 시스템
  • 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스

    • 2차원 구조의 테이블 형태를 통해 자료를 표현
  • 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체
  • 관계를 나타내기 위해 외래 키 (foreign key) 라는 것을 사용함
  • 테이블 간의 관계에서 외래 키를 이용한 테이블 간 Join이 가능하다는 것이 가장 큰 특징

장점

  • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장함
  • 각 데이터를 중복없이 한 번만 저장할 수 있음

단점

  • 테이블 간 관계를 맺고 있어 시스템이 커질 경우 Join 문이 많은 복잡한 쿼리가 만들어 질 수 있음
  • 성능 향상을 위해서는 서버의 성능을 향상시켜야하는 Scale-Up 만을 지원함 -> 비용 증가
  • 스키마로 인해 데이터가 유연하지 못함. 스키마가 변경될 경우 번거롭고 어려움

NoSQL

  • 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술
  • 테이블 간 관계를 정의하지 않음
  • 테이블 간 Join도 불가능
  • 데이터 일관성은 포기하되 비용을 고려햐여 여러 곳에 분산하여 저장하는 Scale-Out을 목표로 함

장점

  • 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있음. - 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있음
  • 데이터 분산이 용이하며 성능 향상을 위한 Scale-up 뿐만이 아닌 Scale-out도 가능함

단점

  • 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 함
  • 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어려울 수 있음

Written by@Myunghwan
Nothing changes if nothing changes

GitHub