NoSQL이란?

nosql1

1. 비관계형 데이터 모델

  • 유연한 스키마 : RDBMS 처럼 정해진 스키마를 바탕으로 데이터를 입출력 할 때 형태가 정해지지 않는다.
  • 다양한 데이터 모델 : JSON, XML 등의 데이터 형식으로 저장할 수 있다.

    2. 확장성

  • 수평 확장 : 샤딩을 통한 분산 저장을 하는 NoSQL 특성 상 성능 확장을 위해 단순히 서버 컴퓨터의 수를 늘리는 방식이 가능하다.
    • 샤딩 : 데이터를 조각내 분산 저장하는 데이터 처리 기법

    nosql2 nosql3

3. 고가용성 및 장애 복구

  • 자동 복제 : 데이터 복제 및 분산 저장을 통해 높은 가용성과 장애 복구가 가능하다.
  • 고가용성 : 시스템이 지속적으로 안정적인 동작을 할 수 있도록 보장하는 것
    • CAP 이론에서 분산 시스템은 Consistency, Availability, Partition Tolerance 중 두 가지 특성을 만족 가능 -> NoSQL은 Consistency를 포기

    nosql4

4. 높은 성능

  • Key-Value 에 기반한 DB이기 때문에 기본적으로 읽기와 쓰기에 빠른 속도를 가진다.
  • 디스크 기반인 RDBMS와 달리 NoSQL은 메모리 기반이기 때문에 빠른 속도를 가질 수 있다.

NoSQL 종류

1. Key-Value DB

  • Key, Value의 쌍인 배열 구조의 데이터가 저장되는 가장 기본적인 형태
  • Key-Value Store는 단순한 조회 질의를 이용한 대량의 데이터 추출에 적합
  • ex. Redis, Oracle NoSQL DB

    2. Wide Column Store

  • Big Table DB라고도 하며, Key Value에서 발전된 형태의 Clumn Family 데이터 모델로, 테이블 안에 테이블을 포함할 수 있으며, 데이터를 수직적으로 쌓아가는 방식
  • Key-Value Store의 확장으로, Row Key와 Column Name의 조합으로 값을 저장
  • ex. Hbase, Cassandra, GoogleBigTable, Vertica

    3. Document DB

  • Key Value 에서 확장된 형태로 Document라는 구조화된 데이터 타입(JSON, XML)인 Collection 데이터 모델
  • Document DB는 내부 구조에 의존하여 데이터를 처리하며, 추가 최적화를 위해 메타 데이터 추출을 사용
  • ex. MongoDB, CouchDB, Riak, Azure Cosmos DB

    4. Graph DB

  • Nodes, Relationship 데이터 모델
  • 데이터를 그래프 구조로 저장하며, 노드와 엣지를 사용하여 데이터 간의 관계를 표현
  • 그래프 데이터베이스는 연결된 데이터 간의 관계 분석 및 탐색에 적합
  • ex. Sones, AllegroGraph, neo4j, BlazeGraph, Orient DB

nosql5

NoSQL 장단점

1. 장점

  • 확장성
    • NoSQL 데이터베이스는 수평적 확장을 지원하여, 데이터베이스의 용량 증가 용이
    • 클라우드 환경에서 NoSQL 데이터베이스는 추가 서버를 쉽게 추가하여 확장 가능
  • 가용성
    • NoSQL 데이터베이스는 분산 아키텍처를 사용하여, 일부 서버가 오프라인 상태가 되어도 데이터베이스의 나머지 부분 계속 작동 가능
    • 고가용성 기능을 통해 데이터베이스의 신뢰성 보장
  • 고성능
    • NoSQL 데이터베이스는 대량의 데이터를 빠르게 처리할 수 있으며, 실시간 응답이 필요한 애플리케이션에 적합
    • 다양한 데이터 형식을 지원하여, 구조화되지 않은 데이터를 효율적으로 처리
  • 유연성
    • NoSQL 데이터베이스는 동적 스키마를 사용하여, 데이터 구조를 유연하게 변경
    • 다양한 데이터 모델을 지원하여, 애플리케이션의 요구 사항에 맞게 데이터를 저장
  • 비정형 데이터
    • 설계 비용 감소
    • 정의된 구조가 없어 정형화되지 않은 데이터
    • ex. 동영상, 오디오 ,사진, 보고서, 문서 등
  • 분산 시스템
    • RDBMS에 비해 저렴한 비용으로 분산 처리 및 병렬 처리 가능
  • 빅데이터 처리에 효율적

nosql6

2. 단점

  • 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능성
  • 많은 인덱스를 쓰려면 충분한 추가 메모리가 필요하다.
    • 인덱스 구조가 메모리에 저장되기 때문이다.
  • 데이터 일관성이 항상 보장되지 않는다.
    • 최종적 일관성 지향
      • 모든 업데이트가 시간이 지나면서 모든 노드에 전파되어 결과적으로 모든 노드가 일관된 상태가 되는 것을 보장하는 개념
      • 특정 시간에는 데이터가 일관되지 않을 수도 있다.
    • 가용성, 분할용인, 속도 를 위해 희생

NoSQL 사용 분야

- 실시간 빅데이터 처리

  • Amazon
    • DynamoDB : 전자 상거래 플랫폼 등을 위해 실시간 빅데이터 처리\

    nosql7

    - 소셜 네트워크 서비스

  • Instagram
    • Cassandra : 대규모 데이터에 대한 빠른 쓰기와 확장성이 요구되는 피드 데이터, 시간에 따른 데이터 저장 등에 사용, 데이터 고가용성 및 장애 복구가 큰 장점

    nosql8