영어에서 번역됨

DuckDB는 오픈소스, 컬럼 지향, 인-프로세스 관계형 데이터베이스 관리 시스템으로, 온라인 분석 처리(OLAP) 워크로드에 특화되어 있으며, 별도의 서버 없이 대규모 데이터셋에 대한 복잡한 쿼리에서 높은 성능을 제공한다.

DuckDB는 임베디드 구성에서 고성능 분석 쿼리를 위해 설계된 오픈소스, 컬럼 지향 관계형 데이터베이스 관리 시스템(RDBMS)이다. 이는 수백 개의 열과 수십억 개의 행을 가진 테이블을 결합하는 것과 같은 온라인 분석 처리(OLAP) 워크로드를 대상으로 하며, 트랜잭션(OLTP) 애플리케이션은 대상이 아니다. 기존의 클라이언트-서버 데이터베이스와 달리 DuckDB는 호스트 프로세스 내부에서 실행되므로 대화형 데이터 분석, 스크립트 기반 파이프라인, Python과 같은 도구와의 통합에 적합하다. 최근 집계에 따르면 이 프로젝트는 월간 600만 회 이상의 다운로드를 보고한다.

이 시스템은 벡터화된 쿼리 처리 엔진을 중심으로 구축되었으며, C++17 컴파일러 외에는 외부 종속성이 없다. DuckDB의 SQL 파서는 Lukas Fittl의 pg_query 라이브러리에서 파생되었으며, 이 라이브러리 자체는 PostgreSQL 파서의 축소 버전이다. 데이터는 Apache Parquet 파일 또는 단일 파일 저장 형식으로 저장할 수 있으며, 둘 다 효율적인 스캔과 대량 작업에 최적화되어 있다. DuckDB는 또한 Emscripten을 통해 WebAssembly로 컴파일되어 브라우저 기반 분석 도구에서 SQL 실행을 가능하게 한다.

역사

DuckDB는 원래 네덜란드의 Centrum Wiskunde & Informatica(CWI)에서 Mark Raasveldt와 Hannes Mühleisen에 의해 개발되었다. 공동 창립자들은 트랜잭션 처리에 초점을 맞춘 SQLite와 같은 임베디드 데이터베이스가 남긴 공백을 메우기 위해 빠른 분석 쿼리를 위한 프로세스 내 OLAP 데이터베이스를 만드는 것을 목표로 했다. 첫 공개 릴리스는 2019년에 나왔으며, 코드명 SnowDuck인 버전 1.0.0은 2024년 6월 3일에 출시되었다.

아키텍처 및 기능

DuckDB는 개별 행이 아닌 데이터 배치 단위로 작동하는 벡터화된 쿼리 처리 엔진을 사용한다. 이 설계 선택은 분석 워크로드의 처리량을 크게 향상시킨다. 이 시스템은 Python 바인딩을 통해 사용될 때 데이터를 NumPy 배열에 직접 배치할 수 있으며, 추가 API를 통해 다른 언어도 지원한다. DuckDB의 저장 형식은 효율적인 스캔과 대량 업데이트, 추가, 삭제를 위해 설계된 단일 파일이다. PostgreSQL에서 파생된 파서는 높은 수준의 SQL 호환성을 유지한다.

다른 시스템과의 비교

DuckDB의 OLAP 특성은 Microsoft SQL Server, PostgreSQL, Oracle 데이터베이스와 같은 전통적인 관계형 데이터베이스 관리 시스템과 직접 경쟁하지 않음을 의미한다. 쿼리에 SQL을 사용하지만 DuckDB는 서버리스 애플리케이션을 대상으로 하며 Apache Parquet 파일 또는 자체 저장 형식에서 읽을 때 매우 빠른 응답을 제공한다. 이는 대규모 데이터 세트의 대화형 분석에 인기 있는 선택이 되며, 프로세스 내 워크로드에서 기존 클라이언트-서버 데이터베이스보다 성능이 뛰어날 수 있다.

상업적 채택 및 거버넌스

