0.6.0

0.6.0

Apache Pinot 0.6.0 릴리스 노트 문서예요. 이 릴리스는 upsert, 계층형 스토리지(tiered storage), pinot-spark-connector, having 절 지원, 테이블 구성과 스키마에 대한 더 많은 검증, ordinals 지원 등 훌륭한 새 기능을 도입했어요.

출처: 문서

본문

요약 (Summary)

이 릴리스는 upsert, 계층형 스토리지, pinot-spark-connector, having 절 지원, GROUP BY 및 ORDER BY 절의 ordinals 지원, 배열 변환 함수, 세그먼트 메타데이터 전용 모드의 push 작업 타입 추가, 인스턴스 태그 업데이트 같은 새 API, 새 health check 엔드포인트 등 훌륭한 새 기능을 도입했어요. 또한 많은 중요한 버그 수정도 포함되어 있어요. 자세한 내용은 아래를 참고해 주세요.

릴리스는 다음 커밋에서 생성되었어요: e5c9bec 그리고 다음 cherry-pick:

주요 새 기능 (Notable New Features)

  • 계층형 스토리지 (#5793)
  • Upsert 기능 (#6096, #6113, #6141, #6149, #6167)
  • QueryContext에서 집계 함수 사전 생성 (#5805)
  • 컨트롤러 healthcheck 엔드포인트 /health 추가 (#5846)
  • pinot-spark-connector 추가 (#5787)
  • 다중값 비사전(non-dictionary) group by 지원 (#5851)
  • 모든 스칼라 함수의 타입 변환 지원 (#5849)
  • 추가 날짜시간 기능 추가 (#5438)
  • ORDER-BY의 사후 집계(post-aggregation) 지원 (#5856)
  • SELECT의 사후 집계 지원 (#5867)
  • SQL용 범위 병합을 지원하는 RANGE FilterKind 추가 (#5898)
  • HAVING 지원 추가 (#5889)
  • int가 아닌 데이터 타입의 정확한 distinct count 지원 (#5872)
  • 최대 qps 버킷 수 추가 (#5922)
  • raw 값의 Range Indexing 지원 (#5853)
  • IdSet 및 IdSetAggregationFunction 추가 (#5926)
  • [Deepstore 우회] 사소한 버그 수정과 함께 Deepstore 우회 통합 테스트 추가 (#5857)
  • 스키마 불일치 감지를 위한 Hadoop 카운터 추가 (#5873)
  • RawThetaSketchAggregationFunction 추가 (#5970)
  • 직접 updateTags를 위한 Instance API (#5902)
  • 스트리밍 쿼리 핸들러 추가 (#5717)
  • InIdSetTransformFunction 추가 (#5973)
  • 헤더에 수집 설명(ingestion descriptor) 추가 (#5995)
  • Zookeeper put api (#5949)
  • Feature/#5390 세그먼트 인덱싱 리로드 상태 api (#5718)
  • 세그먼트 처리 프레임워크 (#5934)
  • QueryExecutor의 스트리밍 쿼리 지원 (#6027)
  • 테이블 수준 메트릭스 발행을 위한 허용 테이블 목록 추가 (#6037)
  • PQL과 SQL 쿼리 필터를 모두 최적화하는 FilterOptimizer 추가 (#6056)
  • 세그먼트 메타데이터 전용 모드의 push 작업 타입 추가 (#5967)
  • RealtimeToOfflineSegments 태스크용 Minion taskExecutor (#6050, #6124)
  • 배열 변환 함수 추가: array_average, array_max, array_min, array_sum (#6084)
  • 세그먼트 리로드 중 기존 star-tree 수정/제거 허용 (#6100)
  • off-heap bloom filter 리더 구현 (#6118)
  • SQL용 멀티스레드 Group By 리듀서 지원 (#6044)
  • OnHeapGuavaBloomFilterReader 추가 (#6147)
  • GROUP BY 및 ORDER BY 절에서 ordinals 사용 지원 (#6152)
  • Dictionary용 공통 API 병합 (#6176)
  • 세그먼트 업로드에 테이블 수준 잠금 추가 ([#6165])
  • group by용 재귀 함수 검증 체크 추가 (#6186)
  • StrictReplicaGroupInstanceSelector 추가 (#6208)
  • IN_SUBQUERY 지원 추가 (#6022)
  • IN_PARTITIONED_SUBQUERY 지원 추가 (#6043)
  • 일부 UI 기능 (#5810, #5981, #6117, #6215)

특별 참고 사항 (Special notes)

  • 이전 버전 호환을 유지하려면 브로커를 서버보다 먼저 업그레이드해야 해요:

    • group key 구분자를 '\t'에서 '\0'으로 변경 (#5858)
    • int가 아닌 데이터 타입의 정확한 distinct count 지원 (#5872)
  • Pinot 컴포넌트는 다음 순서대로 배포해야 해요:

    (PinotServiceManager → ServiceRole.CONTROLLER 역할의 Bootstrap 서비스 → 나머지 모든 Bootstrap 서비스 병렬)

    • ServiceManager 사용 시 Broker와 Server를 병렬로 시작 (#5917)
    • 새 설정 도입 및 이전 설정 폐기:
    • 실시간 임계값 속성 이름을 덜 모호하게 변경 (#5953)
    • Controller에서 Broker API 서명 변경 (#6119)
  • 이 집계 함수는 여전히 베타 버전이에요. 이 PR은 서버에서 브로커로 전송되는 데이터 형식의 변경을 포함하므로, 브로커와 서버가 모두 새 버전으로 업그레이드된 경우에만 동작해요:

    • DistinctCountThetaSketchAggregationFunction 강화 (#6004)

주요 버그 수정 (Major Bug fixes)

  • 빈 sketch와 union을 제거해 DistinctCountThetaSketch 성능 개선 (#5798)
  • 압축되지 않은 데이터에 대해 데이터 버퍼에서 직접 읽도록 VarByteChunkSVForwardIndexReader 강화 (#5816)
  • 스키마 fetch 호출의 이전 버전 비호환 문제 수정 (#5885)
  • MetricsHelper의 경쟁 조건 수정 (#5887)
  • ControllerLeaderLocator가 생성되기 전에 세그먼트가 완료되는 경쟁 조건 수정 (#5864)
  • BYTES 컬럼의 CSV 및 JSON 컨버터 수정 (#5931)
  • 변환 UDF가 실제 함수 이름이 아닌 함수 이름 'OTHER'로 파싱되는 문제 수정 (#5940)
  • 스트림 offset을 가져오는 동안 내장된 예외 통합 (#5956)
  • 계획 단계에 쿼리 타임아웃 사용 (#5990)
  • 스키마를 가져올 때 null 검사 추가 (#5994)
  • schema/tableConfig 추가/업데이트 시 timeColumnName 검증 (#5966)
  • 테이블 구성과 스트림의 파티셔닝 불일치 처리 (#6031)
  • 불변 세그먼트의 내장 가상 컬럼 수정 (#6042)
  • 실시간 세그먼트가 커밋될 때 라우팅 새로고침 (#6078)
  • 정밀도 있는 Decimal Sum 집계 지원 추가 (#6053)
  • zk 연결이 끊어지면 예외를 던지도록 Helix 호출 수정 (#6069)
  • 세그먼트 리로드 중 기존 star-tree 수정/제거 허용 (#6100)
  • 스키마 빌더에 최대 길이 지원 추가 (#6112)
  • 비-star-tree 차원에서 모든 일치 프레디킷을 건너뛰도록 star-tree 강화 (#6109)

이전 버전과 호환되지 않는 변경 (Backward Incompatible Changes)

  • 실시간 임계값 속성 이름을 덜 모호하게 변경 (#5953)
  • DistinctCountThetaSketchAggregationFunction 강화 (#6004)
  • ORC, Thrift, ProtoBuf 레코드의 Deep Extraction 지원 (#6046)

더 알아보기 (Learn more)