DuckDB는 단지 빠른 것만이 아님
(csvbase.com)- DuckDB는 단일 파일 SQL 데이터베이스로서, 데이터 분석에 특화되어 있음
- 대부분의 DuckDB 평가는 정량적인 분석에 집중하는 경향이 있음
- 특히 속도 측면에서 DuckDB는 일반적으로 좋은 성능을 보임
- 하지만 사용자 입장에서는 일단 성능이 만족스러운 수준에 도달하면 더 이상의 속도 향상은 큰 의미가 없음
- 대신 사용 편의성이 더 중요하며, DuckDB는 이 부분에서 장점을 가짐
- DuckDB의 사용 편의성 장점들:
- 개발자 경험
- 메모리보다 큰 데이터셋 처리 가능
- 설치 및 실행이 용이함
인간공학적(Ergonomics)
- DuckDB는 일반적인 작업을 간단하게 처리할 수 있도록 설계됨
- 예를 들어, 입력 파일에서 직접 테이블을 생성하고 스키마를 추론할 수 있음
- Parquet 파일의 경우 웹 상의 파일도 읽을 수 있음
- 테이블을 미리 생성하지 않고도 데이터를 쿼리할 수 있음
-
read_parquet
함수는 relation을 반환하므로 하위 쿼리로 사용 가능
-
- DuckDB는 Postgres에서 사용하는 대부분의 SQL 기능을 지원함
- 예를 들어, 윈도우 함수가 완전히 지원됨
메모리보다 큰 데이터셋 처리
- 많은 데이터 도구들은 데이터셋이 컴퓨터 메모리보다 커지면 제대로 동작하지 않음
- 이는 과소평가된 고통의 원천이 될 수 있음
- 반면 DuckDB는 메모리보다 큰 데이터셋을 완전히 지원함
- Pandas의 경우 데이터프레임이 시스템 메모리의 50% 이상일 때 문제가 발생할 수 있음
간편한 설치 및 실행
- DuckDB는 단일 실행 파일
duckdb
로 컴파일됨 - WASM을 통해 브라우저에서 직접 DuckDB를 경험할 수 있음 (shell.duckdb.org)
- WASM 기반이므로 서버가 아닌 브라우저에서 모든 것이 실행됨
-
DuckDB를 데이터프레임 라이브러리처럼 사용
- DuckDB는 Python과 잘 통합되어 있음
- Python 내에서 쿼리를 실행하고 반환값을 사용할 수 있음
- 이를 통해 단계별로 더 큰 데이터 연산을 구축할 수 있음
- SQL의 이점과 데이터프레임의 이점을 모두 얻을 수 있음
csvbase를 통한 데이터 저장
- csvbase의 클라이언트 라이브러리는 fsspec API를 통해 다양한 시스템과 연동될 수 있음
- DuckDB도 마찬가지로 csvbase와 함께 사용 가능
확장성 (Scalability)
- DuckDB는 수천 대의 머신으로 확장되지는 않음
- 반면 Apache Spark는 가능하지만 상당한 복잡성을 수반함
- 축소 확장성(Scaling down)도 중요함
- DuckDB는 개별 사용자 수준에서 작동하며 많은 요구사항이 없음
요약
- DuckDB는 SQL을 알고 있는 데이터 분석가에게 매력적인 선택지가 될 수 있음
- 메모리보다 큰 데이터를 다룰 수 있고, 설치가 간편하며, 많은 경우 Spark의 좋은 대안이 될 수 있음
ParadeDB 가 최근 좋은 대안을 추가했습니다. https://blog.paradedb.com/pages/introducing_lakehouse