DB

RDB VS NoSQL 1탄

Lee_SJ 2020. 8. 9. 04:30

RDB와 NoSQL을 처음 공부할 때 정말 RDB란 무엇인가?

NoSQL이란 무엇인가에 대하여 명확하게 말하기 힘들 때가 있다.

 

그 때 나의 포스트가 도움되길 바라는 마음에서 내가 공부한 RDB와 NoSQL이 무엇인지

어떻게 다른지에 관하여 지금부터 설명하겠다.

 

1.왜 RDB,NoSQL이라는 이름을 붙였을까?

 

RDB는 Relation Database의 약자이다.

 

이떄 Relation이란 관계라는 뜻이다.왜 관계라는 용어를 쓴걸까?

이유는 간단하다.

RDB를 만든 핵심 개념이 관계형 대수학 이기 때문이다.

 

자료를 관계형 대수학 개념으로 묶는다.

그리고 이 관계형 대수학 개념을 바탕으로 테이블을 만든다.

RDB는 테이블 뿐만이 아니라 SELECT,JOIN과 같은 기본 SQL문법역시 관계형 대수학을 기반으로 한다.

즉 RDB는 관계형 대수학을 개념으로 테이블을 만들고 문법을 만들었다.

그래서 "관계형"데이터베이스 라는 이름을 얻었다.

 

NoSQL을 뭐라고 정의해야 할까?

사실 이 부분은 굉장히 애매했다. 왜냐면 초창기 NoSQL이 나온 의미와 현재 의미가 일치 하지 않기 때문이다.

NoSQL은 현재도 계속 새로운 형태가 나오는 분야이고 그 형태는 굉장히 다양하다.

나는 그래서 이렇게 생각했다.

"Not Only SQL"말 그대로 기존 RDB의 제약조건을 따라도 되고 안따라도 된다.

RDB를 만들기 위해서는 RDB를 만들어야 하는 조건이 있다.

하지만 NoSQL은 그 조건에서 자유롭다. 필요하면 그 조건을 가져다가 적용해도 되고 안해도 된다.

 

그래서 Not Only SQL이라는 이름을 얻을 수 있었다고 생각한다.

 

 

2.왜 RDB보다 NoSQL이 더 속도가 더 빠를까?왜 RDB는 스키마 구조가 엄격할까?

 

기본적으로 RDB보다 NoSQL이 더 속도가 빠르다고 알고있다.

그런데 왜 NoSQL이 속도가 더 빠를까?

이런 생각을 해보았는데 이유를 찾기가 쉽지 않았을 수 있다.

이유는 간단하다.자료를 구성하는 자료구조의 차이다.

 

 

RDB는 배열을 통해 자료를 저장하고 Nosql은 HashMap구조를 이용하여 자료를 저장한다.

배열은 데이터 형식을 미리 지정해 놓아야 한다.

그리고 자료를 찾기 위해서는 모든 데이터를 가져와서 그 안에서 데이터를 검색해야 한다.

 

반면 HashMap같은 경우는 다르다.

Map구조는 보통 key-value구조로 되어있는데 자료의 크기를 지정해 놓지 않아도 자유로운 추가가 가능하다.

또한 모든 데이터를 하나하나 가져오지 않아도 key값만 알면 빠른검색이 가능하다.

 

 

이게 우리가 알고 있는 RDB와 NoSQL의 가장 기본적인 차이이고,

RDB가 더 스키마가 엄격한 이유이다.

 

이유는 자료를 구성하는 자료구조의 차이다.

 

일단 간단하게 1탄은 여기서 마치고 나중에 2탄으로 돌아오겠다.

 

혹시 궁금하신 점이나 제가 틀린부분 있으면 코멘트 달아주세요~