Data/데이터베이스 이론

DB - 03 Nosql (Not only SQL)

me-theus 2024. 7. 23. 15:42

Nosql이란?

Nosql이란 RDBMS와는 완전 반대의 성격을 지닌 DBMS이다.


Nosql은 동적 스키마, 대량의 분산데이터를 다루는 시스템을 지원하여 대용량 및 빠른 속도의 데이터 처리가 가능하다.


물론 RDBMS도 현재는 클라우드 서비스를 이용하며 수평적 확장이 가능해져 대용량 서비스를 처리할 수 있게 되었다.


하지만 이미지,영상과 같은 반정형, 비정형 데이터를 다루는데 있어서는 고정적인 스키마를 이용하는 RDBMS는 어려움이 존재한다.


RDBMS의 이런 특징과 반대로 Nosql은 아주 유연한 스키마 구조를 가지고 있어 다양한 형태의 데이터를 다루는데 강점을 가지고 있다.


Nosql은 데이터를 여러 노드에 분산시켜 저장하여, 단일 노드의 부담을 줄이고 데이터를 병렬로 처리할 수 있어 빅데이터 처리에 능하다.

Nosql의 데이터 타입

  1. 정형 데이터 (Structured Data) : 정해진 스키마에 따라 구조화된 데이터, 표, 엑셀 파일 등등
  2. 반정형 데이터 (Semi-Structured Data) : Json, key-value, Html, XML과 같이 구조를 가지고 있지만 그안에 들어가는 데이터에 대해서는 엄격하지 않은 데이터
  3. 비정형 데이터 (Unstructured Data) : 구조나 형태가 없으며, 연산이 어려운 이미지, 영상, 음성 등등의 데이터

Nosql의 종류

  1. 문서 지향형 데이터 베이스 (Document Stores) : MongoDB, CouchDB
    Json과 Bson과 같은 문서형식의 데이터를 저장 (가장 많이 쓰이는 데이터 타입)
  2. 키-값 데이터 베이스 (Key-Value Stores) : Redis, DynamoDB
    딕셔너리 데이터를 저장, 주로 캐시나 설정 데이터 같이 실시간 앱에 주로 사용.
    인메모리 데이터 스토어로, 매우 빠른 읽기와 쓰기가 가능하다
  3. 와이드 컬럼 데이터 베이스 (Wide-Column Stores): Cassandra, HBase
    Big Table 형태로 여러 개의 Column Family를 가진 테이블로 저장한다. 이후 자세히 설명하겠다
  4. 그래프 데이터 베이스 (Graph Database) : Neo4j, Amazon Neptune
    상속 관계를 표현하기 위해 그래프의 구조를 사용하는 데이터 모델로 노드와 엣지로 구성되어 있다

Nosql의 실제 활용 예시 -> 각각의 데이터 베이스에 맞춰 정리 예정