본문 바로가기

인공지능

DuckDB의 분산 컴퓨팅 도전? DeepSeek의 smallpond 분석

728x90
반응형

🔍 DuckDB가 분산 컴퓨팅을 지원한다고?

DuckDB는 뛰어난 성능과 간편한 사용성으로 많은 데이터 엔지니어들에게 사랑받는 분석용 데이터베이스입니다. 하지만 본질적으로 싱글 노드(In-process) 실행이 기본이라 대량 데이터 처리에는 한계가 있었습니다.

그런데 최근 AI 기업 DeepSeek이 DuckDB를 분산 환경에서 활용할 수 있도록 하는 smallpond를 공개했습니다.
이 기술이 의미하는 바는 무엇일까요? 기존 빅데이터 프레임워크(Spark, Ray 등)와 비교했을 때 어떤 차이가 있을까요? smallpond의 핵심 아키텍처와 실제 적용 가능성을 함께 살펴보겠습니다.

반응형

🐥 DuckDB는 왜 AI 기업에서 주목받는가?

DuckDB란?

DuckDB는 SQLite처럼 가벼운 데이터베이스지만, 빅데이터 분석에 최적화된 엔진입니다.

  • 별도 서버가 필요 없고, 애플리케이션 내부에서 실행 가능
  • Parquet, Iceberg 등 주요 데이터 포맷을 지원
  • 고성능 쿼리 실행 (컬럼 기반 처리, 멀티코어 활용)

특히 AI 분야에서는 HuggingFace 같은 기업이 DuckDB를 활용해 빠르게 대용량 데이터셋을 탐색하고 분석하는 데 사용하고 있습니다.

하지만 단일 노드 기반이라는 점이 한계였습니다. 대규모 데이터를 처리하려면 분산 시스템이 필요합니다.


🌊 DeepSeek의 smallpond란?

🔥 DeepSeek의 새로운 도전

DeepSeek은 AI 모델과 데이터 인프라 혁신을 주도하는 기업입니다.
최근 공개한 smallpond는 DuckDB의 싱글 노드 한계를 뛰어넘기 위한 분산 컴퓨팅 프레임워크입니다.

💡 벤치마크 결과:
smallpond는 110.5TiB(테라바이트)의 데이터를 30분 14초 만에 정렬하며 평균 처리 속도 3.66TiB/min을 기록했습니다.

이제 smallpond의 핵심 아키텍처를 살펴보겠습니다.

 


⚙️ smallpond의 핵심 아키텍처 분석

📌 1️⃣ DAG 기반 실행 모델

smallpond는 DAG(Directed Acyclic Graph) 기반의 실행 모델을 채택했습니다.
즉, 데이터를 바로 처리하지 않고 논리적 실행 계획을 먼저 구성한 후 필요할 때만 실행하는 방식입니다.

import duckdb
conn = duckdb.connect()
conn.sql("SELECT * FROM 'data.parquet'").count()

이처럼 count() 같은 액션을 호출해야 쿼리가 실행됩니다.

🛠 주요 연산 방식:

  • map(), filter(), partial_sql() 등의 연산은 실행되지 않고 DAG를 생성
  • write_parquet(), compute(), count() 등의 액션이 호출될 때 실행됨
  • 최적의 실행 경로를 자동 설정하여 불필요한 연산을 최소화

📌 2️⃣ Ray Core를 활용한 분산 처리

DuckDB는 기본적으로 단일 프로세스에서 실행됩니다.
smallpond는 Python의 Ray Core 프레임워크를 이용해 여러 노드에서 병렬 처리를 수행합니다.

✔️ 분산 처리 방식:

  1. 데이터를 여러 파티션(Partition) 으로 나눔
  2. 각 파티션을 별도의 DuckDB 인스턴스에서 독립적으로 처리
  3. 처리된 데이터를 다시 병합하여 최종 결과 생성

✔️ 지원하는 파티셔닝 방식:

  • 해시 파티셔닝 (특정 컬럼 기준)
  • 균등 파티셔닝 (파일 또는 행 단위)
  • 랜덤 셔플 파티셔닝

