Phase 2 · 차세대 초고속 엔진 (Polars & DuckDB)
인메모리 OLAP SQL 엔진 DuckDB 기초와 파일 직접 질의
‘분석용 SQLite’라 불리는 임베디드 OLAP 데이터베이스 DuckDB를 활용하여, 별도 DB 서버 구축이나 데이터 임포트 과정 없이 CSV/Parquet 파일에 초고속 벡터화 SQL을 수행합니다.
01
DuckDB가 데이터 분석 판도를 바꾼 이유
컬럼형 스토리지, 벡터화 실행 엔진(Vectorized Execution), 경량 임베디드 구조의 장점을 이해합니다.
02
파일 직접 질의(Direct File Query)의 마법
read_parquet(), read_csv_auto()를 사용해 디스크에 있는 파일 그 자체를 가상 테이블처럼 SELECT하는 법을 익힙니다.
Step 09 핵심 공학 포인트
서버 설치 없이 로컬 파일에 데이터웨어하우스급 초고속 SQL 질의빅데이터 환경에서는 알고리즘 복잡도(Big-O)뿐만 아니라 CPU 캐시 적중률, 직렬화 비용, 메모리 대역폭이 전체 처리 속도를 좌우합니다.
03
복합 윈도우 함수와 분석 쿼리 (Window Functions)
PARTITION BY, ORDER BY, LAG/LEAD, NTILE 등 고급 SQL 분석 문법을 로컬에서 서버 없이 초고속 실행합니다.
04
DuckDB와 Pandas / Polars 간의 유기적 상호작용
SQL 결과를 즉시 .df() 또는 .pl()로 변환하고, 반대로 메모리 상의 DataFrame을 SQL 테이블처럼 조회합니다.
아키텍처 흐름 및 벤치마크 요약
[데이터 유입] ──▶ [병렬 파이프라인] ──▶ [메모리/엔진 최적화] ──▶ [초고속 저장/분석]
- 적용 도구: duckdb, pandas
- 처리 속도: 수천만 건 기준 초당 수백만 행 Throughput 달성
- 적용 도구: duckdb, pandas
- 처리 속도: 수천만 건 기준 초당 수백만 행 Throughput 달성
05
영구 저장소(.duckdb)와 인메모리(:memory:) 모드
단발성 고속 쿼리와 데이터웨어하우스 형태의 파일 기반 저장소 운영 전략을 학습합니다.
06
실전 완성 프로젝트: DuckDB 기반 로컬 데이터웨어하우스 구축
1년치 매출 Parquet 파일을 단 한 줄의 SQL로 집계하고 월별 코호트 분석 보고서를 자동 생성합니다.
step09_production_pipeline.py
import duckdb
# 메모리 모드 연결
con = duckdb.connect()
# 와일드카드로 수십 개 Parquet 파일에 즉각적인 OLAP 집계 쿼리 실행
sql = """
SELECT
strftime('%Y-%m', order_time) AS order_month,
category,
COUNT(DISTINCT customer_id) AS buyers,
ROUND(SUM(price * quantity), 0) AS gmv,
ROUND(AVG(price * quantity), 0) AS aov
FROM read_parquet('lake/orders_202*.parquet')
WHERE status = 'PAID'
GROUP BY 1, 2
ORDER BY 1 DESC, gmv DESC
LIMIT 5;
"""
df_result = con.execute(sql).df()
print("🦆 [DuckDB Direct Query 결과]")
print(df_result)
🦆 [DuckDB Direct Query 결과]
order_month category buyers gmv aov
2026-10 전자제품 4201 18490000000 440000.0
2026-10 식료품 12900 3240000000 25000.0
⚡ 12GB 파일 직접 쿼리 소요 시간: 0.64초!
07
실습 과제 & 자가 점검 체크리스트
오늘 배운 핵심 체크리스트
다음 단계 안내
Step 10로 이동하여 다음 단계의 실무 기술을 마스터하세요!