본문 바로가기
DataBase/NoSQL

[NoSQL] - NoSQL이란?

by 오늘은강박사갈거야~~ 2021. 10. 16.
반응형

- 이 글은 제가 공부를 하며, 이해한 것을 바탕으로 작성하는 글입니다.

- 그렇기에 틀리거나 잘못된 부분이 있을 수 있습니다.

- 글의 오류를 발견하시면, 댓글로 말씀해 주시면 정말 감사하겠습니다.


[1] NoSQL이

 

NoSQL은 일반적으로 Not Only SQL이라고 불리며, SQL만 사용하지 않는 DBMS를 뜻한다. 즉, RDB를 사용하지 않는다는 것이 아닌, 데이터를 저장하는 다양한 형태의 DB를 말합니다. 

 

일반적으로 데이터를 저장할 때에는 RDB가 사용됩니다. 하지만 점점 인터넷이 활성화되고, 빅데이터, 기존과 다른 비정형 데이터들이 등장하며 RDB는 이것들을 처리하는데 어려움을 겪게 됩니다.

 

1. 이전과는 다른 상상할 수 없는 많은 양의 데이터, 트래픽을 RDB로 처리하기에는 데이터를 저장하는 데 어려움이 발생한다.

2. 1번의 경우를 해결하기 위한 방법으로 Scale-up(수직적 확장)의 방식을 도입했으나, 많은 비용이 들게 된다. 그렇다고 Scale-out을 하기에는 RDB가 적합지 않다. 

3. 이전에는 정형 데이터만을 다루던 것과는 다르게 정형, 반정형, 비정형 데이터와 같은 다양한 형태와 크기가 다른 데이터들이 쏟아지기에, RDB를 사용하여 사전에 스키마를 정의 해 놓는 것 자체가 불가능해지고 변경하기 어렵다는 문제점이 발생한다.

4. 이전의 폭포수 모델 등의 문제점을 해결하기 위해 새로 도입된 에자일, 스프린트 등의 새로운 개발 방식으로, 소프트웨어 개발의 전체적으로 빠르게 작업을 수행할 수 있어야 하고 변경이 용이해야 한다.

 

이것 이외에도 많은 문제점들을 해결하기 위해 나오게 된 것이 NoSQL이 등장하게 된 배경이라고 할 수 있습니다.

 

그러면 NoSQL의 가장 큰 특징은 바로 일관성(Consistency)이 데이터베이스의 절대적인 요소가 아니다.라는 의견이다. 

이 일관성이 DB에서 가장 중요한 건데, 이걸 포기하면서 얻으려고 하는 것은 아래와 같다.

 

  • 다수가 동시에 읽고 쓰는(Read and write) 상황에서의 성능 향상을 위해서.
  • 분산 환경에서 노드들이 잘 작동하고 있음에도, 시스템의 일부가 고장 나면 데이터베이스를 사용할 수 없게 되는 문제를 해결하기 위해서.

 

NoSQL의 특징은 아래와 같다. 

 

- 관계형 모델을 사용하지 않고, 테이블끼리의 조인 기능 無!!

- 분산형 구조라, 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성한다.

- Data 처리 완결성(Transaction ACID)을 지원하지 않는다.

- Schema less, 스키마가 매우 유연하기에(거의 없다 해도 무방) DB를 상황에 맞게 빠르고 쉽게 변경 가능

- 데이터베이스가 중단되거나 문제가 생겼을 때 자동 복구 또는 중단되지 않는 해결 방안 제시

- Scale out으로 수평 확장이 가능하다.

- join이 없고, query에 최적화되어, RDB에 비해 쿼리가 매우 빠르다.

 

뭔가 복잡하고 어려운 내용인 것 같지만, 한 줄로 요약해 보자면, 시대적 요구사항인 인터넷의 발달, 빅데이터, Scale-out, 그리고 가장 중요한 데이터의 완결성/일관성을 어느 정도 포기하며 만들어진, (RDB에 비해) 확장성, 가용성, 성능이 모두 뛰어난 DB라고 이해하면 될 것 같다.

 

 

 

 

 

반응형

댓글