본문 바로가기
Database/데이터베이스

[데이터베이스] RDBMS vs NoSQL

by happy coding! 2022. 10. 9.
반응형

 

이번 포스팅에서는 RDBMS 와 NoSQL의 차이점에 대해 알아보겠습니다. 차이점을 알아보기에 앞서 기본적인 개념부터 정리해보겠습니다.

 

Database와 DBMS 그리고 SQL

 

- Database: 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터 집합

 

- DBMS: DataBase Management System의 약자로서 사용자와 데이터베이스 사이에서 사용자의 요청을 해석하여 데이터베이스에 저장된 정보를 관리할 수 있도록 해주는 소프트웨어

 

- SQL: Structured Query Language의 약자로서 관계형 데이테베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안됨

 

- 스키마: 데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relationship) 및 제약조건 등에 관해 전반적으로 정의한 메타데이터 집합

 

 

RDBMS (Relational Database Management System)

RDBMS는 관계형 데이터베이스 관리 시스템을 의미합니다.

 

RDBMS는 RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 입니다.

 

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


그리고 관계형 데이터베이스에서는 이러한 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용합니다.


이러한 테이블 간 관계에서 외래 키를 이용한 테이블 간 조인(Join)이 가능하다는 점이 RDBMS의 가장 큰 특징 입니다.

 

NoSQL

NoSQL 이란 Not Only SQL의 약자로 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미 합니다. 또한 NoSQL에서는 RDBMS와 달리 테이블 간 관계를 정의하지 않습니다. 테이블 간의 관계를 정의하지 않아 일반적으로 테이블 간 조인(Join)도 불가능 합니다.

 

NoSQL은 빅데이터의 등장으로 인해 점점 데이터와 트래픽이 기하급수적으로 증가함에 따라 등장하였습니다. RDBMS의 경우 성능을 향상시키기 위해 Scale-Up을 했을 경우 비용을 기하급수적으로 증가시키기 때문에 NoSQL은 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 하였습니다.

 

NoSQL은 다양한 방식으로 데이터를 표현합니다.

 

NoSQL

 

  1. 도큐먼트 모델: 레코드 하나를 오브젝트(도큐먼트) 형식으로 표현합니다. 자유로운 스키마 구조를 가지며 구조가 확정되지 않은 데이터를 밀어넣고 자유롭게 작업하기 좋습니다. 몽고DB나 아랑고DB가 대표적인 예시 입니다.
  2. 그래프 모델: 데이터를 버텍스와 엣지로 그래프에 표현하는 방식 입니다. 데이터 사이의 유기적인 관계를 표현하기에 적합합니다. 대표적인 예로 Neo4j와 ArangoDB, Gremlin 등이 있습니다.
  3. 키/값 모델: 하나의 키에 값을 맵핑하는 해시 구조의 데이터 모델입니다. 빠르게 데이터에 접근할 수 있다는 장점이 있습니다. 대표적으로 redis가 있습니다.
  4. 와이드 컬럼 모델: 테이블 형태를 취하지만 행마다 갖는 컬럼의 형태가 고정되어 있지 않은 데이터 모델입니다.

 

RDB vs. NoSQL

그럼 이제 둘을 비교해보겠습니다.

  1. RDB는 관계형으로 데이터를 저장하지만 NoSQL은 그렇지 않습니다.
  2. RDB는 스키마가 정적이지만 NoSQL은 유연한 스키마 구조를 갖습니다.
  3. RDB는 수직 확장이 용이하고 NoSQL은 수평 확장이 용이합니다.
  4. RDB는 복잡한 쿼리와 Join 연산이 가능합니다. NoSQL은 구조화된 쿼리 언어가 없는 경우도 많고 일반적으로 join이 없습니다.
  5. RDB는 트랜잭션 처리에 용이하고 NoSQL은 분석 처리에 용이합니다.

 

언제 어떤 데이터베이스를 사용할까?

RDBMS는 데이터 구조가 명확하여 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋습니다. 또한 중복된 데이터가 없어 (데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합합니다.

 

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋습니다. 또한 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 합니다.
이러한 특징들을 기반으로 update가 많이 이루어지지 않는 시스템이 좋으며 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야해서 Scale-out해야 하는 시스템에 적합합니다.

 

 

Reference

반응형

'Database > 데이터베이스' 카테고리의 다른 글

자주 사용하는 SQL Query 2  (0) 2018.12.01
자주 사용하는 SQL Query 1  (0) 2018.11.09
SQL  (0) 2018.10.24
[Oracle] select, insert, delete, update(DML) 기본 쿼리  (0) 2018.01.29

댓글