Not Only SQL이란?

JwaTech·2024년 1월 30일

DB

목록 보기
1/1
post-thumbnail

NoSQL? 비관계형 데이터베이스 유형들



특징


  • 유연성 : 유연한 스키마를 제공
  • 확장성 : 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용
  • 고성능 : 특정 데이터 모델 및 액세스 패턴에 최적화
  • 고도의 기능성 : 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공

일관성과 확장성 사이의 Trade-off


  • Consistency가 데이터베이스의 절대적인 요소가 아님을 주장하는 움직임 생성
  • 다수가 동시에 읽고 쓰는 상황에서의 성능 향상.
  • 분산 환경에서 노드들이 잘 작동하고 있는데, 시스템의 일부가 고장나면 전체 데이터베이스를 사용할 수 없게 되는 문제를 해결하기 위해 등장.

데이터 일치


  • RDBMS에 복잡한 메모리 내 데이터 구조를 저장하려면 ORM 프레임워크를 이용하여 관계형 표현으로 반환해야 하는 번거로움이 있으며, 동시에 여전히 데이터 불이치가 존재할 수 있다.
  • NoSQL은 메모리 내의 데이터가 어떤 구조이든지 하나의 집합으로 취급하여 저장한다.
  • 중복 데이터 허용.

스키마 LESS


  • 스키마와 같이 데이터 구조를 미리 정의하는 행위가 자유로움.
  • 스키마가 없으니 클러스터링에 용이함.

집합 지향 모델


  • 집합 자료구조로 이루어져 있다.
  • RDBMS처럼 하나의 엔티티에 대한 ACID 트랜잭션을 지원하진 않지만 집합에 대한 트랜잭션을 지원함.
  • 연관된 데이터들이 함꼐 움직이기 때문에 수평적 확장에 용이하다.

CAP 이론


출처:https://blog.nahurst.com/visual-guide-to-nosql-systems

  • 일관성(Consistency) : 분산되 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다.
  • 가용성(Availability) : 클러스터링 된 노드 중 하나 이상의 노드가 실패 되더라도 정상적으로 요청을 처리할 수 있는 기능을 제공한다.
  • 분산 허용(Partitioning Tolerance) : 클러스터링 노드 간에 통신하는 네트워크가 장애가 발생하더라도 정상적으로 서비스를 수행한다.

유형


  • 키 값 (해쉬)
    • 가장 유연한 NoSQL DB 유형, 수평 확장에 뛰어남, 가장 단순한 구조
    • 애플리케이션이 값 필드에 저장된 모든 데이터를 제약 없이 완벽하게 제어 가능
    • 어떠한 형태의 데이터라도 담을 수 있다. 이미지나 비디오도 가능
    • Redis, Oracle NoSQL DB, VoldeMorte

  • 문서(트리)

    • 반구조적 데이터의 저장, 검색, 관리에 이용

    • 키-도큐먼트 형태로 저장

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

    • XML, JSON 같은 Document를 이용해 레코드를 저장

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

    • MongoDB, CouchDB, Azure Cosmos DB

  • 그래프(그래프)

    • 노드 및 노드 간 연결을 보여주는 관계로 구성
    • 노드와 엣지로 이루어짐
    • 소셜 네트워크, 예약 시스템, 사기 감지에 이용
    • Neo4j, BlazeGraph, OrientDB
    • ACID 트랜잭션 제공
  • 넓은 열

    • 테이블, 행, 열 형식으로 데이터를 저장 및 관리
    • NoSQL 중 RDBMS에 가장 가까운 형태
    • 열 형식을 사용하는 애플리케이션에 광범위하게 배포되어 스키마 없는 데이터를 수집
    • Hbase, GoogleBigTable, Vertica

참고문헌


https://aws.amazon.com/ko/nosql/
https://www.oracle.com/kr/database/nosql/what-is-nosql/
https://code-lab1.tistory.com/53
https://namu.wiki/w/NoSQL

profile
문제를 찾아 해결하자

0개의 댓글