DuckDB란?
in-process SQL OLAP DBMS
> in-process? : in memory 분석 뒤에 데이터를 지움
DuckDB는 임베디드 분석 데이터베이스로, 대규모 데이터 처리를 로컬 환경에서 빠르고 효율적으로 수행할 수 있도록 설계된 시스템이다.
주로 데이터 분석 워크로드에 최적화되어있으며, 파이썬 등과 같은 언어와 이식성이 좋으며, OLAP(Online Analytical Processing) 쿼리에 특화되어이 있어 분석에 적합하다.
왜 사용해?
보통 데이터 분석은 Pandas로 시작하는데, 데이터 크기가 커질 수록 Pandas 한계(Single thread로 동작, 불필요한 메모리 사용)는 빠르게 느껴진다.
실제 대량의 데이터는 Athena, BigQuery 등 SQL로 데이터 처리가 가능한 시스템에서 처리한다.
- columnar-vectorized query execution engine을 사용하여 RDBMS보다 분석 성능이 더 빠름
- multi-core Parallel processing 지원
Features
- 컬럼 기반 저장소: 데이터는 컬럼 단위로 저장되어 압축 효율이 높고, 쿼리 성능이 우수
- DuckDB는 서버를 필요로 하지 않으며, 로컬 환경 사용 가능
- 대규모 데이터 처리: 메모리 내 분석을 지원하면서도 디스크 기반의 데이터 처리 기능 제공
- 통합성 굿
- 빠른 성능: OLAP 쿼리에 최적화되어 대용량 데이터셋에서 굿
Benefit
- 빠른 쿼리 성능: 분석 워크로드에서 빠른 성능
- 경량+비용 효율: 서버리스 Okay(local에서도 가능)
Weakness
- 제한된 동시성: 대규모 트랜잭션 기반의 OLTP(Online Transaction Processing)에는 적합 X
- 메모리 의존성: 메모리 내 작업이기 때문에 큰 데이터를 다룰 때 메모리 부족 문제 발생 가능
DuckDB를 사용하면서 느낀 거는
원래 사용하던 여러 메소드들이 살짝씩 이름이 다르다.
그래서 공식문서를 보면서 해주면 좋다.. 그리고 관련 레퍼런스는 정말 공식문서로만 봐야 한다.
근데 공식문서가 다행이도 잘 안되어있는 편은 아니었다.
그리고 주의해야할 점은 index가 SQL 표준을 따라서, 1-base라고 한다.
출처 및 참고
- https://dadev.tistory.com/entry/DuckDB-what-is-duckDB
- https://duckdb.org/docs/stable/data/json/json_functions.html
- https://github.com/duckdb/duckdb/issues/2575
'공부' 카테고리의 다른 글
Data Warehouse 기반 데이터 플랫폼 Snowflake (0) | 2025.03.31 |
---|---|
Airflow 에서 직면한 여러 환경 설정 오류 해결 (0) | 2025.03.12 |
Airflow 개념과 DAG 파라미터 정리 (0) | 2025.03.09 |
[GIT] clone 시 The requested URL returned error: 403 + Support for password authentication was removed (0) | 2025.03.08 |
대용량 그래프 처리 시스템, Pregel (0) | 2025.03.05 |