데이터베이스 관계도
이 관계도는 전체 토픽의 구조와 연결 관계를 보여줍니다. 학습 전에 전체 흐름을 파악하세요.
mindmap
root((데이터베이스<br/>197개 토픽))
데이터베이스 기초
기본 개념
데이터베이스
DBMS
스키마
데이터 독립성
데이터 모델
관계형 모델
객체관계형 모델
데이터 모델링
개념적 모델링
개념적 데이터 모델링
ERD
엔터티
속성
관계
식별자
논리적 모델링
논리적 데이터 모델링
슈퍼/서브타입 변환 전략
물리적 모델링
물리적 데이터 모델링
정규화
정규화 기본
정규화
함수 종속성
이상현상
정규형
제1정규형
제2정규형
제3정규형
BCNF
제4정규형
제5정규형
역정규화
역정규화
테이블 병합
테이블 분할
파생 컬럼 추가
슈퍼/서브타입 통합 전략
무결성
무결성
참조 무결성
트랜잭션
트랜잭션 기본
트랜잭션
ACID 속성
원자성
일관성
고립성
지속성
격리 수준
격리 수준
Dirty Read
Non-Repeatable Read
Phantom Read
동시성 제어
동시성 제어 기본
동시성 제어
락킹
2PL
교착상태
Lock Escalation
MVCC
MVCC
MVCC 구현
Snapshot Isolation
락 유형
갭 락
넥스트 키 락
동시성 전략
낙관적 동시성 제어
비관적 동시성 제어
교착상태 해결
Wait-Die / Wound-Wait
Wait-for Graph
병행제어
병행제어 문제점
Phantom Read 해결
회복
회복
WAL
체크포인트
ARIES 알고리즘
섀도 페이징
Redo/Undo 로그
Vacuum
SQL 및 데이터베이스 객체
SQL 기본
관계 대수
SQL 분류
정적 SQL vs 동적 SQL
데이터베이스 객체
뷰
저장 프로시저
트리거
커서
인덱스
인덱스 기본
인덱스
B-Tree 인덱스
B+Tree 인덱스
특수 인덱스
Hash 인덱스
확장성 해싱
Bitmap 인덱스
함수 기반 인덱스
Full-Text 인덱스
다차원 색인 구조
적응형 인덱싱
인덱스 구조
클러스터드 인덱스
논클러스터드 인덱스
복합 인덱스
커버링 인덱스
쿼리 최적화
최적화 기본
쿼리 최적화
옵티마이저
실행계획
테이블 스캔
인덱스 스캔
통계정보
힌트
비용 기반 최적화
히스토그램
적응형 쿼리
조인
조인
조인 알고리즘
Nested Loop Join
Hash Join
Sort Merge Join
Semi Join / Anti Join
서브쿼리
서브쿼리 최적화
뷰 최적화
물화 뷰
증분 유지보수
파티셔닝
파티셔닝 기본
파티셔닝
Range 파티셔닝
List 파티셔닝
Hash 파티셔닝
Composite 파티셔닝
파티션 프루닝
파티셔닝 전략
샤딩
샤딩
샤드 키 선정
복제/클러스터링
복제
복제
동기 복제
비동기 복제
Quorum Replication
클러스터링
클러스터링
페일오버
NoSQL
NoSQL 기본
NoSQL
CAP 이론
PACELC 이론
BASE 특성
최종 일관성
NoSQL 유형
Key-Value Store
Document Store
Column-Family Store
그래프 데이터베이스
데이터 웨어하우스
DW 기본
데이터 웨어하우스
OLTP vs OLAP
OLAP 큐브
스키마
스타 스키마
스노우플레이크 스키마
팩트 테이블
디멘션 테이블
SCD
ETL
ETL / ELT
데이터 레이크
데이터 레이크
레이크하우스
데이터 품질
데이터 품질
데이터 프로파일링
데이터 클렌징
MDM
데이터 품질 관리
데이터 거버넌스
데이터 거버넌스
메타데이터 관리
데이터 카탈로그
데이터 리니지
데이터 아키텍처
데이터 패브릭
데이터 메시
빅데이터
빅데이터 기본
빅데이터
Hadoop 에코시스템
Hive / HBase
HDFS
Spark
Apache 빅데이터 프레임워크 심화
스트림 처리
스트림 처리
CDC
데이터 마이닝
데이터 마이닝 방법론
텍스트 마이닝
토픽 모델링
특수 데이터베이스
벡터 데이터베이스
시계열 데이터베이스
인메모리 데이터베이스
Graph Database
Columnar Storage
공간 데이터베이스
캐싱
캐싱 전략
캐싱 패턴 상세
분산 트랜잭션
분산 트랜잭션
2PC
Saga 패턴
Saga Choreography vs Orchestration
분산 트랜잭션 심화
분산DB 투명성
Vector Clock / Lamport Timestamp
데이터베이스 보안
데이터베이스 보안
데이터 암호화
데이터 마스킹
감사 로깅
백업/복구
데이터베이스 백업
백업/복구 전략
백업 전략 상세
데이터 마이그레이션
PITR
클라우드 데이터베이스
클라우드 데이터베이스
서버리스 데이터베이스
NewSQL
NewSQL
CockroachDB
TiDB
Vitess
데이터 도구
Debezium
Presto/Trino
DuckDB
DB 연결/실행
Database Connection Pool
Read Replica
Multi-tenancy Database주요 카테고리별 토픽 수
| 카테고리 | 토픽 수 | 주요 기술 |
|---|---|---|
| 데이터베이스 기초 | 7개 | 데이터베이스, DBMS, 스키마, 데이터 모델, 관계형 모델, 객체관계형 모델 |
| 데이터 모델링 | 9개 | ERD, 엔터티, 속성, 관계, 식별자, 슈퍼/서브타입 변환 전략 |
| 정규화 | 13개 | 1NF~5NF, BCNF, 역정규화, 슈퍼/서브타입 통합 전략 |
| 무결성 | 2개 | 무결성, 참조 무결성 |
| 트랜잭션 | 10개 | ACID, 격리 수준, Dirty Read, Phantom Read |
| 동시성 제어 | 14개 | 락킹, 2PL, MVCC, Snapshot Isolation, Lock Escalation, Wait-Die/Wound-Wait, Wait-for Graph |
| 병행제어 | 2개 | 병행제어 문제점, Phantom Read 해결 |
| 회복 | 7개 | 회복, WAL, 체크포인트, ARIES, 섀도 페이징, Redo/Undo 로그, Vacuum |
| SQL 및 DB 객체 | 7개 | 관계 대수, SQL 분류, 뷰, 저장 프로시저, 트리거, 커서, 정적/동적 SQL |
| 인덱스 | 14개 | B-Tree, Hash, Bitmap, Full-Text, 확장성 해싱, 다차원 색인, 적응형 인덱싱 |
| 쿼리 최적화 | 19개 | 옵티마이저, 실행계획, 조인, 힌트, Semi/Anti Join, 물화 뷰 |
| 파티셔닝 | 9개 | Range, List, Hash, 샤딩, 파티셔닝 전략 |
| 복제/클러스터링 | 6개 | 동기/비동기 복제, Quorum Replication, 페일오버 |
| NoSQL | 9개 | CAP 이론, Key-Value, Document, 그래프 DB |
| 데이터 웨어하우스 | 9개 | OLAP, 스타 스키마, ETL, SCD |
| 데이터 레이크 | 2개 | 데이터 레이크, 레이크하우스 |
| 데이터 품질 | 5개 | 데이터 품질, 프로파일링, 클렌징, MDM, 데이터 품질 관리 |
| 데이터 거버넌스 | 4개 | 메타데이터, 데이터 카탈로그, 리니지 |
| 데이터 아키텍처 | 2개 | 데이터 패브릭, 데이터 메시 |
| 빅데이터 | 8개 | Hadoop, Hive/HBase, HDFS, Spark, 스트림 처리, CDC, Apache 프레임워크 심화 |
| 데이터 마이닝 | 3개 | 데이터 마이닝 방법론, 텍스트 마이닝, 토픽 모델링 |
| 특수 데이터베이스 | 6개 | 벡터, 시계열, 인메모리, 그래프, Columnar, 공간 데이터베이스 |
| 캐싱 | 2개 | 캐싱 전략, 캐싱 패턴 상세 |
| 분산 트랜잭션 | 7개 | 2PC, Saga 패턴, Saga Choreography/Orchestration, 분산DB 투명성, Vector Clock |
| 보안 | 4개 | 암호화, 마스킹, 감사 로깅 |
| 백업/복구 | 5개 | 백업, 복구 전략, 백업 전략 상세, 마이그레이션, PITR |
| 클라우드 | 2개 | 클라우드 DB, 서버리스 DB |
| NewSQL | 4개 | NewSQL, CockroachDB, TiDB, Vitess |
| 데이터 도구 | 3개 | Debezium, Presto/Trino, DuckDB |
| DB 연결/실행 | 3개 | Connection Pool, Read Replica, Multi-tenancy |
총 197개 토픽
핵심 연관 관계
데이터 모델링 단계
개념적 모델링 (ERD, 엔터티, 관계)
↓
논리적 모델링 (테이블, 컬럼, 관계, 슈퍼/서브타입 변환)
↓
물리적 모델링 (저장구조, 인덱스, 파티션)정규화 진화
비정규형 (중복, 이상현상)
↓
1NF (원자값)
↓
2NF (부분 함수 종속 제거)
↓
3NF (이행 함수 종속 제거)
↓
BCNF (결정자 후보키)
↓
4NF/5NF (다치 종속, 조인 종속)
성능 최적화
↓
역정규화 (의도적 중복)
├─ 테이블 병합/분할
├─ 파생 컬럼 추가
└─ 슈퍼/서브타입 통합ACID vs BASE
RDBMS (ACID) ├─ Atomicity (원자성) ├─ Consistency (일관성) ├─ Isolation (고립성) └─ Durability (지속성) NoSQL (BASE) ├─ Basically Available (기본적 가용성) ├─ Soft state (유연한 상태) └─ Eventually consistent (최종 일관성)
격리 수준 (Isolation Level)
Read Uncommitted (가장 낮음) ↓ Dirty Read 발생 Read Committed ↓ Non-Repeatable Read 발생 Repeatable Read ↓ Phantom Read 발생 Serializable (가장 높음) ↓ 성능 저하 Snapshot Isolation └─ MVCC 기반, Serializable에 근접한 성능
동시성 제어 메커니즘
비관적 동시성 제어
└─ 락킹 (Locking)
├─ Shared Lock (읽기)
├─ Exclusive Lock (쓰기)
├─ 2PL (Two-Phase Locking)
├─ Lock Escalation (잠금 상승)
├─ 갭 락 / 넥스트 키 락
└─ 교착상태 → Wait-Die / Wound-Wait / Wait-for Graph
낙관적 동시성 제어
└─ MVCC (Multi-Version Concurrency Control)
└─ Snapshot Isolation병행제어 문제점
갱신 분실 (Lost Update) 더티 읽기 (Dirty Read) 비반복 읽기 (Non-Repeatable Read) 팬텀 읽기 (Phantom Read) └─ 해결: 갭 락, 넥스트 키 락, Serializable
인덱스 구조
B-Tree 계열 ├─ B-Tree 인덱스 (범위 검색) └─ B+Tree 인덱스 (리프 노드 연결) 특수 인덱스 ├─ Hash 인덱스 (등가 검색) ├─ 확장성 해싱 (동적 해시) ├─ Bitmap 인덱스 (카디널리티 낮은 컬럼) ├─ Full-Text 인덱스 (전문 검색) ├─ 다차원 색인 구조 (R-Tree, KD-Tree) └─ 적응형 인덱싱 (워크로드 기반 자동 조정) 인덱스 조직 ├─ 클러스터드 (테이블 정렬) └─ 논클러스터드 (별도 구조)
SQL 체계
관계 대수 (이론적 기반)
↓
SQL 분류
├─ DDL (CREATE, ALTER, DROP)
├─ DML (SELECT, INSERT, UPDATE, DELETE)
├─ DCL (GRANT, REVOKE)
└─ TCL (COMMIT, ROLLBACK)
데이터베이스 객체
├─ 뷰 (가상 테이블)
├─ 저장 프로시저 (서버측 로직)
├─ 트리거 (이벤트 기반 자동 실행)
└─ 커서 (행 단위 처리)
실행 방식
├─ 정적 SQL (컴파일 타임)
└─ 동적 SQL (런타임)조인 알고리즘
Nested Loop Join ├─ 작은 테이블 × 큰 테이블 └─ 인덱스 있을 때 효율적 Hash Join ├─ 해시 테이블 생성 └─ 대용량 등가 조인 Sort Merge Join ├─ 정렬 후 병합 └─ 범위 조인, 정렬된 데이터 Semi Join / Anti Join ├─ Semi Join (EXISTS) └─ Anti Join (NOT EXISTS)
파티셔닝 전략
수직 파티셔닝 └─ 컬럼 분할 (테이블 분할) 수평 파티셔닝 ├─ Range (범위) ├─ List (값 목록) ├─ Hash (해시) └─ Composite (복합) 샤딩 └─ 물리적 분산 (여러 서버)
CAP 이론
Consistency (일관성) Availability (가용성) Partition Tolerance (분할 내성) → 3가지 중 2가지만 선택 가능 RDBMS: CA (일관성 + 가용성) NoSQL: AP (가용성 + 분할 내성) PACELC 이론 └─ CAP 확장: Partition 시 AC, Else LC 트레이드오프
NoSQL 유형
Key-Value Store └─ Redis, DynamoDB (빠른 조회) Document Store └─ MongoDB, Couchbase (JSON 문서) Column-Family Store └─ Cassandra, HBase (대용량 쓰기) Graph Database └─ Neo4j, ArangoDB (관계 분석)
데이터 웨어하우스 아키텍처
OLTP (운영 DB)
↓
ETL (추출/변환/적재)
↓
DW (데이터 웨어하우스)
↓
OLAP Cube (다차원 분석)
↓
BI (리포팅/대시보드)스키마 설계
정규화된 스키마
↓
스노우플레이크 스키마 (정규화)
↓
스타 스키마 (역정규화)
├─ 팩트 테이블 (측정값)
└─ 디멘션 테이블 (차원)데이터 레이크 진화
데이터 웨어하우스 (구조화된 데이터)
↓
데이터 레이크 (원시 데이터, 모든 형식)
↓
레이크하우스 (DW + Lake, Delta Lake)데이터 아키텍처 패러다임
중앙집중 ETL → 데이터 레이크 (2010s)
↓
데이터 패브릭 (자동화된 통합, 메타데이터 기반)
↓
데이터 메시 (도메인 소유권, Data as a Product)빅데이터 생태계
저장: HDFS (분산 파일 시스템)
↓
처리: MapReduce → Spark (인메모리)
↓
SQL on Hadoop: Hive / HBase
↓
분석: Presto/Trino, DuckDB
↓
스트림: Kafka, Flink (실시간 처리)
↓
CDC: Debezium (변경 데이터 캡처)데이터 마이닝
방법론 ├─ SEMMA (SAS 기반) ├─ KDD (지식 발견) └─ CRISP-DM (산업 표준) 텍스트 마이닝 └─ 토픽 모델링 (LDA 등)
회복 메커니즘
WAL (Write-Ahead Logging)
↓
Redo/Undo 로그
├─ Redo: 커밋된 트랜잭션 재실행
└─ Undo: 미완료 트랜잭션 취소
↓
체크포인트 (회복 시점)
↓
ARIES 알고리즘 (Analysis-Redo-Undo)
↓
PITR (Point-in-Time Recovery)
Vacuum (PostgreSQL)
└─ Dead Tuple 정리, MVCC 부산물 관리분산 트랜잭션
2PC (Two-Phase Commit) ├─ Prepare Phase └─ Commit Phase → 블로킹 문제 Saga 패턴 ├─ Choreography (이벤트 기반) └─ Orchestration (중앙 조정) → 보상 트랜잭션 Percolator 모델 └─ 분산 트랜잭션 심화 (Google) 분산DB 투명성 ├─ 위치 투명성 ├─ 분할 투명성 └─ 복제 투명성 Quorum Replication └─ W + R > N (일관성 보장) Vector Clock / Lamport Timestamp └─ 분산 시스템 인과 관계 추적
NewSQL
RDBMS (확장성 부족)
+
NoSQL (일관성 부족)
↓
NewSQL (확장성 + ACID)
├─ CockroachDB (분산 SQL)
├─ TiDB (MySQL 호환)
└─ Vitess (MySQL 샤딩)백업/복구 전략
백업 유형 ├─ Full Backup (전체) ├─ Incremental Backup (증분) └─ Differential Backup (차등) 복구 방식 ├─ 백업/복구 전략 ├─ PITR (시점 복구) └─ 데이터 마이그레이션
학습 순서 추천
1단계: 기초 (필수)
1. 데이터베이스, DBMS
2. 스키마, 데이터 모델
3. 관계형 모델, 객체관계형 모델
4. ERD (엔터티, 속성, 관계)
2단계: SQL 및 관계 대수
5. 관계 대수
6. SQL 분류 (DDL/DML/DCL/TCL)
7. 뷰, 저장 프로시저, 트리거, 커서
3단계: 정규화
8. 정규화 개념, 함수 종속성
9. 1NF, 2NF, 3NF
10. BCNF
11. 역정규화, 슈퍼/서브타입 통합
4단계: 트랜잭션
12. 트랜잭션, ACID
13. 격리 수준
14. Dirty Read, Non-Repeatable Read, Phantom Read
5단계: 동시성 제어
15. 락킹, 2PL, Lock Escalation
16. MVCC, Snapshot Isolation
17. 교착상태, Wait-Die/Wound-Wait
18. 병행제어 문제점
6단계: 회복
19. WAL, Redo/Undo 로그
20. 체크포인트, ARIES
21. PITR, Vacuum
7단계: 인덱스
22. B-Tree, B+Tree 인덱스
23. Hash, Bitmap, Full-Text 인덱스
24. 클러스터드/논클러스터드 인덱스
25. 다차원 색인, 적응형 인덱싱
8단계: 쿼리 최적화
26. 옵티마이저, 실행계획
27. 조인 (Nested Loop, Hash, Sort Merge, Semi/Anti Join)
28. 인덱스 스캔 vs 테이블 스캔
9단계: 파티셔닝/샤딩
29. Range, List, Hash 파티셔닝
30. 샤딩
10단계: NoSQL
31. CAP 이론, PACELC 이론
32. Key-Value, Document, Column-Family, Graph
11단계: 데이터 웨어하우스
33. OLTP vs OLAP
34. 스타 스키마, 스노우플레이크 스키마
35. ETL
12단계: 데이터 마이닝
36. 데이터 마이닝 방법론 (SEMMA, KDD, CRISP-DM)
37. 텍스트 마이닝, 토픽 모델링
13단계: 고급 주제
38. 데이터 레이크, 레이크하우스
39. 빅데이터 (Hadoop, Hive/HBase, Spark)
40. 분산 트랜잭션 (2PC, Saga, Percolator)
41. 분산DB 투명성, Vector Clock
42. NewSQL
43. 공간 데이터베이스, 벡터 데이터베이스
시험 출제 포인트
고빈도 주제
- •정규화: 1NF~3NF, BCNF, 함수 종속성
- •ACID: 각 속성 의미, 중요성
- •격리 수준: Read Uncommitted~Serializable, 이상 현상
- •인덱스: B-Tree 구조, 클러스터드/논클러스터드 차이
- •조인: Nested Loop vs Hash vs Sort Merge
- •CAP 이론: 일관성/가용성/분할내성 트레이드오프
- •관계 대수: 셀렉트, 프로젝트, 조인, 디비전 연산
- •SQL 분류: DDL/DML/DCL/TCL 구분
중요 개념
- •ERD: 엔터티, 속성, 관계, 식별자
- •2PL: Growing/Shrinking Phase
- •MVCC: 버전 관리, 스냅샷 격리 (Snapshot Isolation)
- •실행계획: 비용 기반 최적화
- •파티셔닝: Range, List, Hash
- •샤딩: 샤드 키 선정 기준
- •복제: 동기/비동기 복제 차이, Quorum Replication
- •OLTP vs OLAP: 특성, 사용 사례
- •뷰/저장 프로시저/트리거: 정의, 용도, 차이점
- •병행제어 문제점: 갱신 분실, 더티 읽기, 비반복/팬텀 읽기
고급 주제
- •역정규화: 성능 최적화 전략, 슈퍼/서브타입 통합
- •커버링 인덱스: 인덱스만으로 쿼리 처리
- •파티션 프루닝: 불필요한 파티션 제외
- •Saga 패턴: 마이크로서비스 트랜잭션, Choreography vs Orchestration
- •레이크하우스: DW와 레이크 장점 결합
- •CDC: 변경 데이터 캡처
- •NewSQL: ACID + 확장성
- •Lock Escalation: 잠금 상승 메커니즘
- •Redo/Undo 로그: 회복 기법의 핵심
- •PITR: 시점 복구
- •분산DB 투명성: 위치/분할/복제 투명성
- •데이터 마이닝: SEMMA, KDD, CRISP-DM 방법론
데이터 거버넌스
- •메타데이터 관리: 데이터 사전
- •데이터 리니지: 데이터 흐름 추적
- •데이터 품질: 프로파일링, 클렌징, DQM
마인드맵 활용 팁:
- •정규화는 1NF→2NF→3NF 순서로 단계적 학습
- •ACID와 격리 수준은 트레이드오프 관점에서 이해
- •인덱스는 B-Tree 구조 그림으로 암기
- •CAP 이론은 NoSQL 선택 기준으로 활용
- •조인 알고리즘은 데이터 크기/인덱스 유무로 비교
- •데이터 웨어하우스는 스타 스키마 중심으로 학습
- •분산 시스템은 2PC vs Saga 패턴 비교
- •관계 대수는 SQL과 매핑하여 이해
- •병행제어 문제점은 격리 수준과 연계하여 학습
- •회복 기법은 WAL → Redo/Undo → ARIES 순서로 학습