본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
EPL과 유튜브 데이터로 배우는 DuckDB

DuckDB란?

by 아참형인간 2026. 6. 16.

보다 상세한 내용은 EPL과 유튜브로 배우는 DuckDB에 수록되어 있습니다.

 

LUVIT EPL과 유튜브 데이터로 배우는 DuckDB | 이기준 - 교보문고

LUVIT EPL과 유튜브 데이터로 배우는 DuckDB | 복잡한 데이터 분석 흐름을 더 단순하게 만드는 DuckDB 최근 주목받고 있는 DuckDB를 활용해 SQL 기반 데이터 분석과 실전 프로젝트를 학습할 수 있도록 구

product.kyobobook.co.kr

DuckDB 개요

DuckDB대화형 쿼리 및 고속 데이터 분석을 위해 설계된 오픈 소스, -메모리, 임베디드, 분석용 OLAP 데이터베이스 관리 시스템입니다. 네덜란드의 CWI(Centrum Wiskunde & Informatica)의 연구팀이 2019년 처음 출시했으며 특히 분석 작업에서 좋은 성능으로 최근 인기가 높아지고 있습니다.

DuckDB 개발팀은 오리는 하늘을 날 수 도 있고, 땅 위에서 걸을 수 있고, 물에서는 헤엄칠 수 있는 매우 놀랍고 탄력적인 동물이고, 무엇이든 먹고 살 수 있는 동물이기 때문에 오리라는 이름을 붙였다고 하고, DuckDB의 개발 책임자였던 Hannes Mühleisen이 키우던 반려 동물이 오리였다고 합니다. DuckDB의 아이콘도 오리를 위에서 본 모습을 형상화하였습니다.

DuckDB  아이콘

 

다음의 그래프는 DB-Engines Ranking을 기반으로 주요 데이터베이스 시스템들의 인기도 추이를 시각화한 것입니다. 로그 스케일로 표현되어 있으며, 2014년부터 2025 3월까지의 점수를 보여줍니다. MySQL, PostgreSQL, SQLite는 오랜 기간 동안 높은 점수를 유지하며 상위권을 차지하고 있습니다.

Snowflake 2019년 이후 빠르게 인기를 얻어 2022년경 SQLite를 추월한 것으로 보입니다. DuckDB 2020년 이후 급격히 성장하고 있으며, 2025 3월 기준 점수는 6.714, 짧은 기간 동안 주목할 만한 성장을 보여주고 있습니다.  이 그래프를 통해 최근 몇 년 사이 분석 및 OLAP 중심의 데이터베이스, 특히 DuckDB Snowflake의 급부상이 두드러진다는 점을 확인할 수 있습니다.

DuckDB 와 유사 데이터베이스의  DB  엔진 랭킹 변화 비교

DuckDB 개발 배경

지금까지 많이 사용되던 관계형 데이터베이스는 최근의 데이터 분석 환경에 적절하지 않은 몇 가지 문제를 가집니다.

첫 번째는 여러 클라이언트의 질의를 동시에 처리해야 하고, 데이터 무결성을 유지해야하는 거대하고 강력한 컴퓨팅 파워 기반의 클라이언트-서버 방식의 관계형 데이터베이스가 데이터 분석 환경에서 유용한가입니다. 이런 관계형 데이터베이스는 ACID라고 하는 데이터베이스 무결성 관리에 최적화되어 있고, 쿼리 옵티마이저의 기능이 우수하며, 표준화된 쿼리 언어가 사용됩니다.

하지만 무결성 관리를 위한 프로세스로 인해 데이터베이스 관리 시스템의 수행에 고성능 컴퓨팅 파워가 필요하고, 설치 및 유지관리에 전문적인 지식이 요구되며, SQL을 배워야 하는 단점이 있습니다.

이외에 또 하나의 결정적인 단점은 컴퓨팅 파워를 갖추고 DBMS 구매에 비용이 비싸다는 것입니다. 이러한 관계형 데이터베이스를 데이터 분석가의 요구에 맞춘 가장 대표적인 예가 SQLite입니다. 하지만 SQLite는 관계형 데이터베이스로 트랜잭션(OLTP) 작업에 최적화된 데이터베이스이기 때문에 집계, 요약과 같이 대량의 열 데이터를 한꺼번에 처리해야 분석(OLAP) 작업에는 적절하지 않습니다.

