STUDY/etc

[데이터베이스] RDBMS vs NoSQL 차이점

sorrow16 2020. 12. 30. 14:11

데이터베이스란, 쉽게 말하면 데이터의 집합을 의미한다. 이 조차도 이해가 안된다면 어떠한 정보들을 모아놓은 것이라고 이해할 수 있다. 그리고 우리의 할 일은 이러한 정보를 보기 편하고, 사용하기 쉽게 잘 정리해 놓는 것이다. 한편, 이렇게 데이터를 관리하는 시스템을 DBMS(Database Management System)이라고 하며 데이터베이스 관리 시스템은 관계형과 비관계형으로 나눌 수 있다.

이름 성별 나이 학년 학과 학점
김철수 23 2 전산 3.0
박영희 21 1 전산 3.0
홍길동 23 3 전산 4.2


대학교에 다니는 학생들 개개인에 정보(데이터)는 위와 같이 보기 쉽게 정리할 수 있다. 또한, 엑셀처럼 위 표에 색칠된 컬럼(column)에 필터가 있다면 필터링을 통해 특정 학과에 속한 학생들을 쉽게 찾아낼 수 있을 것이다.( 혹은 각각의 학생들마다 번호 순서(id)를 붙여 index를 통해 해당 값을 조회할 수 있을 것이다.)


위와 같은 꼴로 정리해놓은 것을 RDBMS(관계형 데이터베이스 관리 시스템)이라고 한다.

1. RDBMS(Relational DataBase Management System)
- 관계형 데이터베이스 관리 시스템
- 대표적으로 오라클, MySQL, Access, MsSql 등이 있다.
- 위의 예시처럼 데이터를 테이블 형태('스키마'라고 부른다)로 관리한다.
- 각 테이블끼리는 ERD 방식을 통해 관계를 형성할 수 있다.
- 장점: 단순하고 이해하기 쉬운 구조를 띈다.
( 각각의 테이블들이 담고 있는 정보는 명확하다 - 예를 들어, 위의 예시는 특정 학교의 학생들의 개인정보라고 이해할 수 있을 것이다.)

 

참고 : terms.naver.com/entry.nhn?docId=3431085&cid=58430&categoryId=58430

 

2세대 데이터베이스 관리 시스템 : 관계 DBMS

1980년대 초반부터 계속 사용되어 온 관계 DBMS가 2세대에 속한다. 관계 DBMS는 데이터베이스를 테이블 형태로 구성하는 관계 데이터 모델을 사용한다. [표 2-3]은 관계 데이터 모델에 따라 구성한 회

terms.naver.com

2. NoSQL(Non-Relational SQL)
- 비관계형 데이터베이스 관리 시스템
- cf) SQL(Structured Query Language) = 데이터베이스에 접근할 수 있는 데이터베이스의 하부 언어
- 대표적으로 아파치 카산드라, 하둡, 몽고DB 등이 있다.
- RDBMS와 달리 스키마가 없으며 아래 링크에서 여러 가지 NoSQL 형태에 대해 잘 설명하고 있다.

- 장점: 대규모의 데이터를 유연하게 처리할 수 있으며, 설계가 단순하고 수평 확장에 용이하다.

 

<RDBMS vs NoSQL>

이 둘의 차이에 대해 간단하게 설명하면 다음과 같다.

 

1. 위의 표에서 알 수 있듯이 RDBMS는 각 열(필드)마다 어떠한 데이터가 와야 하는지가 정해져있다. 따라서 '학과' 열 밑에 학년을 작성하면 안된다. 다르게 표현하면 각 행(레코드)은 같은 모습(데이터 구조)을 하고 있다.

 

출처 : 네이버 지식백과, 레코드

한편, NoSQL은 다른 데이터 구조를 가져도 된다.

- 여기서 각각의 장단점을 느낄 수 있을 것이다.
(알아보기 쉽지만 제한적인 형태 vs 알아보기 어렵지만 유연한 형태)

​2. RDBMS의 경우, 위 예시에서 학년을 학번으로 바꿔야할 경우(혹은 새로운 열을 추가할 경우) 대공사를 해야한다. 특히나 데이터가 많을수록 모든 값들을 지우거나 바꿔야하므로 수고를 해야한다. 반면, NoSQL은 형태가 자유로움으로 새로운 내용을 추가하면 된다고 이해하자.

3. RDBMS는 보기 깔끔한만큼 접근하기 쉽다. 아래의 링크에서는 "질의에서 할 수 있는 기능이 풍부하고 문법이 표준화 되어 있다"고 표현하고 있다. 실제 데이터를 이런식으로 가져오지는 않지만, 쉽게 예를들면 "2행 5열 값을 가져와줘(=경제학)"처럼 값을 가져올 수 있다.