RDBMS vs NoSQL

newhyork·2022년 4월 21일
0

(이 문서의 RDBMS와 NoSQL은 각각 MySQL, MongoDB을 중심으로 작성되었습니다.)

RDBMS


Relational Database Management System

  • 종류는 MySQL, OracleDB, PostgreSQL, MariaDB, SQLite 등이 있다.
    (MySQL 기준으로 살펴보자)
  • 관계 데이터 모델을 기반으로 한다.
    • row(tuple) 및 column(attribute)으로 구성된 table(relation) 형태이며,
      각 테이블 내 튜플은 속성에 따라 정해진 type의 value를 갖는다.
    • 각 테이블은 서로 간에 관계를 가질 수 있으며, 외래키를 사용해 Join 연산 등을 하곤 한다.
  • SQL을 사용한다.
  • 정의해둔 스키마에 따라 데이터가 저장되어 무결성을 지킨다는 점에서 안정적이다.
    • 테이블 내에 중복되는 튜플이 존재할 수 없다.
    • 데이터의 값을 변경 할 때에도 안정적으로 변경이 가능하다.
  • 스키마를 변경하게 될 시에는 관계되는 번거로운 작업이 발생할 수 있으며,
    이로 인해 데이터를 유연하게 저장할 순 없는 구조이다.

NoSQL


Not Only SQL

  • 종류는 MongoDB, Redis 등이 있다.
    (MongoDB 기준으로 살펴보자)
  • Big data의 등장으로 인해 감당해야 할 데이터와 트래픽이 증가했고
    기존의 관계 데이터 모델의 속도가 느린 이슈를
    현실적으로 Scale-Up만으로 극복하는 데에는 한계가 있기 때문에
    Scale-Out을 용이하게 하기 위한 대체제로써 주로 사용한다.
    • 분산 컴퓨팅으로써 복제와 샤딩 기법을 사용한다.
    • RDBMS 사용을 통한 안정성을 누리는 것 보단,
      확장성과 최적화를 통한 성능 개선을 꾀하고자 할 때 쓰인다.
  • document 모델을 기반으로 한다.
    • 각 데이터는 document로써 테이블이 아닌 컬렉션에 저장되고,
      id값이 key로써 식별 되며 BSON 형식이다.
      • document는 {속성: 값}의 형태로, 제각기 자유로운 형식으로 데이터를 저장할 수 있다.
        - 속성(field)은 반드시 문자열이며, 값(value)으로는 각종 type이 쓰일 수 있다.
        - 점 표기법을 이용해서 계층적으로 document 내부 데이터에 접근할 수 있다.
      • JSON 형식과 유사한 BSON 형식으로 데이터를 저장하기 때문에,
        JS문법을 사용하는 등 JS와의 호환성이 좋다.
    • 이 밖에, key-value 모델 (Redis 등) 등도 있다.
  • 비 정형화된 데이터의 저장을 필요로 하는 곳에 주로 쓰인다.
  • 정해진 스키마 없이 데이터를 저장하므로 데이터 자체의 저장과 변경은 유연하다.
    • UPDATE연산은 RDBMS에 비해 비교적 느리다.
    • 사용하기에 따라 중복되는 데이터가 발생할 수 있는 문제가 있다.
  • 복잡한 쿼리를 빈번하게 필요로 할 때는 RDBMS에 비해 비교적 성능이 떨어질 수 있다.

0개의 댓글