티스토리 뷰
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


2. Document DB
3. Column DB(Column-Oriented)
- Aggregation 데이터 분석 쿼리 : 그룹/서브그룹 데이터에서 단일 데이터를 계산해내는것
- 그룹/서브그룹 데이터 : GROUP BY, HAVING
- 단일 데이터를 계산 : 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

:: 트랜잭션을 포기하여 데이터의 무결성을 희생(데이터의 변조가 일어날 수 있음을 의미)
:: 확장성 및 가용성을 획득
항목 | 내용 |
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 수업자료
'정리용 > DB' 카테고리의 다른 글
[DB 기초] 3-1. DB 동시성 제어 기법(Pessimistic / Optimistic Lock) (0) | 2025.03.11 |
---|---|
[DB 기초] 3. DB 동시성 제어(Concurrency Control) (0) | 2025.03.11 |
[DB 기초] 2. DB 확장 방법 (0) | 2025.03.11 |
[DB 기초] 1-1. 관계형 데이터베이스(RDBMS) (0) | 2025.03.10 |
[DB 기초] 1. RDBMS, NoSQL (0) | 2025.03.10 |
- Total
- Today
- Yesterday
- acac
- ssh
- useRef
- memo
- useContext
- acas#acas7기
- git
- react
- useMemo
- asac7#asac
- useState
- ASAC
- useReducer
- asac7기
- useEffect
- useCallback
- useLayoutEffect
- asac7
- Nginx
- asac#asac7기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |