LLM WikiAccess-protected knowledge portal

WIKI

OLTP와 OLAP: 운영 DB와 분석 DB를 나누는 이유

이 세션의 목표 DBA가 데이터 플랫폼을 이해할 때 가장 먼저 나눠야 하는 축은 OLTP와 OLAP다. 둘 다 SQL을 쓰고 테이블을 다루지만 목적이 다르다. OLTP 는 서비스가 지금 발생시키는 거래를 안전하게 처리한다. OLAP 은 쌓인 데이터를 크게 읽고 집계해서 판단을 돕는다. 운영 DB에 무거운 분석 쿼리가 들어와 장애가 나는 대부분의 사고는 이 둘의 목적을 섞어서 생긴다. OLTP 현재 상태를 지키는 시스템 OLTP

경로human/study/content/data-platform/02-oltp-olap.md
카테고리Study
태그#content #data #infra #mysql #olap #oltp #platform #report #study

이 세션의 목표

DBA가 데이터 플랫폼을 이해할 때 가장 먼저 나눠야 하는 축은 OLTP와 OLAP다. 둘 다 SQL을 쓰고 테이블을 다루지만 목적이 다르다.

운영 DB에 무거운 분석 쿼리가 들어와 장애가 나는 대부분의 사고는 이 둘의 목적을 섞어서 생긴다.

OLTP: 현재 상태를 지키는 시스템

OLTP(Online Transaction Processing)는 주문 생성, 결제 승인, 로그인, 재고 차감처럼 작은 트랜잭션을 많이 처리하는 시스템이다.

중요한 기준은 다음과 같다.

기준OLTP에서 중요한 이유
짧은 응답 시간사용자 요청과 직접 연결됨
ACID 트랜잭션돈, 재고, 권한처럼 틀리면 안 되는 상태 관리
동시성 제어여러 사용자가 같은 데이터를 바꿔도 일관성 유지
인덱스 최적화특정 행을 빠르게 찾고 갱신해야 함
백업/복구서비스 장애와 데이터 손실을 막아야 함

OLTP DB의 대표 예시는 MySQL, PostgreSQL, Oracle, SQL Server 같은 RDBMS다.

OLAP: 과거와 패턴을 읽는 시스템

OLAP(Online Analytical Processing)은 대량 데이터를 읽고 집계하는 분석 시스템이다. “지난 6개월간 고객군별 매출 추세”, “취약점 데이터 수집량 변화”, “고객사별 동기화 지연 패턴” 같은 질문에 답한다.

OLAP은 보통 다음 특징을 가진다.

기준OLAP에서 중요한 이유
대량 scan많은 행을 읽고 집계함
columnar storage필요한 컬럼만 읽어 집계 성능을 높임
병렬 처리데이터를 여러 노드/파일로 나눠 처리함
과거 데이터 보관트렌드 분석과 감사에 필요함
비즈니스 정의“활성 사용자”, “정상 수집” 같은 지표 정의가 중요함

왜 운영 DB에서 분석을 하면 위험한가

운영 DB는 작은 트랜잭션을 많이 처리하도록 설계된다. 분석 쿼리는 그 반대다. 긴 시간 동안 많은 행을 읽고, 임시 테이블을 만들고, 정렬·집계를 수행한다.

문제는 다음처럼 나타난다.

분리 패턴

OLTP DB
orders · users · payments
CDC / Batch Export
binlog · snapshot · ETL
Lake / Warehouse
raw · curated · marts
BI / Report
dashboard · audit · ML
OLTP와 OLAP 분리 흐름

데이터를 빼내는 방식

방식장점주의점
Read replica기존 RDBMS 구조를 활용하기 쉬움replica lag, 장시간 쿼리, 운영 DB 부하 전파
Dump/Snapshot단순하고 재현 가능전체 추출 비용, freshness 한계
CDC/binlog변경분만 전달 가능ordering, schema change, idempotency 설계 필요
Application event비즈니스 이벤트 의미가 명확이벤트 누락/중복, DB 상태와 불일치 가능

DBA가 외워야 하는 구분

질문OLTP 답OLAP 답
주요 작업INSERT/UPDATE/DELETE/point SELECTscan/join/group by
데이터 모델정규화 중심비정규화·star schema 가능
성능 기준p95/p99 latency처리량, scan cost, dashboard refresh
장애 영향서비스 장애의사결정 지연, 리포트 오류
대표 저장소MySQL, PostgreSQLBigQuery, Snowflake, Redshift, ClickHouse, Hive/Spark

실무 판단법

운영 DB에 들어온 쿼리를 보고 다음 중 하나라도 해당하면 OLAP 쪽으로 보내는 것을 검토한다.

세션 과제

운영 DB slow query log에서 가장 무거운 SELECT 하나를 골라 다음을 적어보자.

  1. 이 쿼리는 OLTP 요청인가, OLAP 요청인가?
  2. 서비스 응답에 즉시 필요한가?
  3. replica나 warehouse로 옮길 수 있는가?
  4. 옮긴다면 freshness는 몇 분/몇 시간까지 허용되는가?

References