🔄 기존 분산 프레임워크(Spark, Ray 등)와 비교

smallpond (DuckDB + Ray) Apache Spark Ray (Daft 등)

분산 방식 파일/파티션 단위 분산 태스크 & 오퍼레이터 단위 분산 데이터프레임 연산 단위 분산
실행 모델 Lazy Evaluation (DAG 기반) Lazy Evaluation (DAG 기반) Lazy Execution
주요 사용 사례 대용량 데이터 정렬, ETL 대규모 데이터 분석, ML 파이프라인 병렬 연산, AI 모델 배포
복잡한 쿼리 최적화 낮음 높음 보통
설치 및 사용 편의성 쉬움 (Python 코드만 필요) 중간 (Spark 클러스터 필요) 중간 (Ray 클러스터 필요)

🧐 핵심 차이점

  • Spark: SQL 연산을 세밀하게 분산할 수 있지만, 설정이 복잡하고 클러스터 관리 비용이 높음
  • Ray (Daft): 데이터프레임 단위로 분산 처리 가능하지만, AI/ML 특화 환경
  • smallpond: 전체 파티션을 별도 DuckDB 인스턴스에서 실행하기 때문에 구조가 단순함

즉, smallpond는 데이터 정렬, 전처리, ETL 작업에 적합하지만, 복잡한 쿼리 분산 실행에는 최적화되지 않음.


🚀 smallpond의 실제 활용 가능성과 한계

적용 가능한 워크로드

  • TB(테라바이트) 단위 데이터 정렬 및 필터링
  • 빠른 데이터 전처리 및 변환(ETL)
  • AI 모델 학습 데이터 준비

한계점 및 고려 사항

  • Ray 클러스터 필요: 분산 실행을 위해 Ray 환경을 설정해야 함
  • SQL 단위 병렬 처리 부족: Spark처럼 쿼리 내부 연산을 나눠서 실행하지 못함
  • 3FS 전용 스토리지: DeepSeek이 자체 개발한 분산 파일 시스템(3FS)이 필요하여 일반적인 클라우드 스토리지(S3 등)와 직접 비교 어려움

728x90

DeepSeek의 smallpond는 DuckDB의 한계를 넘어서려는 첫 번째 시도입니다.
이제 데이터 엔지니어들은 DuckDB의 간결함을 유지하면서도 대규모 데이터 처리까지 가능해졌습니다.

smallpond의 의미

  • DuckDB를 빅데이터 환경에서도 활용할 수 있도록 확장
  • ETL 및 데이터 전처리에 적합한 경량 분산 프레임워크 제공
  • Spark, Ray와는 다른 방식의 분산 접근법을 제시

하지만...

  • SQL 쿼리 단위의 최적화가 부족해 복잡한 연산에는 Spark가 여전히 유리
  • DeepSeek의 3FS 스토리지 의존도가 높아, 실무 적용에 고려할 점이 많음

결국, "어떤 워크로드에 적합한가?" 가 핵심 질문입니다.
smallpond는 "DuckDB를 활용해 빠르게 데이터를 전처리하고 싶다!" 라는 유스케이스에 딱 맞는 도구입니다.

앞으로 smallpond가 AWS S3 같은 범용 스토리지를 지원할지, 혹은 더 발전된 분산 처리 모델로 확장될지 기대해봅니다. 🚀

https://mehdio.substack.com/p/duckdb-goes-distributed-deepseeks?fbclid=IwZXh0bgNhZW0CMTEAAR2PnnQIu-zZflUJCphWW5afSl83H-nQtp1tgmPilaQApeidbO2p6lB1u-g_aem_my5_hZen7xqUdNF76vusjw

 

DuckDB goes distributed? DeepSeek’s smallpond takes on Big Data

DeepSeek is pushing DuckDB beyond its single-node roots with smallpond, a new, simple approach to distributed compute. But does it solve the scalability challenge—or introduce new trade-offs?

mehdio.substack.com

728x90
반응형