데이터베이스 따라잡기

Database Series를 마치며

meellon 2026. 7. 12. 05:30

이 글의 목적

데이터베이스 따라잡기 본편 24편을 마쳤다. 이 글은 시리즈 전체를 압축·연결하고 다음에 어디로 갈지 짚는 에필로그다.

  • 24편 동안 본 개념을 한 장 지도로 다시 본다
  • DB에서 뻗어 나가는 주제와 블로그 내 다른 시리즈를 연결한다
  • DB 지식이 어떤 직업·역할과 맞닿는지 정리한다
  • 손으로 확인하는 방법읽을거리를 남긴다

1. 24편이 만든 큰 그림

데이터베이스는 한 쿼리가 아니라 저장·인덱스·트랜잭션·복제·운영이 겹친 시스템이다.

Part 핵심 질문 기억할 키워드
0~1 관계형 기초 데이터를 어떻게 모델링하고 질의하나 릴레이션, SQL, 정규화, 쿼리 처리 파이프라인
2 저장·인덱스 디스크에서 어떻게 빨리 찾나 페이지, B+ Tree, EXPLAIN, ACID
3 동시성·복구 동시에 쓰면 뭐가 깨지고 어떻게 복구하나 격리 수준, 2PL, WAL, MVCC, vacuum
4 분산·확장 한 노드를 넘으면 어떻게 나누나 복제 lag, 파티션·샤딩, saga·outbox, NoSQL
5 실무 앱과 DB 사이에서 무엇이 병목인가 connection pool, N+1, cache-aside, CDC
6 운영 장애·성능을 어떻게 진단·유지하나 pg_stat_statements, autovacuum, pruning, Debezium DLQ

한 줄로 묶으면:

스키마·SQL로 질의하고
  페이지·인덱스·플랜으로 읽고
  트랜잭션·WAL·MVCC로 안전히 쓰고
  복제·파티션·CDC로 확장하며
  슬로우 쿼리·vacuum·slot lag로 운영한다

2. 실무에서 다시 만나는 지점

교과서 개념은 EXPLAIN·메트릭·로그로 확인할 때 살아난다.

DB 개념 실무에서 보는 곳 도구·명령
인덱스·플랜 API p99 급등 EXPLAIN (ANALYZE), pg_stat_statements
트랜잭션·락 결제 대기·타임아웃 pg_locks, innodb_trx, lock wait log
MVCC·vacuum 테이블 커졌는데 느림 n_dead_tup, autovacuum, VACUUM
복제 읽기 stale·failover pg_stat_replication, Seconds_Behind_Master
Connection pool 503·pool timeout Hikari metrics, max_connections
ORM N+1 RPS 대비 DB QPS 폭증 query log, fetch join
캐시 stale·stampede Redis hit ratio, TTL
CDC·outbox 이벤트 누락·중복 slot lag, consumer lag, DLQ
파티션 월별 테이블 bloat pg_inherits, DETACH
  • "DB가 느리다" 한 줄 뒤에 플랜·락·I/O·pool·replica lag가 겹쳐 있다 — 시리즈가 준 분해 프레임으로 첫 후보를 나열하는 게 출발점
  • K8s StatefulSet·PVC·read replica routing은 결국 복제·연결·스토리지를 오케스트레이션한 것

3. 이후 확장되는 개념

본 시리즈는 RDBMS 내부·운영 공통 기반까지다. 같은 뿌리에서 가지가 갈라진다.

확장 영역 DB에서 온 질문 더 깊이 가면
분산 DB 샤딩·2PC 한계 Citus, Vitess, Spanner, Cockroach
데이터 플랫폼 CDC·outbox Kafka Connect, Flink, dbt, data mesh
관측성 슬로우 쿼리·lag DB 메트릭 exporter, query insights
플랫폼·K8s pool·복제 Operator, Patroni, cloud RDS
아키텍처 polyglot·일관성 CQRS, event sourcing, cache-aside 설계
보안 접근·감사 row-level security, encryption at rest
OLAP·엔진 인덱스·스캔 columnar store, vector index, query compiler
NewSQL·트렌드 CAP·복제 serverless DB, branching (Neon), AI+RAG store

블로그 내 이어읽기 (권장 순)

  1. 관측성 기초pg_stat·lag를 메트릭·알람으로 (슬로우 쿼리·CDC 편 이후)
  2. ELK · Elastic Cloud — CDC·로그 ingest 파이프라인 심화
  3. 플랫폼 · DevOps · Cloud — RDS·Operator·배포
  4. 소프트웨어 아키텍처 — outbox·CDC·CQRS 설계 (17~19편과 맞물림)
  5. 운영체제 따라잡기 — 락·버퍼·디스크 I/O (6~12편 기반)
  6. 애플리케이션 보안 — SQL injection·AuthN/Z·감사 로그

