메인 콘텐츠로 건너뛰기
DataStore의 지연 실행 모델을 이해하는 것은 이를 효과적으로 활용하고 최적의 성능을 얻는 데 중요합니다.

지연 실행

DataStore는 지연 실행을 사용합니다. 즉, 연산은 즉시 실행되지 않고 기록된 후 최적화된 SQL 쿼리로 컴파일됩니다. 실행은 실제로 결과가 필요할 때만 이루어집니다.

예시: 지연 실행 vs 즉시 실행

지연 실행의 이점

  1. 쿼리 최적화: 여러 작업이 하나의 최적화된 SQL 쿼리로 컴파일됩니다
  2. 필터 푸시다운: 필터가 데이터 소스에서 적용됩니다
  3. 컬럼 프루닝: 필요한 컬럼만 읽습니다
  4. 결정 지연: 실행 엔진은 런타임에 선택할 수 있습니다
  5. 계획 확인: 실행 전에 쿼리를 확인하거나 디버그할 수 있습니다

실행 트리거

실제 값이 필요해지면 실행이 자동으로 트리거됩니다:

자동 트리거

예시:

지연 실행으로 유지되는 작업

예시:

3단계 실행

DataStore 연산은 3단계 실행 모델을 따릅니다:

단계 1: SQL 쿼리 생성 (지연 실행)

SQL로 표현할 수 있는 작업이 누적됩니다:

2단계: 실행 시점

트리거가 발생하면 누적된 SQL이 실행됩니다:

단계 3: DataFrame 작업(있는 경우)

실행 후 pandas 전용 작업을 연달아 수행하는 경우:

실행 계획 확인하기

실행 계획을 확인하려면 explain()을 사용하세요:
Query
Response
더 자세한 내용은 verbose=True를 사용하십시오:
Debugging: explain()에서 전체 문서를 확인하십시오.

캐싱

DataStore는 불필요한 쿼리 반복을 피하기 위해 실행 결과를 캐시합니다.

캐싱 작동 원리

캐시 무효화

작업을 통해 DataStore가 변경되면 캐시가 무효화됩니다:

수동 캐시 제어


SQL과 Pandas 작업 혼합하기

DataStore는 SQL과 pandas를 함께 사용하는 작업을 지능적으로 처리합니다:

SQL 호환 연산

다음 연산은 SQL로 컴파일됩니다:
  • filter(), where()
  • select()
  • groupby(), agg()
  • sort(), orderby()
  • limit(), offset()
  • join(), union()
  • distinct()
  • 컬럼 연산(수학, 비교, 문자열 메서드)

Pandas 전용 작업

다음 작업은 실행을 트리거하고 pandas를 사용합니다:
  • 사용자 정의 함수와 함께 apply()
  • 복잡한 집계와 함께 pivot_table()
  • stack(), unstack()
  • 실행된 DataFrame에서 수행하는 작업

하이브리드 파이프라인


실행 엔진 선택

DataStore는 다양한 엔진을 사용해 작업을 실행할 수 있습니다:

자동 모드 (기본)

chDB 엔진 강제 지정

pandas 엔진 강제 지정

자세한 내용은 구성: 실행 엔진을 참조하십시오.

성능 영향

좋음: 일찍 필터링

나쁨: 필터를 나중에 적용

좋은 예: 가능한 한 일찍 컬럼 선택하기

권장: SQL에 맡기세요


모범 사례 요약

  1. 실행 전에 작업을 이어서 구성하십시오 - 전체 쿼리를 만든 다음 한 번만 트리거하십시오
  2. 가능한 한 일찍 필터링하십시오 - 원본에서 데이터를 줄이십시오
  3. 필요한 컬럼만 선택하십시오 - 컬럼 프루닝은 성능을 향상시킵니다
  4. 실행 방식을 이해하려면 explain()을 사용하십시오 - 실행 전에 디버그하십시오
  5. 집계는 SQL이 처리하도록 하십시오 - ClickHouse는 이에 최적화되어 있습니다
  6. 실행 트리거를 숙지하십시오 - 의도치 않은 조기 실행을 피하십시오
  7. 캐싱을 현명하게 사용하십시오 - 캐시가 언제 무효화되는지 이해하십시오