Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DataStore: SQL 최적화 기능을 갖춘 pandas 호환 API

DataStore는 chDB의 pandas-compatible API로, 익숙한 pandas DataFrame 인터페이스에 SQL 쿼리 최적화 기능을 결합해 pandas 스타일의 코드를 작성하면서도 ClickHouse의 성능을 활용할 수 있게 합니다.

주요 기능

  • Pandas 호환성: 209개의 Pandas 데이터프레임 메서드, 56개의 .str 메서드, 42개 이상의 .dt 메서드
  • SQL 최적화: 작업이 자동으로 최적화된 SQL 쿼리로 컴파일됩니다
  • 지연 실행: 결과가 필요해질 때까지 작업 실행이 지연됩니다
  • 630개 이상의 API 메서드: 데이터 조작을 위한 포괄적인 API 제공 범위
  • ClickHouse 확장 기능: pandas에는 없는 추가 Accessor(.arr, .json, .url, .ip, .geo)

아키텍처

DataStore 아키텍처

DataStore는 지연 실행이중 엔진 실행을 사용합니다:

  1. 지연 연산 체인: 연산은 즉시 실행되지 않고 기록만 됩니다
  2. 스마트 엔진 선택: QueryPlanner가 각 세그먼트를 최적의 엔진으로 전달합니다(SQL은 chDB, 복잡한 연산은 Pandas)
  3. 중간 결과 캐싱: 빠른 반복 탐색을 위해 각 단계의 결과를 캐시합니다

자세한 내용은 실행 모델을 참조하십시오.

Pandas에서 한 줄로 마이그레이션

# Before (pandas)
import pandas as pd

df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()

# After (DataStore) - just change the import!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()

기존 pandas 코드는 수정 없이 그대로 작동하지만, 이제 ClickHouse 엔진에서 실행됩니다.

성능 비교

DataStore는 pandas보다 훨씬 뛰어난 성능을 제공하며, 특히 집계와 복잡한 파이프라인 작업에서 그 차이가 두드러집니다:

Operation Pandas DataStore Speedup
GroupBy count 347ms 17ms 19.93x
Complex pipeline 2,047ms 380ms 5.39x
Filter+Sort+Head 1,537ms 350ms 4.40x
GroupBy agg 406ms 141ms 2.88x

1,000만 행 기준 벤치마크입니다. 자세한 내용은 벤치마크 스크립트성능 가이드를 참조하십시오.

DataStore를 사용해야 하는 경우

다음과 같은 경우 DataStore를 사용하세요:

  • 대규모 데이터셋(수백만 개의 행)으로 작업하는 경우
  • 집계 및 groupby 작업을 수행하는 경우
  • 파일, 데이터베이스 또는 클라우드 스토리지의 데이터를 쿼리하는 경우
  • 복잡한 데이터 파이프라인을 구축하는 경우
  • 더 나은 성능으로 pandas API를 사용하려는 경우

다음과 같은 경우 Raw SQL API를 사용하세요:

  • SQL을 직접 작성하는 방식을 선호하는 경우
  • 쿼리 실행을 세밀하게 제어해야 하는 경우
  • pandas API에서 제공하지 않는 ClickHouse 전용 기능으로 작업하는 경우

기능 비교

기능 Pandas Polars DuckDB DataStore
Pandas API 호환성 - 부분 지원 미지원 완전 호환
지연 실행 미지원 지원 지원 지원
SQL 쿼리 지원 미지원 지원 지원 지원
ClickHouse 함수 미지원 미지원 미지원 지원
String/DateTime Accessor 지원 지원 미지원 지원 + 추가 기능
배열/JSON/URL/IP/Geo 미지원 부분 지원 미지원 지원
파일 직접 쿼리 미지원 지원 지원 지원
클라우드 스토리지 지원 미지원 제한적 지원 지원

API 통계

범주 개수 지원 범위
DataFrame 메서드 209 pandas의 100%
Series.str accessor 56 pandas의 100%
Series.dt accessor 42+ 100%+ (ClickHouse 추가 기능 포함)
Series.arr accessor 37 ClickHouse 전용
Series.json accessor 13 ClickHouse 전용
Series.url accessor 15 ClickHouse 전용
Series.ip accessor 9 ClickHouse 전용
Series.geo accessor 14 ClickHouse 전용
총 API 메서드 수 630+ -

시작하기

API 참조

고급 주제

구성 및 디버깅

  • 구성 - 모든 구성 옵션
  • 성능 모드 - 최대 처리량을 위한 SQL 우선 모드
  • 디버깅 - Explain, 프로파일링 및 로깅

Pandas 사용자 가이드

간단한 예시

from chdb import datastore as pd

# Read data from various sources
ds = pd.read_csv("sales.csv")
# or: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# or: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")

# Familiar pandas operations - automatically optimized to SQL
result = (ds
    .filter(ds['amount'] > 1000)           # WHERE amount > 1000
    .groupby('region')                      # GROUP BY region
    .agg({'amount': ['sum', 'mean']})       # SUM(amount), AVG(amount)
    .sort_values('sum', ascending=False)    # ORDER BY sum DESC
    .head(10)                               # LIMIT 10
)

# View the generated SQL
print(result.to_sql())

# Execute and get results
df = result.to_df()  # Returns pandas DataFrame

다음 단계

Navigation