본문 바로가기

IT/개발지식

NoSQL DB에 대하여

개발자라면 들어볼 수 밖에 없는 NoSQL 그런데, 친구가 이걸 물어봤을 때, 들어는 봤다고 밖에 말을 할 수 없었습니다.

다음 질문에는 자신있게 받아칠 수 있도록 블로그를 통해 정리해볼까요.

 

RDBMS는 관계 데이터베이스로, 관계 간의 형성을 이용해 정보를 처리하지만, 최근 들어서 관계 정립 없이도 데이터를 정리해야할 필요성이 증가하기 시작했습니다.

 

이리하여 등장한 것이 NoSQL 입니다.

NoSQL 이란, RDBMS가 아닌 다른 형태의 데이터 저장 형태를 의미합니다.

기존 SQL 방식으로는 한계를 극복하기 어렵다고 본 것이죠. 

 

그럼 NoSQL이 기존 RDBMS 대신 사용해야하는 이유는 무엇이 있을까요?

장점을 정리해서 확인해보겠습니다.

 

1. 유연성 : 유연한 스키마 제공으로, 보다 빠르고 반복적인 개발이 가능합니다. 유연한 DB 모델은 반정형 데이터 처리에 이상적입니다.

2. 확장성 : 고가의 서버를 추가하는 대신, 분산 하드웨어 클러스터 활용하여 확장하도록 설계가 가능합니다. 

3. 고성능 : 특정 데이터 모델 및 액세스 패턴에 대해 최적화 되어 성능이 우수합니다.

4. 고기능성 : 각 모델에 맞춰 특별히 구축된 뛰어난 API와 데이터 유형 제공이 가능합니다.

 

 

NoSQL의 특징으로는 다음과 같습니다.

 

1. RDBMS와 달리 테이블 형태로 관리하지 않는다.

따라서, 키로 관계를 정의하고, Join으로 관계 연산을 하는 것은 불가능하다.

 

2. 비교적 더 대용량 데이터 저장이 가능하다.

용량 한계를 극복하고자 하는 목적도 있는 만큼, 페타바이트 대용량 데이터 저장도 가능하다.

 

3. 분산형 구조

기존과 달리 하나의 고성능 머신에서 저장하지 않고, 일반적인 서버 수십대를 연결해 데이터를 저장 및 처리하는 구조로 구성되어있다. 이로 인해, 데이터 상호복제를 통해 특정 서버 장애 발생 시에도, 서비스 종료 없는 구조가 가능하다.

 

4. 고정되지 않는 테이블 스키마

RDBMS와 달리, 테이블의 스키마가 유동적이다.

 

NoSQL 종류

1. Key-Value DB

Key와 Value 쌍으로 데이터가 저장되는 유형

 

2. Wide Columnar DB

Big Table DB라고도 부른다.

Column Familty 데이터 모델을 사용한다.

 

3. KDoument DB

JSON, XML 같은 Collection 데이터 모델 구조를 채택

Mongo DB가 이 종류에 해당한다.

 

4. Graph DB

Nodes 데이터 모델을 채용했다.

 

 

NoSQL DB의 유형

1. 키 값 데이터베이스

분할성이 커서, 상당한 범위의 수평 확장이 가능하다.

게이밍, IoT와 가은 사용 사례에서 특히 적합하다.

 

2. 문서 데이터베이스

JSON 유사 형식의 문서로 표시한다.

개발자들이 쉽게 데이터 저장하고 쿼리가 가능하다.

유연하고 반 구조화된 계층 특성을 활용해 애플리케이션의 요구를 쉽게 발전시킬 수 있다.

시간에 따라 발전하는 콘텐츠 관리 시스템, 사용자 프로파일 등에 주로 사용한다.

 

3. 그래프 데이터베이스

고도 연결된 데이터 세트를 사용하는 애플리케이션을 쉽게 구축하고 실행한다.

소셜 네트워킹, 추천 엔진, 사기 감지 및 지식 그래프 등이 있다.

 

4. 인 메모리 데이터베이스

게이밍, 기술 애플리케이션에선 밀리초 응답 시간이 필요하여, 수신 트래픽 급증이 가능한 리더보드, 세션 스토어,실시간 분석 같은 사용 사례가 있다.

 

5. 검색 데이터베이스

많은 애플리케이션 로그를 생성해줘서, 개발자 문제 해결에 도움이 된다.

 

 

DynamoDB : 확장가능한 NoSQL 분산 DB

 

언제 사용해야할까?

스키마가 정형되지 않은, 비정형 데이터 처리

읽기 쓰기가 빈번하고 처리 속도가 빨라야하는 작업

작은 용량의 데이터가 많은 작업

고 가용성 분산 데이터베이스 운영이 필요한 작업

 

리전 별로 생성 가능

성능과 가용성을 위해 데이터를 3곳의 가용 영역에 복제하여 생산

가용 영역이 장애 발생하여 정지하더라도 DB 정상 사용 가능 ( 별도 백업이 필요 없다. ) 

 

데이터 용량 무제한

데이터 용량이 증가하면 자동으로 스토리지 늘리고 클러스터를 확장해 데이터를 분산한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'IT > 개발지식' 카테고리의 다른 글

MarkDown이란?  (0) 2020.11.20
RESTFul이란 무엇일까?  (0) 2020.11.20