본문 바로가기
Computer Science/Database

[데이터베이스 핵심 요약] 6. NoSQL

by pilgyeong 2022. 11. 12.

1. 개념

관계형 DB의 한계를 벗어나 빅데이터 처리를 위해 데이터의 읽기보다 쓰기에 중점을 둔 DB이다. 수평적 확장이 가능하며, 다수의 서버들에 데이터 복제 및 분산저장이 가능한 DB이다. (Not Only SQL의 약자)

 

2. 특징

특징 설명
스키마 리스
(Schema-less)
• 데이터 모델링을 위한 고정된 데이터 스키마 없이 키(key)값을 이용해 다양한 형태의 데이터 저장과 접근이 가능한 기능을 이용
• 데이터를 저장하는 방식은 컬럼(column), 값(value), 문서(document), 그래프(graph)로 4가지로 나뉨
캐싱
(Caching)
• 대규모 질의에도 고성능 응답속도를 제공할 수 있는 메모리 기반의 캐싱 기술 적용이 매우 중요하고, 개발 및 운영에서도 일관되게 적용할 수 있는 구조
탄력성
(Elasticity)
• 시스템의 일부 장애에도 불구하고 시스템에 접근하는 클라이언트, 응용시스템의 다운타임이 없도록 하는 동시에 대용량 데이터의 생성, 업데이트, 질의에 대응할 수 있도록 시스템 규모와 성능 확장이 용이하고 입출력의 부하 분산에도 용이한 구조를 갖춤
저렴한 클러스터 • PC수준의 사용 하드웨어를 활용하여 다수의 노드를 구성하고, 수평적 확장과 데이터 복제 및 분산 저장이 가능

 

3. 종류

종류 설명 예시 제품
Key-Value • 단순하고 빠른 get, put, delete 기능의 기본 DB
• 메모리 기반에서 성능을 우선하는 시스템과 빅데이터를 저장・처리할 수 있는 방식
Redis,
Dynamo
Wide-Column 관계형 DB의 테이블에 대응되는 와이드-컬럼의 행으로 데이터를 저장하는 구조
Cassandra,
Hbase
Document XML, JOIN 등 문서를 Key-Value의 value부분에 저장하는 구조
MongoDB,
CouchDB
Graph RDB의 엔트리 속성을 노드로 표현하고, 관계를 Node간의 Edge로 표현하는 구조
Neo4J,
OrientDB

 

4. 특징 (BASE)

  • 관계형 DBMS의 ACID와 대조적으로 가용성과 성능을 중시하는 NoSQL의 특징 - 분산시스템
특징 설명
Basically Availiable
(기본적인 가용성)
다수의 실패에도 가용성을 보장, 다수의 스토리지에 복사본을 저장 (주 서버가 다운되더라도 백업 서버는 동작)
부분적인 고장은 있을 수 있지만, 나머지는 사용 가능
Soft-state
(부드러운 상태)
저장소는 쓰기 일관성이 있을 필요가 없으며, 서로 다른 복제본이 항상 상호 일관성이 있을 필요도 없음
분산 노드 간 업데이트는 데이터가 노드에 도달한 시점에 갱신함
Eventually consistent
(최종적인 일관성)
일시적으로 일관성이 깨지는 상태가 되더라도, 일정시간 후에는 일관성이 있는 상태가 되는 성질
저장소는 나중에 어떤 시점에서 일관성을 나타냄

 

5. BASE vs ACID 비교

속성 BASE ACID
적용분야 NoSQL RDBMS
일관성 측면 약한 일관성 강한 일관성
중점사항 Availability Commit
시스템 측면 성능 데이터 무결성, 정합성
효율성 측면 쿼리 디자인이 중요 테이블 디자인이 중요
범위 시스템 전체 특성 트랜잭션에 한정

 

6. CAP 이론

  • Consistency, Availability, Partition tolerance 3가지 특성을 모두 만족시킬 수는 없고, 2가지만 선택이 가능하다는 이론
  • 경제학의 삼원불가능성(불가능의 삼각) 정리와 유사한 개념구조 (내용은 완전 다름)