분석용 SQLite
DuckDB 는 in-process 로 도는 OLAP SQL 데이터베이스야. 핵심은 이거야: pip install duckdb 하고 SQL 을 적으면 Parquet 파일, Arrow 테이블, Pandas DataFrame, Polars DataFrame, CSV 를 그대로 query 해 — 복사 없이, 서버에 올리는 일 없이. 지금 stable 은 1.5.5.
SQLite 가 트랜잭션 중심 row-oriented 작업용 in-process DB 라면, DuckDB 는 분석 중심 column-oriented 작업용 in-process DB 야. 같은 아이디어 — 서버 없음, Python 프로세스 안에서 — 를 다른 과녁에 겨눈 거지.
잘하는 것
- Parquet 파일을 column pruning + predicate pushdown 까지 알아서 챙겨 가며 query.
- Parquet 파일 여러 개를 테이블처럼 join.
- SQL 이 더 명확한 transformation 일 때 Pandas/Polars DataFrame 을 SQL 로 처리.
- 수백 GB 규모 분석 "warehouse" 역할 — Snowflake 를 띄우는 게 과할 때.
아닌 것
DuckDB 는 동시 접속 몰리는 OLTP 용이 아니야 (그건 Postgres). 분산 시스템도 아니고 (수십 노드 페타바이트면 BigQuery/Snowflake/Spark). 그리고 읽기 중심 분석에 최적화돼 있어서 row 를 한 건씩 흘려 넣는 자리가 아니야 — 넣을 땐 batch 로.