PyCon US 2025 발표내용입니다.

DuckDB를 활용한 데이터 과학: 복잡한 파일 환경 길들이기 - Alex Monahan

Alex Monahan의 발표 영상에서는 오픈소스 분석 데이터베이스 라이브러리인 DuckDB가 데이터 과학자들이 다양하고 정돈되지 않은 데이터 파일을 관리하고 분석하는 데 어떻게 도움을 줄 수 있는지 설명합니다.

주요 내용:

  • 파일 동물원 문제: 데이터 과학자들은 CSV, Parquet, 스프레드시트 등 다양한 형식의 수많은 파일들을 다루며, 이들은 여러 위치와 클라우드 플랫폼에 흩어져 있을 수 있습니다. 이러한 파일들은 크기가 크고, 개수가 많으며, 정돈되지 않았거나 손상되기 쉽습니다.
  • DuckDB 개요: DuckDB는 "분석을 위한 SQLite"로 소개됩니다. 오픈소스(MIT 라이선스)이며, 분석 워크로드를 위해 설계된 인-프로세스(임베디드) 데이터베이스입니다. 의존성 없이 pip install duckdb로 쉽게 설치할 수 있으며, Python 스크립트나 노트북 내에서 직접 사용할 수 있습니다.
  • 다양한 파일 읽기: DuckDB는 S3와 같은 클라우드 저장소의 파일을 포함하여 광범위한 파일 형식을 읽을 수 있습니다. 특히 강력한 CSV 리더는 실제 지저분한 CSV 파일을 처리하는 데 뛰어나며, 문제가 있는 파일을 성공적으로 파싱하는 능력에서 다른 많은 도구를 능가합니다.
  • 친숙한 SQL 및 관계형 API: DuckDB는 사용자 친화적인 SQL 인터페이스(예: SELECT *는 선택 사항)와 Python 스타일의 관계형 API를 제공합니다. 파일을 마치 테이블인 것처럼 직접 쿼리할 수 있으며, 필요할 때만 데이터를 읽는 지연(lazy) 방식으로 작동합니다.
  • 상호 운용성: Pandas 및 Polars와 같은 인기 있는 데이터 과학 라이브러리와 원활하게 통합되며, 동일한 프로세스에서 실행되기 때문에 제로 카피(zero-copy) 데이터 교환이 가능합니다.
  • DuckDB 파일 형식: 기본 DuckDB 파일 형식은 여러 테이블, 뷰, SQL 함수 및 관계를 저장할 수 있는 단일 컬럼 기반 압축 파일입니다. 이 형식은 편집 가능하고 ACID 속성을 지원하며 속도와 효율성을 위해 설계되었습니다.
  • ACID 속성: DuckDB는 원자성(전부 아니면 전무 변경), 일관성(키를 사용하여 데이터 품질 문제 방지), 격리성(동시 쿼리가 서로 간섭하지 않음), 지속성(커밋된 데이터는 손상으로부터 안전함)을 통해 데이터 과학 워크플로에 데이터베이스의 견고성을 제공합니다.
  • 사용 사례: 데이터를 단일하고 효율적이며 쿼리 가능한 형식으로 통합하여 "파일 동물원"을 길들이는 데 유용합니다. 또한 반복적인 데이터 과학 작업 중에 새로운 파일 동물원이 생성되는 것을 방지하는 데 도움이 됩니다.
  • 커뮤니티 및 확장성: DuckDB는 확장 가능하며, 커뮤니티 기여를 통해 통계 패키지 파일 및 Google Sheets와 같은 형식에 대한 지원이 추가되고 있습니다.

DuckDB Labs 및 MotherDuck(DuckDB 기반 클라우드 데이터 웨어하우스)에서 근무하는 Alex Monahan은 DuckDB가 데이터베이스의 강력함과 데이터 과학에 필요한 유연성을 결합하여 데이터 과학자를 위한 데이터 처리를 단순화하는 것을 목표로 한다고 강조했습니다.