DuckDB는 Facebook, Google, Airbnb를 포함한 회사에서 분석 작업에 사용된다. 공동 저자 Hannes Mühleisen은 이전에 DuckDB Labs로 알려진 지원 및 컨설팅 회사인 DuckLabs를 운영한다. DuckLabs는 의도적으로 벤처 캐피털 자금을 피했으며, Mühleisen은 "투자는 프로젝트 방향을 수익화로 강제할 것이라고 생각하며, 우리는 DuckDB를 가능한 한 많은 사람들에게 공개하고 사용 가능하게 유지하는 것을 훨씬 선호한다"고 밝혔다. 2026년 8월, DuckLabs는 Amazon에 인수되었으며, 직원들은 Amazon Web Services 자회사에 합류했다. 별도로 DuckDB 기반 데이터 플랫폼을 구축하는 회사인 MotherDuck은 Andreessen Horowitz를 포함한 투자자로부터 1억 달러의 자금을 조달했다.

독립 비영리 단체인 DuckDB 재단은 프로젝트의 지적 재산권 상당 부분을 보유하고 오픈소스 상태를 보호한다. 자선 기부로 자금을 조달하는 재단의 정관은 DuckDB가 영구히 MIT 라이선스 하에 유지되도록 보장한다.

기술 개요

DuckDB의 벡터화된 엔진은 데이터를 배치로 처리하여 분석 쿼리의 높은 처리량을 가능하게 한다. C 및 C++ 외에도 Python, R, Java 등을 포함한 다양한 프로그래밍 언어를 네이티브 바인딩을 통해 지원한다. Python 통합은 쿼리 결과를 NumPy 배열에 직접 배치할 수 있어 데이터 과학 및 Machine learning 워크플로우를 용이하게 한다. DuckDB는 또한 Artificial intelligence 파이프라인과 상호 작용하기 위한 바인딩을 제공하며, 여기서 빠른 프로세스 내 분석 쿼리는 모델 추론 작업을 보완한다.

이 아키텍처는 확장을 지원하며, 기능을 추가하기 위해 동적으로 로드된다. DuckDB 팀이 유지 관리하는 핵심 확장에는 HTTP, HTTPS 및 S3 호환 저장소를 통한 원격 파일 액세스를 위한 httpfs(v1.5부터 Azure 쓰기 지원 포함), v1.5부터 내장 GEOMETRY 유형을 갖춘 공간 함수용 spatial, REST 카탈로그 지원을 갖춘 Apache Iceberg 테이블 읽기/쓰기용 iceberg, Delta Kernel을 통한 Delta Lake 통합용 delta, 그리고 ACID 의미론, 시간 여행 및 스키마 진화를 갖춘 레이크하우스 형식인 ducklake가 포함된다. 30개 이상의 커뮤니티 확장은 그래프 쿼리(SQL/PG)부터 Kafka 통합 및 머신러닝 추론에 이르는 사용 사례를 다룬다.

다른 데이터베이스와의 비교

DuckDB의 OLAP 초점은 Microsoft SQL Server, PostgreSQL, Oracle Database와 같은 전통적인 DBMS와 구별된다. 쿼리에 SQL을 사용하지만 서버리스 애플리케이션을 대상으로 하며 Parquet 파일 또는 자체 저장 형식을 읽을 때 빠른 응답을 제공한다. 이는 대화형 대규모 데이터 세트 분석, 특히 기존 Machine learning 스택을 보완하는 데이터 과학 및 분석 환경에서 인기 있는 선택이 된다. OLTP 시스템을 대체하도록 설계되지 않았으며, 대신 분석 워크로드를 위해 그 옆에 위치한다.

채택 및 상업 생태계

DuckDB는 Facebook, Google, Airbnb에서 대규모 데이터 분석에 사용된다. 프로젝트 공동 저자 Hannes Mühleisen은 DuckLabs(이전 DuckDB Labs)라는 지원 및 컨설팅 회사를 운영한다. DuckLabs는 의도적으로 벤처 캐피털 자금을 피했으며, 투자가 프로젝트를 수익화로 밀어붙일 것이라고 밝히며 DuckDB를 공개 상태로 유지하는 것을 선호한다. 2026년 8월, DuckLabs는 Amazon에 인수되었고 직원들은 Amazon Web Services 자회사에 합류했다. 별도로 MotherDuck은 DuckDB 기반 데이터 플랫폼을 위해 1억 달러의 자금을 조달했으며, 투자자에는 Andreessen Horowitz가 포함된다.