두 번째로 많은 데이터 분석가들은 SQL 기반의 관계형 데이터베이스에 익숙하지 않다는 것입니다. 데이터 분석가들이 주로 사용하는 분석 질의는 관계형 데이터베이스 성능에 영향을 주기 때문에 운영 시스템 데이터베이스에서 직접 작업하는 방법보다는, 운영 시스템의 데이터베이스에서 주기적 혹은 실시간적으로 추출된 데이터를 CSV, HDF5와 같은 파일로 전달받아 사용하는 경우가 많습니다. 따라서 데이터베이스에서 사용되는 SQL보다는 자신이 주로 사용하는 언어나 도구로 데이터를 불러들어와 작업하기 때문에 구지 SQL을 사용할 필요가 없습니다.

세 번째로 많은 데이터 분석가들은 주로 자신의 로컬 환경에서 데이터 분석을 수행하기를 원합니다. 따라서, 대규모 클러스터가 필요하지 않고, 가볍고 빠르게 동작하는 로컬 데이터 분석 도구가 요구됩니다. 지금까지는 파이썬의 Pandas, R dplyr가 많이 사용되었지만, 이들 도구들은 분석해야 할 데이터가 점점 커질수록 메모리 관리의 문제로 인해 데이터 분석 자체가 불가능해지는 경우가 발생합니다. 또 쿼리 옵티마이저가 없기 때문에 검색의 효율성이 떨어지고 속도가 느려진다는 단점이 있습니다. 그래서 파이썬이나 R에서 대량의 데이터를 다루기 위해 많은 대안들이 제시되었습니다. 많은 분석가들이 대용량 데이터를 오픈소스 데이터베이스에 저장하고 파이썬이나 R에서 데이터베이스에 접속한 후 SQL을 사용하여 분석을 시도하였습니다.

결국, 다수의 클라이언트가 접속하여 사용하는 대규모 OLTP 데이터베이스가 아닌, 데이터 분석가들이 자신만의 로컬 환경에서, 자신에게 익숙한 파이썬이나 R로 접근이 가능하며, 설치와 관리가 편리한 서버리스Serverless 분석 데이터베이스가 필요했습니다. 이러한 데이터 분석가들의 요구 사항을 정확히 반영하여 개발된 데이터베이스가 DuckDB입니다.

다음의 그림은 최근 많이 사용되는 오픈 소스 데이터베이스를 분류한 그림입니다. DuckDBOLAP, -프로세스(메모리) 데이터베이스로 분류 가능합니다.

데이터베이스의 구조와 활용분야에 대한 분류

DuckDB 특징

이렇게 데이터 분석가의 요구에 잘 맞춰 개발된 DuckDB는 여러 가지 특징이 있습니다.

DuckDB 의 특징 ( 출처 : DuckDB  홈페이지 )

설치 단순성: Simple

첫 번째 장점은 설치가 단순하다는 것입니다. MS Windows 환경의 경우 DuckDB는 특별한 설치과정이 필요없이 실행 파일 하나만으로 실행이 가능합니다. 파이썬이나 R에서 사용하기 위해서도 타 라이브러리 패키지 설치와 동일한 방법으로 설치하여 사용할 수 있기 때문에, Postgresql Oracle과 같은 클라이언트-서버 데이터베이스 설치 과정의 복잡한 옵션을 선택할 필요가 없습니다.

또 설치과정에서 필요한 타 패키지와의 종속성이 없습니다. 몇몇 소프트웨어의 경우 설치하는 과정에서 특정 소프트웨어를 먼저 설치하라는 메시지를 본 기억이 있을 것이지만, DuckDB DuckDB를 실행시키기 위해 사전에 설치해야 할 소프트웨어나 패키지 라이브러리가 없기 때문에 설치가 매우 간단합니다.

이식성: Portable

