DuckDB가 빠른 이유: 인터널 분석 1부
원제: DuckDB Internals: Why Is DuckDB Fast? (Part 1)
왜 중요한가
DuckDB는 분석 워크로드의 진입 장벽을 획기적으로 낮췄으며, 클라우드 데이터웨어하우스의 대안으로서 기술 업계에서 중요한 패러다임 변화를 이끌고 있다.
2019년 CWI 암스테르담의 연구 프로젝트에서 시작한 DuckDB는 현재 가장 널리 채택된 데이터베이스 중 하나로 성장했다. MotherDuck, Hex, Omni 등 주요 기업들이 이를 기반으로 제품을 구축 중이며, 단일 노드에서 수백만 달러대 클러스터와 경쟁할 수 있는 성능을 제공한다.
DuckDB는 20MB 이하의 단일 바이너리로 배포되는 인프로세스 분석형 SQL 데이터베이스다. 외부 의존성이 없으며 pip, brew 등으로 쉽게 설치되고, Parquet, CSV, JSON 파일을 직접 SQL 데이터베이스처럼 쿼리할 수 있다.
데이터베이스의 빠른 성능은 아키텍처 설계 선택에서 비롯된다. 첫째, 인프로세스 실행으로 인해 네트워크 오버헤드가 없다. Snowflake, Postgres, BigQuery 같은 기존 서버형 데이터베이스는 TCP를 통해 결과를 직렬화 및 역직렬화하는 과정에서 상당한 시간이 소비되지만, DuckDB는 쿼리 결과가 동일 프로세스 내에서 메모리에 바로 반환된다.
기사는 3부 시리즈의 첫 번째 파트로, SQL 쿼리가 엔진에 들어온 순간부터 실행 준비 단계까지의 경로를 추적한다. DuckDB의 속도 핵심 요소는 ①인프로세스 실행 ②컬럼형 압축 스토리지와 zonemaps ③벡터화된 실행 ④Morsel 기반 병렬 처리 ⑤스냅샷 격리와 낙관적 MVCC 등이다. 2부에서는 쿼리 실행 단계를 다룬다.