테이블 파티셔닝 구성
테이블 파티셔닝 구성 (Configuring Table Partitioning)
Pinot 테이블에 파티셔닝을 구성하는 방법을 안내해요.
출처: 문서
본문
개요 (Overview)
테이블 파티셔닝은 데이터를 파티션 키(컬럼) 기준으로 나눠 세그먼트와 쿼리 라우팅을 최적화해요. 파티셔닝을 올바르게 구성하면 쿼리가 관련 파티션으로만 라우팅되어 스캔 범위를 크게 줄일 수 있어요.
파티셔닝 구성 (Partitioning config)
테이블 구성의 segmentPartitionConfig에서 파티션 함수와 파티션 수를 지정해요. 예를 들어:
"segmentPartitionConfig": {
"columnPartitionMap": {
"memberId": {
"functionName": "modulo",
"numPartitions": 4
}
}
}
- functionName — 파티션 함수입니다.
modulo,murmur,hashcode등을 사용할 수 있어요. - numPartitions — 파티션 수예요.
프루닝 활용 (Using partitioning for pruning)
쿼리에서 파티션 키 컬럼에 등가(equality) 조건이 있으면 브로커가 해당 쿼리를 관련 파티션의 세그먼트만으로 라우팅해요. 이를 파티션 프루닝(partition pruning)이라고 해요. 파티션별 병렬 적재와 조인 최적화에도 활용할 수 있어요.
모범 사례 (Best practices)
- 고카디널리티이면서 등가 필터에 자주 쓰이는 컬럼을 파티션 키로 선택하세요.
- 오프라인과 실시간 테이블 모두에서 일관된 파티션 구성을 사용하세요.
- 파티션 수를 클러스터 크기와 세그먼트 수에 맞게 설정하세요.