디자인 문서

디자인 문서 (Design Documents)

Design 문서 인덱스와 새 문서 제안 방법을 다루는 문서예요. 디자인 문서는 Apache Pinot의 중요한 변경 뒤에 있는 동기, 기술 접근 방식, 트레이드오프를 담아요. 기여자와 운영자가 기능이 왜 그렇게 동작하는지 이해하도록 돕는 영구 기록 역할을 해요.

출처: 문서

본문

디자인 문서는 Apache Pinot의 중요한 변경 뒤에 있는 동기, 기술 접근 방식, 트레이드오프를 담아요. 기능이 왜 그렇게 동작하는지 이해할 수 있도록 기여자와 운영자에게 영구 기록을 제공해요.

목적 (Purpose)

  • 정렬 (Alignment) -- 디자인 문서는 코드가 작성되기 전에 커뮤니티가 접근 방식을 검토하게 해주어 재작업을 줄여요.
  • 온보딩 (Onboarding) -- 새 기여자는 디자인 문서를 읽고 주요 하위 시스템 뒤의 추론을 이해할 수 있어요.
  • 감사 가능성 (Auditability) -- 디자인 문서는 아키텍처 결정의 역사적 기록을 제공해요.

디자인 문서를 언제 작성할까 (When to write a design document)

변경이 다음 중 하나를 포함한다면 디자인 문서를 작성해요:

  • 새 주요 기능이나 하위 시스템 (예: 새 인덱스 타입, 새 쿼리 엔진 단계, 새 수집 경로)
  • 기존 하위 시스템의 동작이나 데이터 형식을 바꾸는 중요한 변경
  • 여러 Pinot 서비스(컨트롤러, 브로커, 서버, 미니언)에 영향을 주는 교차 컴포넌트 변경
  • 하위 호환성에 영향을 주는 공용 API 변경

버그 수정, 작은 개선, 문서 변경은 일반적으로 디자인 문서가 필요하지 않아요.

디자인 문서 제안 방법 (How to propose a design document)

  1. GitHub 이슈 열기 -- 문제와 제안된 해결책을 높은 수준에서 설명. design-doc 또는 PEP(Pinot 개선 제안)로 레이블 지정.
  2. 디자인 문서 작성 -- Google Doc(또는 동등한 것)에 작성해 Pinot dev 메일링 리스트([email protected])에 공유. 포함 내용:
    • 문제 설명과 동기
    • 도움이 되면 다이어그램을 붙인 제안 디자인
    • API 또는 구성 변경
    • 고려한 대안
    • 롤아웃·하위 호환성 계획
  3. 피드백 수집 -- 문서와 GitHub 이슈에서 리뷰어의 피드백을 수집.
  4. 이 페이지 업데이트 -- 디자인이 수용되면 아래 인덱스 테이블에 행을 추가.
  5. 구현 -- 기여 지침에 따라 기능 구현.

디자인 문서 인덱스 (Design document index)

저장소 내 디자인 문서 (In-repo design docs)

이름 설명
세그먼트 라이터 API 전체 배치 수집 잡 없이 프로그래밍 방식으로 Pinot 세그먼트를 구축하는 API

2025

이름 저자 날짜
NGram 필터링 인덱스 Ting Chen, Qiaochu Liu 2025년 8월

2024

이름 저자 날짜
쿼리에서 공통 표현식 재사용 Gonzalo Ortiz 2024년 9월

2022

이름 저자 날짜
오프라인 세그먼트 피어 다운로드 Xuanyi Li 2022년 11월
포워드 인덱스 없는 세그먼트 형식 Sonam Mandal 2022년 10월
런타임 쿼리 킬 Jia Guo 2022년 10월
세그먼트 리로드의 포워드 인덱스 핸들러 Vivek Iyer 2022년 9월
Pinot 서버 다중 데이터 디렉토리 지원 Xiaobing Li 2022년 8월
리로드 상태 API Saurabh Dubey 2022년 8월
실시간 수집 중 중복 제거 Saurabh Dubey 2022년 6월
적응형 서버 선택 Vivek Iyer 2022년 6월
MV 컬럼 압축 평가 Sonam Mandal 2022년 6월
인스턴스 할당을 위한 데이터 이동 최소화 Jialiang Li 2022년 6월
서버 실패 감지기 Jackie Jiang 2022년 4월
일반화된 사전 집계 Evan Noon 2022년 3월
다중 스테이지 쿼리 엔진 Rong Rong 2022년 2월
스트림 일시 중지/재개 Sajjad Moradi, Subbu Subramaniam 2022년 2월
장애 도메인 인식 Jia Guo, Sidd 2022년 2월
Pinot Flink 커넥터 Yupeng Fu 2022년 1월
플러그 가능한 인덱스 Richard Startin 2022년 1월
CLP로 Pinot에서 페타바이트 규모 로그 저장·검색 Ting Chen 2022년 12월

