Apache Pinot는 실시간 분산 OLAP 데이터 웨어하우스입니다.
Apache Pinot은 확장 가능하고 지연 시간이 짧은 실시간 분석 기능을 제공하도록 설계된 실시간 분산 OLAP 스토리지 솔루션입니다 .
Pinot은 HDFS, S3, Azure Data Lake, Google Cloud Storage와 같은 배치 데이터 소스 뿐만 아니라 Kafka와 같은 스트리밍 소스에서도 데이터를 수집할 수 있습니다. Pinot은 수평 확장이 가능하도록 설계되어 필요에 따라 더 큰 데이터 세트와 더 높은 쿼리 속도로 확장할 수 있습니다.
아파치 피노 소개
피노 프로젝트는 원래 링크드인에서 개발되었으며 , 2015년에 아파치 재단으로 이관되어 공동 개발이 진행되었습니다. 이 스토리지 시스템은 새로운 데이터가 지속적으로 추가되는 환경에서 작동하도록 설계되었으며, 최소한의 예측 가능한 지연 시간을 제공하여 실시간 쿼리 처리에 사용할 수 있도록 개발되었습니다.
다른 대부분의 데이터 웨어하우스 및 OLAP 데이터 웨어하우징 솔루션과 마찬가지로 Pinot은 선택, 집계, 필터링, 그룹화, 정렬 및 기타 데이터 쿼리를 지원하는 SQL과 유사한 쿼리 언어를 지원합니다 .
Apache Pinot은 수평적 확장성을 제공하며 소프트웨어 및 하드웨어 장애에 대한 내결함성과 생존성을 확보합니다 . 복제 및 백업 프로세스는 데이터 저장소에 추가된 데이터의 처리 주기에 직접 통합됩니다. 이러한 접근 방식은 아키텍처를 크게 단순화하지만, 데이터 추가와 쿼리 가능 시점 사이에 지연이 발생할 수 있습니다.
데이터는 컬럼 지향형 데이터베이스 내의 테이블에 저장되며, 다양한 압축 방식과 필드에 여러 값을 입력할 수 있는 기능을 지원합니다. Pinot은 다양한 인덱싱 기술(정렬 인덱스, 비트맵 인덱스, 역인덱싱 인덱스, StarTree 인덱스, Bloom 필터, 범위 인덱스, 텍스트 검색 인덱스(Lucence/FST), JSON 인덱스, 지리 공간 인덱스)을 활용할 수 있는 플러그형 인덱싱 시스템을 제공합니다.
Apache Pinot의 눈에 띄는 특징은 다음과 같습니다.
- 열 지향– 실행 길이, 고정 비트 길이 등 다양한 압축 방식을 갖춘 열 기반 데이터베이스입니다.
- 플러그형 인덱싱: 플러그형 인덱싱 기술, Sorted Index, Bitmap Index, Inverted Index.
- 쿼리 최적화- 쿼리 및 세그먼트 메타데이터를 기반으로 쿼리/실행 계획을 최적화하는 기능.
- 스트림 및 배치 수집: Hadoop 스트림과 배치 수집을 거의 실시간으로 수집합니다.
- 질문: SQL 기반 쿼리 실행 엔진.
- 실시간 수집 중 Upsert: 일관성을 유지하면서 대규모로 데이터 업데이트
- 다중 값 필드: 다중 값 필드를 지원하므로 필드를 쉼표로 구분된 값으로 쿼리할 수 있습니다.
- Kubernetes의 클라우드 네이티브: Helm 차트는 Kubernetes로 관리하기 쉬운 수평 확장 가능하고 내결함성이 있는 클러스터 배포를 제공합니다.
Apache Pinot의 새 버전
최근 아파치 피노(Apache Pinot) 1.0 버전이 출시 되었는데 , 이는 코드베이스 안정화 및 커뮤니티의 의견(300개 이상의 의견 반영)을 반영하기 위한 많은 노력을 집약한 버전입니다 .
또한, 새로운 멀티스테이지 쿼리 엔진이 테이블 병합(JOIN)을 지원하게 되면서 잠재력을 최대한 발휘하게 되었다는 점도 주목할 만합니다 . 기존 엔진은 간단한 필터링 및 집계 작업에서는 뛰어난 성능을 보였지만, 예측 가능한 쿼리 실행 시간을 보장하기 위해 테이블 조인 작업은 지원하지 않았습니다.
새로운 엔진은 복잡한 쿼리 처리를 위한 중간 단계를 포함하고 있으며, SQL 의미 체계는 ANSI SQL에 가깝습니다 . 또한, 새 버전은 JSON 데이터 처리를 기본적으로 지원하고, "NULL" 값을 지원하며, Apache Spark 3.x와 통합되고, 업서트 모드에서 테이블 구현을 개선했습니다(세그먼트 압축 추가 및 삭제 작업 지원).
마지막으로, 더 자세히 알고 싶으 시다면 이 프로젝트의 코드는 Java로 작성되었으며 Apache 라이선스에 따라 배포된다는 점을 알려드립니다 . 새 버전에 대한 자세한 정보는 다음 링크에서 확인하실 수 있습니다.