OLTP (Online Transaction Processing) vs OLAP (Online Analytical Processing)
주문 상태를 조회하는 API와 연간 매출 보고서는 같은 주문 데이터를 사용하지만, 읽는 범위와 성능 목표가 다르다.
- OLTP: 개별 업무 트랜잭션을 처리
- OLAP: 많은 데이터를 집계해 추세와 현황을 분석하는 방식
접근 패턴의 차이
섹션 제목: “접근 패턴의 차이”다음 예시는 주문당 한 행을 저장하며, 주문 금액의 통화가 같다고 가정한다.
-- OLTP: 주문 한 건의 현재 상태 조회SELECT order_id, status, order_amountFROM ordersWHERE order_id = 1001;
-- OLAP: 연간 주문 금액을 고객별로 집계SELECT customer_id, SUM(order_amount) AS total_order_amountFROM ordersWHERE ordered_at >= '2026-01-01' AND ordered_at < '2027-01-01'GROUP BY customer_id;첫 쿼리는 인덱스로 필요한 주문을 찾을 수 있다. 두 번째 쿼리는 대상 기간의 주문을 읽고 고객별로 합산해야 한다.
| 비교 기준 | OLTP | OLAP |
|---|---|---|
| 주요 작업 | 주문 생성·결제·상태 조회 | 기간별 매출·상품별 판매량 분석 |
| 접근 범위 | 소수 행의 조회·변경 | 많은 행의 스캔·집계 |
| 모델의 경향 | 갱신 이상을 줄이는 정규화 | 집계하기 쉬운 사실·차원 모델 |
| 성능 목표 | 짧은 응답 시간과 높은 동시 처리량 | 대량 집계의 시간과 처리 비용 |
OLTP에도 읽기가 많고 OLAP에도 데이터 갱신이 있으며, 읽기·쓰기 비율이나 SQL 사용 여부로 구분하지 않는다.
행 지향과 열 지향 저장
섹션 제목: “행 지향과 열 지향 저장”SQL에서 보이는 표는 같지만, 디스크에서 어떤 값을 모아 저장하는지가 다르다.
| order_id | status | order_amount | shipping_address |
|---|---|---|---|
| 1001 | PAID | 10000 | 서울 |
| 1002 | PAID | 20000 | 부산 |
| 1003 | PAID | 15000 | 대전 |
아래는 값이 묶이는 방식을 단순화한 그림으로, 실제 디스크 I/O는 행 하나가 아니라 페이지·블록 단위로 수행된다.
행 지향: 한 주문의 컬럼들을 함께 저장[1001 | PAID | 10000 | 서울][1002 | PAID | 20000 | 부산][1003 | PAID | 15000 | 대전]
열 지향: 같은 컬럼의 값을 함께 저장order_id [1001 | 1002 | 1003 ]status [PAID | PAID | PAID ]order_amount [10000 | 20000 | 15000]shipping_address [서울 | 부산 | 대전 ]이 차이는 조회에 필요한 값이 어디에 모여 있는지로 이어진다.
| 조회 | 행 지향 | 열 지향 |
|---|---|---|
| 주문 1001의 상태·금액·배송지 | 인덱스로 주문 위치를 찾으면 여러 속성이 함께 있음 | 해당 주문의 값을 각 컬럼에서 가져와 결합 |
전체 주문 금액 합계 SUM(order_amount) | 테이블 스캔 시 금액과 함께 저장된 상태·배송지도 읽음 | 금액 컬럼의 블록만 읽어 10000 + 20000 + 15000 = 45000 계산 |
- 소수 주문의 여러 속성을 다루는 API에는 행 지향이, 많은 주문의 일부 컬럼만 집계하는 분석에는 열 지향이 유리
- 열 지향은 같은 자료형·반복 값을 모으므로 컬럼 특성에 맞춘 압축도 적용하기 쉬움
운영 DB와 분석 저장소의 분리 기준
섹션 제목: “운영 DB와 분석 저장소의 분리 기준”운영 DB에서 넓은 범위의 집계를 실행하면 주문 API와 CPU·I/O·메모리를 함께 사용하기 때문에, 자원 경합으로 API 응답이 느려질 수 있다.
| 선택 | 적용 조건 | 감수할 비용 |
|---|---|---|
| 운영 DB의 인덱스·집계 테이블 | 작은 통계이며 운영 요청에 미치는 영향이 작음 | 집계 갱신 비용과 운영 자원 공유 |
| 읽기 레플리카 | 같은 스키마로 충분하고 조회 부하 분산이 필요함 | 복제 지연, 레플리카 자원 관리 |
| 별도 분석 저장소 | 대량 집계, 여러 원천 통합, 과거 이력 보관이 필요함 | 데이터 적재 지연과 파이프라인 운영 비용 |
관련 문서
섹션 제목: “관련 문서”- Data Warehousing and ETL: 분석용 데이터의 변환·적재와 테이블 구성
- Replication Lag and Read Consistency: 복제 지연과 읽기 보장