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