Learning
토픽 157 / 201·NewSQL 및 특수 목적 DB

DuckDB

DuckDB

SQLite에서 영감을 받은 임베디드 OLAP(분석) 데이터베이스로, 단일 프로세스 내에서 고성능 분석 쿼리를 수행하고 벡터화 실행, 컬럼 저장소, Parquet/CSV 직접 읽기를 지원하는 인프로세스 분석 엔진

목적: 임베디드 분석, 로컬 데이터 분석, OLAP 워크로드, 간단한 설정

특징: 임베디드(서버 없음), 컬럼 저장소, 벡터화 실행, Zero-Copy, Parquet/CSV 네이티브, ACID 트랜잭션

구성요소: SQL 엔진, 벡터화 실행 엔진, 컬럼 저장소, 트랜잭션 관리, 외부 데이터 읽기(Parquet, CSV, JSON)

벡터화 실행: 한 번에 수천 개 행 처리(배치), CPU 캐시 효율, SIMD 명령어 활용

Zero-Copy: Parquet 파일 직접 읽기, 메모리 복사 없음, mmap 활용

트랜잭션: MVCC(Multi-Version Concurrency Control), ACID 보장, 단일 Writer/다중 Reader

시간 복잡도: 분석 쿼리 O(n), 벡터화로 상수 인수 감소

공간 복잡도: 컬럼 저장소(압축), 메모리 효율

장점: 빠른 분석(벡터화), 임베디드(설치 없음), SQL 표준, Parquet/CSV 직접 읽기, ACID, 작은 바이너리

단점: OLTP 부적합, 단일 노드(분산 불가), 동시 쓰기 제한(단일 Writer)

적용사례: 데이터 과학(Jupyter), 로컬 분석, BI 도구, 임베디드 분석, Parquet 쿼리, 프로토타이핑

비교: DuckDB(임베디드/OLAP/빠름) vs SQLite(임베디드/OLTP) vs Pandas(메모리 제약) vs ClickHouse(분산/서버)

연관: OLAP, 벡터화, Parquet, 임베디드 데이터베이스, 컬럼 저장소