30P by xguru 3달전 | favorite | 댓글 5개
  • 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)
    • 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

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

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

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