DuckDB 재단

독립 비영리 단체인 DuckDB 재단은 프로젝트의 장기적인 유지 관리와 개발을 보호한다. 이 재단은 지적 재산권 상당 부분을 보유하며 자선 기부로 자금을 조달한다. 재단의 정관은 DuckDB가 영구히 MIT 라이선스 하에 오픈소스로 유지되도록 보장하여 상업적 포획으로부터 프로젝트를 보호한다. 이 거버넌스 구조는 DuckLabs가 벤처 캐피털을 피하기로 한 결정과 결합하여 기술을 널리 접근 가능하게 유지하려는 약속을 반영한다.

언어 지원 및 확장

DuckDB는 네이티브 C 및 C++ API를 제공하며, Python, R, Java, Julia 등을 포함한 언어에 대한 추가 바인딩을 제공한다. Python 통합은 쿼리 결과를 NumPy 배열에 직접 배치할 수 있게 하여 데이터 과학 및 Machine learning 맥락에서 원활한 워크플로우를 용이하게 한다. 확장 시스템은 인트리 및 커뮤니티 유지 관리 모듈을 모두 지원하며, httpfs 확장은 HTTP, HTTPS 및 S3 호환 객체 저장소를 통한 원격 파일 액세스를 가능하게 하고 버전 1.5부터 Azure 쓰기 지원을 포함한다. spatial 확장은 ST_* 계열의 지리공간 함수를 제공하며, GEOMETRY는 v1.5에서 내장 핵심 유형이 되었다. 레이크하우스 시나리오의 경우 DuckDB는 각각 Apache Iceberg 및 Delta Lake 테이블 형식을 위한 iceberg 및 delta 확장을 제공한다.

사용 사례 및 성능

DuckDB는 사용자가 Python 인터프리터 또는 Jupyter 노트북에서 대규모 데이터 세트를 대화형으로 쿼리하고 결과를 NumPy 배열에 직접 배치하는 데이터 과학 워크플로우에서 자주 사용된다. 또한 WebAssembly를 통해 브라우저에서 실행되는 분석 도구에도 사용된다. 클라이언트-서버 네트워크 계층의 오버헤드를 피하기 때문에 DuckDB는 Parquet 또는 자체 컬럼 형식에 저장된 데이터에 대해 1초 미만의 응답을 제공할 수 있다. 이는 임베디드 분석, 배치 처리 및 경량 데이터 변환 작업에 실용적인 선택으로 자리 잡게 하며, 사용자가 전용 데이터베이스 클러스터를 배포하지 않고도 대규모 데이터를 처리할 수 있게 한다.

언어 지원

네이티브 C 및 C++ API 외에도 DuckDB는 Python, R, Java, Node.js 및 기타 언어에 대한 바인딩을 제공하여 다양한 Large language model 개발 스택과 일반 데이터 도구 전반에 걸쳐 접근성을 높인다. Python 패키지는 대화형 분석과 프로덕션 파이프라인에서 널리 사용되며, 데이터 세트가 사용 가능한 RAM을 초과할 때 인메모리 데이터프레임의 대체재로 자주 사용된다.

확장 및 생태계

확장 시스템은 코어 엔진을 다시 컴파일하지 않고도 동적 로드를 허용한다. 커뮤니티 확장은 그래프 쿼리부터 Kafka 통합 및 ML 추론에 이르는 다양한 사용 사례를 다룬다. DuckDB 팀은 여러 핵심 확장을 유지 관리하며, 공식 레지스트리에는 30개 이상의 추가 커뮤니티 유지 관리 확장이 나열되어 있다. 이 생태계는 지리공간 분석, 원격 데이터 액세스 및 현대 데이터 레이크 형식과의 통합을 포함한 광범위한 분석 시나리오를 지원한다.

참고 문헌

  1. Woodie, Alex. "DuckDB Walks to the Beat of Its Own Analytics Drum." 2024년 3월 5일.
Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
분류:database·olap·open-source-software·analytics
이 문서는 다음 날짜에 마지막으로 편집되었습니다: 2026년 9월 8일 작성자 AI Wiki Bot · 역사