두 번째는 이식성입니다. 설치 과정에서의 타 소프트웨어나 패키지에 대한 종속성이 없기 때문에 DuckDB는 동일한 OS에서 실행 파일만 복사하면 실행되므로 이식성이 매우 뛰어납니다. 또한 모든 주요 운영 체제(Linux, macOS, Windows) CPU 아키텍처(x86, ARM)에 맞게 컴파일하여 사용할 수 있습니다. 리소스의 제약이 있는 소규모 디바이스 장치부터 100개 이상의 CPU 코어를 갖춘 대규모 멀티테라바이트 메모리 서버까지 배포할 수 있습니다. DuckDB-Wasm을 사용하면 웹 브라우저와 심지어 휴대폰에서도 실행할 수 있습니다. DuckDB Java, C, C++, Go, Node.js 및 기타 언어용 API도 제공하기 때문에 어느 프로그래밍 언어에서도 활용이 가능합니다.

풍부한 기능 제공: Feature-rich

세 번째로 DuckDB데이터 관리를 위한 다양한 기능을 제공합니다. 자체 내장 함수 라이브러리가 방대하고, 윈도우 함수, CTEcommon table expressions 등을 통해 SQL의 복잡한 고급 쿼리를 빠르게 지원합니다. 또한 대량 데이터에 최적화된 맞춤형 다중 버전 동시성 제어(MVCC) 메커니즘이 구현되어 있기 때문에 데이터베이스가 필수적으로 보장해야 하는 일관성 성질인 ACID 특성을 제공합니다.

DuckDB에 저장되는 데이터는 인-메모리에서 사용이 가능하지만 데이터베이스 파일에 기록하여 영구적으로 저장도 가능하고, 검색 성능을 높이기 위한 다양한 인덱스를 지원하고, 대화형 데이터 분석을 위한 자체 시스템과 파이썬, R등의 프로그래밍으로 사용 가능한 인터페이스도 제공합니다.

빠른 속도: Fast

네 번째는 빠르다는 것입니다. DuckDB는 온라인 분석 처리(OLAP)라고도 하는 분석 작업에 최적화되도록 설계되었습니다. 이렇게 분석 작업에 최적회된 데이터베이스 구조는 대규모 데이터를 대상으로 하며, 복잡하고, 실행 시간이 긴 쿼리에 초점이 맞춰져 있습니다.

이러한 분석 작업이 효율적으로 수행되려면 CPU 사이클의 양을 줄여야 하고, 벡터화된 쿼리 실행 엔진, 컬럼형 데이터 구조가 필요합니다. 따라서 각 행을 순차적으로 처리하는 PostgreSQL, MySQL, SQLite와 같은 OLTP 데이터베이스에서는 이러한 분석 작업에 오버헤드가 발생합니다. 하지만 DuckDB는 분석 작업에 최적화 되어 있는 데이터베이스 구조를 채택함으로써 대규모 분석 쿼리에 오버헤드를 줄였기 때문에, 쿼리 실행이 매우 빠르고 효율적입니다.

확장성: Extensible

다음은 확장성입니다. DuckDB는 새로운 데이터 유형, 함수, 파일 형식, 새로운 SQL 구문을 정의할 수 있는 유연한 확장 메커니즘을 제공합니다. 실제로 Parquet 파일 형식 지원, JSON, 표준 시간대, HTTP(S) S3 프로토콜 지원 등 DuckDB의 주요 기능 중 상당수가 확장 기능으로 구현되어 있습니다. 그러나 DuckDB에 포함된 기본적인 확장 기능 외에도 지속적으로 개발되어 제공되는 확장 기능을 설치할 수 있게 지원합니다.

무료 사용: Free

마지막으로 무료라는 점입니다. DuckDB의 개발은 네덜란드의 주요 개발자들이 공무원으로 재직하던 시절에 시작되었습니다. 이들은 개발 결과물을 네덜란드를 포함한 전 세계 모든 사람이 자유롭게 사용할 수 있도록 무료 라이선스인 MIT 라이선스로 개방했습니다. 따라서 DuckDB는 오픈 소스이며, 전체 소스 코드는 GitHub에서 무료로 사용할 수 있습니다.

 

 

댓글