티스토리 뷰

1. 비관계형 데이터베이스(NoSQL)


1.1 정의

- 데이터를 표 형태 저장X, 비정형, 비관계로 정의한 시스템


1.2 구성(비정형 + 비관계 + Schemaless)

  • 트리 구조의 데이터로 그 자체로 트리 기반의 데이터 간 종속성을 표현
    1) 복잡한(다차원) 데이터의 저장을 위해 Key-Value 나 JSON같은 비정형 형태로 저장
    2) 한 데이터에 수많은 데이터가 들어가 있기 때문에 비관계(관계가 X)
    3) 데이터를 K-V로 적재

  • 방대한 트래픽 및 데이터양의 처리 가능
    - 수평적 확장에 유리한 분산 저장과 효율적인 쿼리

  • 데이터 무결성 제약이 약함(신뢰성이 적음) 

1.3 목적

:: 빅데이터의 커버를 위한 무한 확장 가능한 DB의 역할


1.4 NoSQL의 종류

:: 정렬화된 2차원 데이터의 구성을 통해 쿼리만 다른 RDBMS와는 달리
:: NoSQL의 경우, 트리 구조의 데이터 구성을 갖기에 데이터의 형태에 따라 분류

유형 특징 예시
Key-Value DB 데이터 구조) 키-값 쌍 형식 저장
특징) 빠른 값 검색 가능
장점) 간단하고 빠른 데이터 접근
단점) 제한된 쿼리 기능, 관계 표현 어려움
Redis,
DynamoDB
Document DB 데이터 구조) JSON, BSON, XML 형식 저장
특징) 각 데이터는 document 단위 저장, 구조가 다를 수 있음
장점) 유연한 스키마 제공, 다양한 데이터 형식 저장 가능
단점) 데이터 간 관계를 표현하기 어려움
MongoDB,
CouchDB
(CouchBase)
Column DB 데이터 구조) 열 단위 저장(Column-Oriented, Columnar 혹은 C-Store).
특징) 대용량 데이터 빠른 쓰기 및 읽기, 높은 확장성
장점) 데이터 분석과 집계(Aggregation)에 최적화, 빠른 읽기 성능
단점) 행 단위 조회에서 불리함(수평적 SELECT *) -> 행단위 조회가 많을 경우 RDBMS
Cassandra,
HBase
Graph DB 데이터 구조) 그래프 형태로 저장 (노드, 엣지, 속성)
특징) 테이블 간의 관계가 아닌, 데이터 간의 관계 중심 데이터 모델링
장점) 관계 기반 탐색 용이
단점) 관계를 제외한 데이터 저장에 비효율적일 수 있음
Neo4j
더보기

1. k-v DB 

Redis 로 저장할 수 있는 모든 데이터 타입 및 주요 타입 : String, Hash, List, Set, Sorted Set 등

 

7 Redis Data Types: Commands & Data Structures Guide 2024

In this guide, discover the 7 key Redis data types and learn about the various commands and data structures to optimize your Redis database.

estuary.dev

기본 형태 - 출처 : Key-Value NoSQL Database / 출처 : Redis representation of temporal data

2. Document DB

3. Column DB(Column-Oriented)

  • Aggregation 데이터 분석 쿼리 : 그룹/서브그룹 데이터에서 단일 데이터를 계산해내는것
    1. 그룹/서브그룹 데이터 : GROUP BY, HAVING
    2. 단일 데이터를 계산 : COUNT, SUM, AVG, MIN, MAX
  • Scalability 높은 확장성 : Large Cluster 내 사실상 무한으로 확장가능
  • Massive Parallel Processing 빅데이터 (병렬처리) 쿼리

=> Aggregation 필요하면 Column DB 사용 / Row 단위 조회가 많으면 RDBMS 사용


2. 특징

1. 분산형 아키텍처(High Scalability + Availability)

2. 비관계형 데이터 모델 - 유연한 스키마

3. ACID가 아닌 BASE 모델 - 트랜잭션 미지원 

4. Eventual Consistency(낙관적 진행 - Optimistic Lock)


2.1 BASE

출처 : ASAC 7기 수업자료

:: 트랜잭션을 포기하여 데이터의 무결성을 희생(데이터의 변조가 일어날 수 있음을 의미) 

:: 확장성 및 가용성을 획득

항목 내용
1. Basically Available / 대체로 사용 가능 서비스는 제공되지만, 일부 데이터는 불완전 or 오래된 상태
2. Soft State / 소프트 상태 시스템이 어떤 시점에서 정확하게 일관된 상태를 유지하지 않을 수 있음
3. Eventually Consistent / 결국 일관성, 한잔해~ 데이터 변경에 대해 결국 일관된 상태가 되긴 함. 근데 즉시성 X 
  • ACID 에서의 Guaranteed Consistency 보다 훨씬 느슨
    - UPDATE, DELETE, INSERT 시 순간적(일시적)으로 일관성이 깨지는 상태가 존재
    - 분산 시스템 특성 상, 일부에선 최신 상태를 가지나 나머지 일부에선 아님
    - 일정시간 후에는 전체 분산 시스템이 동기화되어 일관성이 있는 상태가 되는 성질
    • 0 + 1 = 1 (Write 이전) → 1 + 1 = 1 (Write 직후, Sync 이전) → 1 + 1 = 2 (Sync 완료)

2.2 Eventual Consistency / Optimistic Lock

항목 내용
Eventual Consistency :: 즉시 일관성 보장 X, 시간이 지나면 결국 시스템의 일관성 도달 
:: 비일관성(Inconsistent) 상태가 잠시 동안 존재할 수 있음을 의미
Optimistic Lock
/
Optimistic Concurrency Control(OCC)
/ Non-locking Concurrency Control
:: SW적으로 데이터의 일관선성을 관리 
:: Lock사용 X, 작업 진행 후, 충돌 발생시 롤백 

 


참고

ASAC 수업자료

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함