메인 콘텐츠로 건너뛰기
DataStore는 익숙한 Pandas DataFrame 인터페이스와 SQL 쿼리 최적화의 강점을 결합한 chDB의 Pandas 호환 API로, Pandas 스타일의 코드를 작성하면서도 ClickHouse의 성능을 활용할 수 있습니다.

주요 기능

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

아키텍처

DataStore는 **지연 평가(lazy evaluation)**와 이중 엔진 실행을 사용합니다:
  1. 지연 연산 체인: 연산은 즉시 실행되지 않고 기록만 됩니다
  2. 스마트 엔진 선택: QueryPlanner가 각 세그먼트를 최적의 엔진으로 보냅니다(SQL은 chDB, 복잡한 연산은 Pandas)
  3. 중간 결과 캐싱: 빠른 반복 탐색을 위해 각 단계의 결과를 캐시합니다
자세한 내용은 실행 모델을 참조하십시오.

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

# 이전 (pandas)
import pandas as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()

# 이후 (DataStore) - import만 변경하면 됩니다!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()
기존 pandas 코드는 변경 없이 그대로 작동하지만, 이제 ClickHouse engine에서 실행됩니다.

성능 비교

DataStore는 pandas보다 전반적으로 성능이 크게 향상되며, 특히 집계와 복잡한 파이프라인에서 두드러집니다:
OperationPandasDataStoreSpeedup
GroupBy count347ms17ms19.93x
Complex pipeline2,047ms380ms5.39x
Filter+Sort+Head1,537ms350ms4.40x
GroupBy agg406ms141ms2.88x
1,000만 행을 기준으로 한 벤치마크입니다. 자세한 내용은 벤치마크 스크립트성능 가이드를 참조하십시오.

DataStore를 사용하는 경우

다음과 같은 경우 DataStore를 사용하세요:
  • 대규모 데이터셋(수백만 개의 행)을 다룰 때
  • 집계 및 groupby 연산을 수행할 때
  • 파일, 데이터베이스 또는 클라우드 스토리지의 데이터를 쿼리할 때
  • 복잡한 데이터 파이프라인을 구축할 때
  • 더 나은 성능의 pandas API가 필요할 때
다음과 같은 경우 raw SQL API를 사용하세요:
  • SQL을 직접 작성하는 방식을 선호할 때
  • 쿼리 실행을 세밀하게 제어해야 할 때
  • pandas API에서 제공되지 않는 ClickHouse 고유 기능을 사용해야 할 때

기능 비교

기능PandasPolarsDuckDBDataStore
Pandas API 호환성-부분 지원아니요완전 지원
지연 평가아니요
SQL 쿼리 지원아니요
ClickHouse 함수아니요아니요아니요
String/DateTime Accessor아니요예 + 추가 기능
배열/JSON/URL/IP/Geo아니요부분 지원아니요
파일 직접 쿼리아니요
클라우드 스토리지 지원아니요제한적

API 통계

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

시작하기

API 참조

고급 주제

구성 및 디버깅

Pandas 사용자 가이드

간단한 예시

from chdb import datastore as pd

# 다양한 소스에서 데이터 읽기
ds = pd.read_csv("sales.csv")
# 또는: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# 또는: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")

# 익숙한 pandas 연산 - 자동으로 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
)

# 생성된 SQL 확인
print(result.to_sql())

# 실행 및 결과 가져오기
df = result.to_df()  # pandas DataFrame 반환

다음 단계

마지막 수정일 2026년 6월 10일