# DuckDB는 단지 빠른 것만이 아님

> Clean Markdown view of GeekNews topic #15320. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15320](https://news.hada.io/topic?id=15320)
- GeekNews Markdown: [https://news.hada.io/topic/15320.md](https://news.hada.io/topic/15320.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-06-13T10:22:01+09:00
- Updated: 2024-06-13T10:22:01+09:00
- Original source: [csvbase.com](https://csvbase.com/blog/6)
- Points: 30
- Comments: 5

## Summary

DuckDB는 단일 파일 SQL 데이터베이스로서, 데이터 분석에 특화되어 있으며, 특히 사용 편의성과 메모리보다 큰 데이터셋 처리 능력에서 강점을 보입니다. 또한, 간편한 설치와 실행, 그리고 Python과의 뛰어난 통합을 통해 데이터프레임 라이브러리처럼 사용할 수 있어 데이터 분석가들에게 매력적인 선택지가 됩니다. DuckDB는 Spark의 복잡성을 피하면서도 많은 경우 좋은 대안이 될 수 있습니다.

## Topic Body

- DuckDB는 단일 파일 SQL 데이터베이스로서, 데이터 분석에 특화되어 있음  
  - 대부분의 DuckDB 평가는 정량적인 분석에 집중하는 경향이 있음  
  - 특히 속도 측면에서 DuckDB는 일반적으로 좋은 성능을 보임  
- 하지만 사용자 입장에서는 일단 성능이 만족스러운 수준에 도달하면 더 이상의 속도 향상은 큰 의미가 없음  
  - 대신 사용 편의성이 더 중요하며, DuckDB는 이 부분에서 장점을 가짐  
- DuckDB의 사용 편의성 장점들:  
  1. 개발자 경험   
  2. 메모리보다 큰 데이터셋 처리 가능  
  3. 설치 및 실행이 용이함  
  
#### 인간공학적(Ergonomics)  
- DuckDB는 일반적인 작업을 간단하게 처리할 수 있도록 설계됨  
  - 예를 들어, 입력 파일에서 직접 테이블을 생성하고 스키마를 추론할 수 있음  
  - Parquet 파일의 경우 웹 상의 파일도 읽을 수 있음  
- 테이블을 미리 생성하지 않고도 데이터를 쿼리할 수 있음  
  - `read_parquet` 함수는 relation을 반환하므로 하위 쿼리로 사용 가능  
- DuckDB는 Postgres에서 사용하는 대부분의 SQL 기능을 지원함  
  - 예를 들어, 윈도우 함수가 완전히 지원됨  
  
#### 메모리보다 큰 데이터셋 처리  
- 많은 데이터 도구들은 데이터셋이 컴퓨터 메모리보다 커지면 제대로 동작하지 않음  
  - 이는 과소평가된 고통의 원천이 될 수 있음  
- 반면 DuckDB는 메모리보다 큰 데이터셋을 완전히 지원함  
  - Pandas의 경우 데이터프레임이 시스템 메모리의 50% 이상일 때 문제가 발생할 수 있음  
  
#### 간편한 설치 및 실행  
- DuckDB는 단일 실행 파일 `duckdb`로 컴파일됨  
- WASM을 통해 브라우저에서 직접 DuckDB를 경험할 수 있음 ([shell.duckdb.org](https://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의 좋은 대안이 될 수 있음

## Comments



### Comment 26243

- Author: cometkim
- Created: 2024-06-13T23:29:36+09:00
- Points: 1

ParadeDB 가 최근 좋은 대안을 추가했습니다. https://blog.paradedb.com/pages/introducing_lakehouse

### Comment 26230

- Author: silveris23
- Created: 2024-06-13T12:58:03+09:00
- Points: 1

특히 streamlit 등으로 간단한 인터랙티브 대시보드 만들때 참 좋습니다.

### Comment 26226

- Author: brainer
- Created: 2024-06-13T11:41:36+09:00
- Points: 1

Huggingface Datasets에서 넘어갈 만 하려나요?

### Comment 26220

- Author: hackerwins
- Created: 2024-06-13T10:41:12+09:00
- Points: 1

DuckDB를 기반으로 스프레드시트를 만들어보는 실험을 해보고 있습니다. DuckDB에 대해서 매우 기대됩니다.

### Comment 26217

- Author: xguru
- Created: 2024-06-13T10:23:02+09:00
- Points: 1

[DuckDB - Embedded OLAP DB 오픈소스](https://news.hada.io/topic?id=3312)  
[데이터 없이도 데이터베이스가 되는 DuckDB](https://news.hada.io/topic?id=15093)  
[새로운 jq로서의 DuckDB](https://news.hada.io/topic?id=13948)  
[DuckDB 1.0.0 릴리즈](https://news.hada.io/topic?id=15160)
