사용 가능한 엔진
| 엔진 | 설명 | 가장 적합한 용도 |
|---|---|---|
auto | 작업별로 가장 적합한 엔진을 자동으로 선택합니다 | 일반 용도(기본값) |
chdb | 모든 작업에 ClickHouse SQL을 사용합니다 | 대규모 데이터, 집계 |
pandas | 모든 작업에 pandas를 사용합니다 | 호환성 테스트, pandas 전용 기능 |
엔진 설정
전역 구성
현재 엔진 확인
자동 모드
auto 모드(기본값)에서는 DataStore가 각 연산에 가장 적합한 엔진을 선택합니다:
chDB에서 실행되는 연산
- SQL 호환 필터링 (
filter(),where()) - 컬럼 선택 (
select()) - 정렬 (
sort(),orderby()) - 그룹화 및 집계 (
groupby().agg()) - 조인 (
join(),merge()) - 중복 제거 (
distinct(),drop_duplicates()) - 개수 제한 (
limit(),head(),tail())
pandas에서 실행하는 작업
- 사용자 정의 apply 함수 (
apply(custom_func)) - 사용자 정의 집계를 사용하는 복잡한 피벗 테이블
- SQL로 표현할 수 없는 작업
- 입력이 이미 pandas DataFrame인 경우
예시
chDB 모드
사용해야 하는 경우
- 대규모 데이터셋(수백만 개의 행) 처리
- 집계 중심 워크로드
- SQL 최적화를 최대한 활용하려는 경우
- 모든 작업에서 일관된 동작이 필요한 경우
성능 특성
| 작업 유형 | 성능 |
|---|---|
| GroupBy/집계 | 매우 우수함 (최대 20배 빠름) |
| 복잡한 필터링 | 매우 우수함 |
| 정렬 | 매우 우수 |
| 단순한 단일 필터 | 양호함 (약간의 오버헤드) |
제한 사항
- 사용자 정의 Python 함수는 지원되지 않을 수 있습니다.
- 일부 pandas 전용 기능은 변환이 필요할 수 있습니다.
pandas 모드
사용해야 하는 경우
- pandas와의 호환성 테스트
- pandas 전용 기능 사용
- pandas 관련 문제 디버깅
- 데이터가 이미 pandas 포맷인 경우
성능 특성
| 작업 유형 | 성능 |
|---|---|
| 단순 작업 | 양호 |
| 사용자 정의 함수 | 매우 우수 |
| 복잡한 집계 | chDB보다 느림 |
| 대규모 데이터셋 | 메모리 사용량이 큼 |
Cross-DataStore 엔진
예시
엔진 선택 로직
자동 모드 의사결정 트리
함수 수준 재정의
성능 비교
| 연산 | pandas (ms) | chdb (ms) | 속도 향상 |
|---|---|---|---|
| GroupBy 카운트 | 347 | 17 | 19.93x |
| 복합 연산 | 1,535 | 234 | 6.56x |
| 복잡한 파이프라인 | 2,047 | 380 | 5.39x |
| Filter+Sort+Head | 1,537 | 350 | 4.40x |
| GroupBy 집계 | 406 | 141 | 2.88x |
| 단일 필터 | 276 | 526 | 0.52x |
- chdb는 집계와 복잡한 파이프라인에서 강점을 보입니다
- pandas는 단순한 단일 연산에서는 약간 더 빠릅니다
- 두 방식의 장점을 모두 활용하려면
auto모드를 사용하세요