본문 바로가기
Database

NoSql

by ssoyDev 2023. 9. 4.
반응형

NoSql 이란?

-Not Only SQL.

비관계형 데이터베이스를 지칭한다
대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며
스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소를 말한다.

특징

  • 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음
  • RDBMS에 비해 대용량의 데이터를 저장할 수 있다
  • 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 액세스
  • 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
  • 관계형 데이터베이스에서는 지원하는 Data처리 완결성(Transaction ACID 지원) 미보장
  • 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의 (Schema-less)
  • 고정되지 않은 테이블 스키마를 갖는다
  • 데이터베이스의 중단 없는 서비스와 자동 복구 기능지원
  • 다수가 Open Source로 제공
  • 확장성, 가용성, 높은 성능

 

 

** 장단점으로 구분하기 ** 

장점

  1. RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능
  2. 비정형 데이터 구조 설계로 설계 비용 감소
  3. Big Data 처리에 효과적
  4. 가변적인 구조로 데이터 저장이 가능
  5. 데이터 모델의 유연한 변화가 가능

단점

  1. 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
  2. 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장
  3. 데이터 일관성이 항상 보장되지 않음

 

 

종류

1. Key-Value Database

기본적인 패턴으로 KEY-VALUE 하나의 묶음(Unique)으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장 시 용이하다.

Key 안에 (COLUMN, VALUE) 형태로 된 여러 개의 필드, 즉 COLUMN FAMILIES 갖는다.

주로 SERVER CONFIG, SESSION CLUSTERING등에 사용되고 엑세스 속도는 빠르지만, SCAN에는 용이하지 않다.

Ex) Redis, Oracle NoSQL Database, VoldeMorte

 

 

2. Wide-Column Database

 

https://blog.kakaocdn.net/dna/bfn57O/btrlZcNnz2Q/AAAAAAAAAAAAAAAAAAAAADz-4KxFdYln6PvmosFdOueCmimWWMUn1DMHL-pTUWey/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=6JQWECk6ZA23rWN4fkVFbFXU0PY%3D

출처: https://database.guide/what-is-a-column-store-database/

행마다 키와 해당 값을 저장할 때마다 각각 다른값의 다른 수의 스키마를 가질 수 있다.

위 그림을 참고하면 사용자의 이름(key)에 해당하는 값에 스키마들이 각각 다름을 볼 수 있다.

이러한 구조를 갖는 WIDE COLUMN DATABASE 는 대량의 데이터의 압축, 분산처리, 집계 쿼리 (SUM, COUNT, AVG 등)및 쿼리 동작 속도 그리고 확장성이 뛰어난 것이 그 대표적 특징이라 할 수 있다.

EX) Hbase, GoogleBigTable, Vertica

 

 

 

3. Document Database

 

https://blog.kakaocdn.net/dna/QMYuk/btrl4RHV2mS/AAAAAAAAAAAAAAAAAAAAAN1eGxFXAoVTA0pqirU7RI5LgTG2FfZ-leDGicHnEG2c/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=f4vDxGoHdpMj36sHmffDLT3BTuU%3D

출처: https://inyl.github.io/programming/2017/05/09/database.html

테이블의 스키마가 유동적, 즉 레코드마다 각각 다른 스키마를 가질 수 있다.

보통 XML, JSON과 같은 DOCUMENT를 이용해 레코드를 저장한다.

트리형 구조로 레코드를 저장하거나 검색하는 데 효과적이다.

Ex) MongoDB, CouchDB, Azure Cosmos DB

 

 

 

4. Graph Database

 

출처: https://database.guide/what-is-a-graph-database/#more-896

데이터를 노드로(그림에서 파란, 녹색 원) 표현하며 노드 사이의 관계를 엣지(그림에서 화살표)로 표현

일반적으로 RDBMS 보다 성능이 좋고 유연하며 유지보수에 용이한 것이 특징.

Social networks, Network diagrams 등에 사용할 수 있다.

Ex) Neo4j, BlazeGraph, OrientDB

참조 : https://www.samsungsds.com/kr/insights/1232564_4627.html

https://code-lab1.tistory.com/53

반응형