새소식

반응형
CS/DB

(4) NoSQL : 특징/ 종류

  • -
728x90
반응형

 

TL;DR

NoSQL이란? 관계형 데이터 베이스 이외의 형식으로 데이터를 저장하는 데이터 베이스를 총칭
NoSQL의 종류

 

NoSQL

Not Only SQL
  • 비관계형 데이터 베이스
  • 관계형 데이터 베이스 이외의 형식으로 데이터를 저장하는 데이터 베이스를 총칭
  • RDBMS의 한계를 극복하기 위해 Join이 없고, 고정된 스키마를 갖지 않는 새로운 형태의 데이터 저장소
  • Document, Graph, Key-Value, Column Store 등의 방식이 있다.

 

✅ NoSQL 특징

  • RDBMS와 달리 데이터 간의 관계를 정의하지 않는다.
    • 관계형 데이터 베이스가 데이터의 관계를 Foreign Key 등으로 정의하고 이를 이용해 Join 등의 관계형 연산을 한다고 한다면, NoSQL은 데이터 간의 관계를 정의하지 않는다.
    • 고정되지 않은 테이블 스키마 (테이블의 스키마가 유동적) 유연성
    • 데이터 베이스 설계를 변경하지 않고도 필요한 속성을 동적으로 추가할 수 있다.
  • RDBMS에 비해 훨씬 대용량의 데이터를 저장 가능
  • 분산형 구조를 통해 여러 대의 서버에 분산해 저장하고 상호 복제해 데이터 유실이나 서비스 중지에 대비 가능 확장성 가용성
    • RDBMS는 보통 하나의 고성능 머신에 데이터를 저장함
  • 읽기 작업보다 쓰기 작업이 더 빠르고, 일반적으로 RDBMS에 비해 쓰기와 읽기 성능이 빠르다. 고성능
    • 대량의 데이터를 빠르게 처리하기 위해 메모리에 임시 저장하고 응답하는 등의 방법을 사용

 

 NoSQL을 사용해야하는 이유

  • 유연성과 확장성을 비롯해 고성능의 데이터 베이스를 필요로 하는 다양한 현대 어플리케이션에 적합하다.
    • 유연성 : 유연한 스키마를 제공해 보다 빠르고 반복적인 개발을 가능하게 한다. DB를 반정형 및 비정형 데이터에 이상적으로 만들어준다.
    • 확장성 : 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계된다.
    • 고성능 : 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 뛰어난 성능을 얻게 한다.

 

 

✅ NoSQL 종류 

1️⃣ Key-Value DB

Redis, Oracle NoSQL, Voldemorte, ...
  • Amazon의 Dynamo Paper 에서 유래
  • Key와 Value의 쌍으로 데이터가 저장되는 유형
    • Key는 값에 접근하기 위한 용도이고 (Unique 값)
    • Value에는 어떤 형태의 데이터(이미지, 비디오 포함)도 담을 수 있다.
  • 간단한 API를 제공해 질의 속도가 굉장히 빠름
  • 파티셔닝이 가능하고 다른 유형의 DB로는 불가능한 범위까지 수평 확장을 가능하게 한다.

 

 

👆 언제 사용하는게 좋을까?

  1. 성능 향상을 위해 관계형 데이터 베이스에서 데이터 캐싱
  2. 모바일 어플리케이션용 사용자 데이터 정보와 구성 정보 저장
  3. 이미지나 오디오 파일 같은 대용량 객체 저장

 

 

2️⃣ Doument DB

MongoDB, Azure Cosmos DB, CouchDB, ...
  • Lotus Notes에서 유래
  • Key-Value 와 차이는 값을 문서로 저장한다는 점
    • 여기서 문서란 JSON, XML과 같은 형식을 말한다.
    • Document 내 객체는 서로 다른 필드를 가질 수 있음
  • 어플리케이션 코드에서 사용하는 것과 동일한 문서 모델 형식을 사용해 DB에서 보다 쉽게 데이터를 저장하고 쿼리할 수 있다.
  • 단점이라면 쿼리가 SQL과 다르고, 질의 결과가 JSON이나 XML 형태로 출력된다는 점

 

👆 언제 사용하는게 좋을까?

  1. 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
  2. 각 문서가 고유하고 시간에 따라 진화하는 콘텐츠 관리 시스템, 사용자 프로파일 및 카탈로그 등
  3. 다양한 유형의 메타 데이터 추적
  4. JSON 데이터 구조를 사용하는 어플리케이션

 

3️⃣ Wide Column DB

HBase, Cassandra, Hypertable, ...
  • Big Table DB라고도 하며, Google의 BigTable Paper에서 유래
  • Column Family 데이터 모델을 사용
    • 행마다 각각 다른 값과 다른 수의 스키마를 가질 수 있음
    • 사용자 이름(Key)에 해당하는 값에 스키마들이 각각 다름
  • 대량의 데이터의 압축, 분산 처리, 집계 처리 및 쿼리 동작 속도 그리고 확장성이 뛰어남

 

👆 언제 사용하는게 좋을까?

  1. 열이 모든 행에 대해 항상 동일하지 않고, 여러 데이터 베이스 노드에 분산될 수 있는 대규모 데이터 셋이 필요할 때 사용하는 것이 이상적
  2. Log data 저장
  3. 주식 거래 데이터나 기온 모니터링 데이터 등 시계열 데이터 저장

 

4️⃣ Graph DB

Neo4J, Blasegraph, OrientDB
  • Euler & Graph Theory에서 유래
  • 노드, 엣지, 프로퍼티와 함께 그래프 구조를 사용해 데이터를 표현하고 저장
    • 질의가 그래프 순회를 통해 이루어진다.
  • RDBMS보다 성능이 좋고 유연하며 유지보수에 용이하다.
  • 클러스터링에 적합하지 않고 질의 언어도 특화되어 있어 배우기 어렵다.

 

👆 언제 사용하는게 좋을까?

  1. 데이터 간의 관계가 탐색의 키일 경우
  2. 페이스북이나 트위터 같은 SNS 에서 내 친구의 친구를 찾는 질의 등에 적합하고, (소셜 네트워킹)
  3. 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 데이터 베이스로도 적합

 

 

 

References

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.