TiDB는 MySQL 호환 NewSQL 분산 데이터베이스다. PingCAP이 개발했으며, OLTP와 OLAP를 동시에 처리하는 HTAP(Hybrid Transactional/Analytical Processing)를 지원한다.
아키텍처 구성요소
클라이언트
↓ MySQL 프로토콜
TiDB 서버 (SQL 레이어, 상태비저장)
↓
PD (Placement Driver) - 클러스터 메타데이터, 로드밸런싱
↓
TiKV (분산 트랜잭션 KV 스토어) ─── TiFlash (컬럼형 OLAP)
TiKV: Raft 기반 3복제, RocksDB 스토리지
TiFlash: TiKV 실시간 복제, 분석 쿼리 가속
MySQL 호환 사용 예시
sql
-- 기존 MySQL 쿼리 그대로 사용 가능
CREATE TABLE events (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL,
event_type VARCHAR(50),
created DATETIME DEFAULT CURRENT_TIMESTAMP,
data JSON,
KEY idx_user (user_id, created)
);
-- HTAP: OLTP와 OLAP 혼합
-- OLTP: TiKV에서 처리
INSERT INTO events (user_id, event_type, data)
VALUES (1001, 'purchase', '{"amount": 99.99}');
-- OLAP: TiFlash에서 처리 (힌트 사용)
SELECT /*+ READ_FROM_STORAGE(tiflash[events]) */
DATE(created) as day,
COUNT(*) as event_count,
SUM(data->>'$.amount') as revenue
FROM events
WHERE created >= '2024-01-01'
GROUP BY day;
관련 문서