4. 관심 있게 지켜볼 직업·직업군

DB는 백엔드·SRE·데이터 전반의 공통 언어다. 역할마다 깊이가 다르다.

역할 하는 일 DB 시리즈와의 연결
백엔드 엔지니어 API·도메인·ORM SQL, 트랜잭션, N+1, pool
DBA / 데이터베이스 엔지니어 튜닝·백업·복제 인덱스, vacuum, replication, 파티션
SRE 가용성·용량·장애 슬로우 쿼리, failover, slot lag
데이터 엔지니어 ETL·CDC·웨어하우스 WAL CDC, schema registry, idempotent sink
플랫폼 managed DB·Operator connection limit, read replica routing
아키텍트 저장소·일관성 설계 샤딩, saga, cache-aside, polyglot
성능 엔지니어 병목·프로파일링 EXPLAIN, buffer pool, bloat
보안 접근·감사·암호화 least privilege, audit log

지켜볼 만한 방향 (2020s~)

  • Serverless / branching DB — Neon, PlanetScale — dev/prod 분리·scale-to-zero
  • HTAP / columnar — ClickHouse, DuckDB — OLTP 옆 분석
  • CDC as default — Debezium·logical replication이 이벤트 버스 표준 축
  • AI + RAG storage — pgvector, embedding index, hybrid search
  • Automated tuning — query store, index advisor (보조 도구, EXPLAIN은 여전히 필수)

직업을 고를 때 한 분야만 파지 말고, 인접 칸을 같이 보는 게 유리하다. 백엔드는 EXPLAIN·트랜잭션을, DBA는 앱·CDC를, 데이터 엔지니어는 운영·vacuum을 어느 정도 알면 시너지가 난다.

5. 앞으로의 학습 루틴

개념만으로는 부족하다. 짧은 루프를 권한다.

주기 활동
매주 한 쿼리를 플랜으로 분해 EXPLAIN ANALYZE — Seq Scan? lock?
매월 메트릭 하나 깊게 pg_stat_statements, replication lag
분기 작은 실험 인덱스 추가 전후, vacuum 전후 dead_pct
연 1회 교재·문서 정돈 Silberschatz 한 챕터, DDIA Part II

추가 읽을거리

수준 자료
입문·복습 Database System Concepts 7/E (본 시리즈 기준)
분산·스트리밍 Designing Data-Intensive Applications — Kleppmann
PostgreSQL postgresql.org docs — WAL, MVCC, partitioning
InnoDB MySQL 8.0 InnoDB docs — isolation, purge
실습 EXPLAIN, pg_stat_statements, local Debezium quickstart
트렌드 Debezium blog, PGCon·Percona live slides

6. 시리즈 색인 (24편 요약)

필요할 때 해당 편으로 바로 점프한다.

# 제목 거기서 답하는 질문
1 오리엔테이션 DBMS가 왜 필요한가
2~5 관계형·SQL·정규화·쿼리 처리 모델링과 질의
6~8 디스크·인덱스·실행 계획 어떻게 빨리 읽나
9~13 ACID·동시성·WAL·MVCC 어떻게 안전히 쓰나
14~17 복제·파티션·분산 TX·NoSQL 어떻게 확장하나
18~20 Pool·캐시·CDC 개요 앱과 DB 사이
21~24 슬로우 쿼리·vacuum·파티션 ops·CDC 심화 어떻게 운영하나

7. 마치며

처음에는 SELECT * FROM users WHERE id = ? 한 줄이면 충분했을지 모른다. 시리즈를 지나며 그 한 줄 아래에 파서·옵티마이저·B+ Tree·버퍼 풀·트랜잭션·WAL·MVCC·복제 슬롯이 겹겹이 있다는 걸 봤다.

DB를 안다는 건 모든 SQL을 외운다는 뜻이 아니다. 장애·설계 대화에서 "그건 플랜 문제다 / vacuum이다 / replica lag다 / pool 고갈다"위치를 잡고, 다음 명령을 고를 수 있다는 뜻에 가깝다.


해당 내용은 Database System Concepts, 7/E (Avraham Silberschatz, Henry F. Korth, S. Sudarshan), Designing Data-Intensive Applications (Martin Kleppmann) 및 시리즈 1~24편을 바탕으로 정리했습니다.

'데이터베이스 따라잡기' 카테고리의 다른 글

CDC 심화  (0) 2026.07.11
파티션 운영  (0) 2026.07.10
Vacuum과 유지보수  (0) 2026.07.09
슬로우 쿼리 진단  (0) 2026.07.08
CDC와 이벤트  (0) 2026.07.07