[Database] RDBMS vs NoSQL

Hanjmo·2023년 1월 27일
0

1. 들어가기에 앞서...

Database

흔히 DB라고 불리며, 여러 사용자들과 정보를 공유하기 위해 통합하여 관리하는 데이터의 집합이다.

DBMS(DataBase Management System)

사용자와 데이터베이스 사이에서 사용자가 요구하는 목적에 따라 정보를 생성 및 관리해주는 소프트웨어이다.

SQL(Structured Query Language)

관계형 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어이다.

Schema

'데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합'이라고 하는데, 이 정의가 어렵다면 일단 다음과 같이 이해하자.
수많은 데이터 테이블 중에서 서로 연관된 데이터 테이블을 grouping하는 목적으로 사용하는 일종의 directory.

2. RDBMS

DBMS 앞에 R(Relational)이 붙은 것으로 관계형 데이터베이스 관리 시스템이라고 한다.
RDB(관계형 데이터베이스)를 관리하기 위한 시스템이며 RDB의 의미는 다음과 같다.

RDB: 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 형태로 표현하는 DB

RDBMS는 아래와 같은 테이블이 다른 테이블과 관계를 맺고 모여 있는 집합체로 볼 수 있으며, 이러한 관계에서 외래 키(foreign key)를 이용해 테이블 간 join을 할 수 있다.

학년(Primary Key)학번학생 이름
42018****김진수
42018****조성훈
32019****최수진

학과(Primary Key)학번(foreign key)학적 상태
전자공학과2018****재학
컴퓨터공학과2018****휴학
경제학과2019****재학

3. NoSQL

Not Only SQL의 약자로 RDB형태가 아닌 다른 다른 형태의 데이터를 저장하는 기술이다.
RDBMS와 달리 테이블 간의 관계를 정의하지 않아서 테이블 간 join도 불가능하다.
이러한 관계를 정의하지 않는다는 특성때문에 RDBMS에서 관리할 수 없을 정도의 복잡하고 용량이 큰 데이터를 관리할 수 있다.

4. RDBMS vs NoSQL

RDBMS

장점

  • 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 구조를 가지고 있다.
  • 관계는 데이터를 중복 없이 저장하기 때문에 데이터의 중복이 발생하지 않는다.

단점

  • 테이블 간 관계를 맺고 있기 때문에 시스템이 커져 테이블이 많아질 경우 join문이 많은 복잡한 쿼리가 만들어질 수 있다.
  • 스키마로 인해 데이터가 유연하지 않기 때문에 스키마가 변경되면 번거롭고 어려워진다.
  • 성능 향상을 위해서는 서버의 성능을 향상시키는 'Scale-up'만을 지원하기 때문에 비용이 많이 든다.

NoSQL

장점

  • 데이터 분산이 용이하며, 성능 향상을 위해서 'Scale-up'뿐만 아니라 'Scale-out'도 가능하다.
  • 스키마가 없기 때문에 유연하고 자유로운 데이터 구조를 가질 수 있으며, 언제든 데이터를 수정할 수 있다.

단점

  • 스키마가 없기 때문에 명확한 데이터 구조를 보장하지 않는다.
  • 데이터 중복이 발생할 수 있다.

어떤 상황에서 무엇을 사용해야 할까?

RDBMS

  • 데이터 구조가 명확하며, 스키마가 중요한 경우
  • 변경될 여지가 없는 경우
  • 관계를 맺고 있는 데이터의 변경이 자주 이루어지는 경우
    (중복되는 데이터가 없어 변경에 용이하기 때문)

NoSQL

  • 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장될 수 있는 경우
  • Update가 많이 이루어지지 않는 경우
  • Database를 'Scale-out'을 해야 하는 경우

0개의 댓글