2021

이름 저자 날짜
원시 가변 길이 포워드 인덱스 형식 개선 Richard Startin 2021년 11월
일관된 푸시와 롤백 Seunghyun Lee, Jialiang Li 2021년 11월
집계 필터 Atri Sharma 2021년 10월
범위 인코딩 비트 슬라이스 인덱스 Richard Startin 2021년 9월
시계열 집계 함수 Lakshmanan Velusamy, Weixiang Sun 2021년 9월
네이티브 텍스트 인덱스 Atri Sharma 2021년 9월
지리 공간 지원 Yupeng Fu 2021년 5월
세그먼트 라이터 API Neha Pawar 2021년 2월
부분 Upsert Qiaochu Liu 2021년 2월

2020

이름 저자 날짜
Pinot의 Kinesis 통합 Neha Pawar 2020년 12월
JSON 인덱싱 Kishore Gopalakrishna 2020년 10월
Lookup Join Dharak Kharod 2020년 10월
엄격한 복제 그룹 라우팅 Jackie Jiang 2020년 10월
클러스터 매니저 UI Neha Pawar 2020년 9월
Pinot Upsert 재검토 Yupeng Fu 2020년 9월
ID 필터링에 IdSet 사용 Jackie Jiang 2020년 9월
Pinot 관리 오프라인 흐름 Neha 2020년 8월
서버 헬스 체커 Chinmay 2020년 8월
HAVING과 사후 집계 지원 Jackie Jiang 2020년 7월
세그먼트 병합과 롤업 (업데이트) Seunghyun 2020년 6월
수집 중 필터링 Neha 2020년 6월
세그먼트 전처리 Hadoop 잡 Jialiang Li 2020년 5월
수집 중 평탄화 Neha 2020년 5월
호환성 회귀 테스트 Subbu 2020년 5월
pinot-core와 pinot-common 리팩터 Kishore 2020년 5월
Pinot의 범위 인덱싱 Kishore 2020년 4월
TimeFieldSpec 폐기, DateTimeFieldSpec 주류화 Neha 2020년 4월
Pinot의 지리 공간 지원 Yupeng Fu 2020년 4월
수집 중 컬럼 변환 Neha 2020년 3월
계층화 저장소 Neha 2020년 3월
Pinot 합성 데이터 생성기 Alex Pucher 2020년 3월

2019 및 이전 (2019 and earlier)

이름 저자 날짜
텍스트 검색 Siddharth Teotia 2019년 11월
Pinot SQL 마이그레이션 계획 Xiang Fu 2019년 11월
세그먼트 관리 REST API Jackie Jiang 2019년 11월
집계의 Order By Neha 2019년 10월
서비스로서의 Pinot 벤치마크 Jialiang Li 2019년 9월
Helix와 Pinot 간 컨트롤러 분리 Jialiang Li 2019년 6월
Upsert James 2019년 6월
Pinot 신선도 메트릭 Sunitha Beeram 2019년 5월
실시간 세그먼트 완료의 딥 저장소 요구 우회 Ting, Chinmay 2019년 5월
Project Tuna: 자동 역인덱스 추천 Jia Guo 2019년 5월
딥 저장소 지원을 위한 세그먼트 완료 개선 Subbu 2019년 2월
세그먼트 병합과 롤업 Seunghyun Lee 2018
Pinot-Minion 서비스 Jackie Jiang 2017
실시간 행 소비·인덱싱 Subbu 2017
파티션 인식 쿼리 라우팅 Subbu 2017
쿼리 처리 Subbu 2016
표현식과 UDF Subbu 2016

더 알아보기 (Learn more)