본문 바로가기

Develop/COMPUTER SCIENCE

RDMBS와 NoSQL 차이점 정리

1. DBMS란?

다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다.

DBMS는 사용자 또는 다른 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해준다.

 

이때 주의해야할 점은 DB와 DBMS는 다르다는 점이다.

데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.

반면 DBMS는 이러한 데이터베이스를 관리하기 위한 소프트웨어이다.

 

DBMS의 기능은 아래와 같다.

 

  • 정의 : 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능이다. 이때 DB의 정의, 설명은 카탈로그나 사전의 형태로 저장된다.
  • 구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능이다.
  • 조작 : 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함한다.
  • 공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능이다.
  • 보호 : 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호한다.
  • 유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능이다.

만약 DBMS를 사용하지 않는다면 우리는 무수한 데이터를 파일로써 관리해야 한다.

하지만 DBMS가 이러한 기능을 제공하기 때문에 손쉽게 데이터에 접근, 관리하며 애플리케이션 서비스를 개발할 수가 있다.

 

대표적인 DBMS에는 Oracle, MySQL, MSSQL, MariaDB, Redis, MongoDB 등이 있다.

2. RDBMS

RDBMS는 관계형 데이터베이스 관리 시스템이다.

여기서 중요한 키워드는 관계형이다.

 

관계형 데이터베이스는 테이블로 이루어져 있으며, 테이블은 키(key)와 값(value)의 관계를 나타낸다.

테이블은 이름을 가지며 행(row), 열(column), 대응하는 값으로 이루어진다.

한마디로 관계형 데이터베이스는 이러한 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수가 있다.

 

또한 데이터는 엄격한 스키마에 따라 테이블에 저장된다.

만약 스키마가 정의되지 않았다면 데이터를 저장할 수가 없다는 의미이다.

Schema 개념 참고: https://jwprogramming.tistory.com/47

그렇기 때문에 RDB는 아래와 같은 장점을 가진다.

 

  • 데이터의 분류, 정렬, 탐색 속도가 빠르다.
  • 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 준다.

따라서 RDB는 한번 정해진 스키마가 변경될 여지 없고, 명확한 스키마가 중요한 경우에 자주 사용된다.

또한 데이터 UPDATE 속도가 빠르기 때문에, 데이터가 자주 수정되는 서비스인 경우에도 사용된다.

 

하지만 RDB도 아래와 같은 단점이 존재한다.

 

  • 기존에 작성된 스키마를 수정하기가 어렵다.
  • 데이터 처리에 대한 부하 발생 시 대처가 어렵다.
  • 관계로 인한 시스템 복잡도를 고려하여 설계해야 한다.

3. NoSQL

(Not Only SQL)

단순히 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미한다.

 

처음 빅데이터 기술이 등장함에 따라 서버가 처리해야 하는 데이터의 양이 기하급수적으로 늘어났다.

하지만 기존의 RDBMS로는 이러한 대량의 데이터를 처리하기 힘들다. 따라서 분산처리를 위해 NoSQL이 인기를 얻기 시작했다.

 

NoSQL은 앞서 설명했던 테이블이 존재하지 않고, 스키마를 정의하지 않는다. 또한 관계도 맺지 않는다.

테이블과 같은 개념으로 컬렉션을 사용한다.

 

따라서 정확한 데이터 구조가 아직 정해지지 않았거나, 중간에 변경될 수 있는 경우 사용된다.

 

  • 정확한 데이터 구조 알 수 없거나 변경,확장 가능한 경우
  • 읽기가 많고, 변경이 적을때
  • 막대한 양의 데이터 다룰때 (수평적 확장 용이)

NoSQL의 장점은 아래와 같다.

 

  • 테이블 간의 관계를 고려하지 않아도 된다.
  • 정의된 스키마가 없기 때문에 데이터 속성을 동적으로 정의할 수가 있다.
  • 자주 변경되지 않는 데이터를 저장하기 유리하다

NoSQL의 단점은 아래와 같다.

  • 키(key) 값에 대한 입출력만 지원한다.
  • 데이터 규격화가 이뤄지지 않는다.
  • 데이터를 UPDATE하는 속도가 느리다.
참고)
https://www.samsungsds.com/kr/insights/1232564_4627.html
https://www.oracle.com/kr/database/what-is-a-relational-database/
https://www.geeksforgeeks.org/difference-between-sql-and-nosql/
https://docs.microsoft.com/ko-kr/dotnet/architecture/cloud-native/relational-vs-nosql-data