HTAP(Hybrid Transactional/Analytical Processing)는 하나의 데이터베이스 시스템에서 OLTP(트랜잭션 처리)와 OLAP(분석 처리)를 동시에 처리하는 아키텍처 패러다임이다.
HTAP vs 전통 아키텍처
전통 아키텍처 (ETL 파이프라인):
OLTP DB → [ETL, 시간 지연] → 데이터 웨어하우스 → 분석
문제점:
- 데이터 신선도: 수 시간~수 일 지연
- 운영 복잡도: ETL 파이프라인 관리
- 비용: 이중 인프라
HTAP 아키텍처:
하나의 DB ──┬── OLTP (실시간 쓰기/읽기)
└── OLAP (실시간 분석)
장점:
- Fresh Data Analytics: 최신 데이터 즉시 분석
- 단순한 아키텍처
- 실시간 대시보드/예측
TiDB HTAP 예시
sql
-- TiDB: TiKV (행 저장, OLTP) + TiFlash (컬럼 저장, OLAP) 동시 운영
-- TiFlash 레플리카 생성 (비동기 복제)
ALTER TABLE orders SET TIFLASH REPLICA 1;
ALTER TABLE products SET TIFLASH REPLICA 1;
-- OLTP 쿼리: 기본적으로 TiKV 사용
UPDATE orders SET status = 'shipped' WHERE id = 10001;
-- OLAP 쿼리: TiFlash 사용 (힌트)
SELECT /*+ READ_FROM_STORAGE(tiflash[orders, products]) */
DATE_FORMAT(o.created, '%Y-%m') AS month,
p.category,
COUNT(*) AS order_count,
SUM(o.amount) AS revenue,
AVG(o.amount) AS avg_order
FROM orders o
JOIN products p ON p.id = o.product_id
WHERE o.created >= DATE_SUB(NOW(), INTERVAL 12 MONTH)
GROUP BY month, category
ORDER BY month DESC, revenue DESC;
SingleStore(MemSQL) 예시
sql
-- SingleStore: 인메모리 행 세그먼트 + 컬럼 세그먼트 자동 전환
CREATE TABLE events (
id BIGINT AUTO_INCREMENT,
user_id INT,
event_type VARCHAR(50),
properties JSON,
created DATETIME(6) DEFAULT NOW(6),
PRIMARY KEY (id, created)
) PARTITION BY HASH(user_id) -- OLTP 분산
SORT KEY (created); -- OLAP 정렬 최적화
-- OLTP: 실시간 삽입 (인메모리)
INSERT INTO events (user_id, event_type, properties)
VALUES (1001, 'page_view', '{"url":"/home"}');
-- OLAP: 실시간 집계 (컬럼 세그먼트)
SELECT event_type, COUNT(*), COUNT(DISTINCT user_id)
FROM events
WHERE created >= NOW() - INTERVAL 1 HOUR
GROUP BY event_type;
관련 문서