Apache Pinot — это столбцово - ориентированное распределенное хранилище данных с открытым исходным кодом , написанное на Java . Pinot предназначен для выполнения запросов OLAP с низкой задержкой. [1] [2] [3] [4] [5] Он подходит в контекстах, где требуется быстрая аналитика, такая как агрегирование, для неизменяемых данных, возможно, с приемом данных в реальном времени. [6] [7] [8] Название Пино происходит от виноградных лоз Пино , которые прессуют в жидкость, которая используется для производства различных вин. Основатели базы данных выбрали это название как метафору для анализа огромных объемов данных из различных форматов файлов или источников потоковых данных. [9]
Впервые Pinot был создан в LinkedIn после того, как инженерный состав определил, что не существует готовых решений, отвечающих требованиям сайта социальной сети, таким как предсказуемая низкая задержка, актуальность данных за считанные секунды, отказоустойчивость и масштабируемость. [9] [10] Пино используется в производстве такими технологическими компаниями, как Uber , [11] Microsoft , [8] и Factual .
Pinot был запущен как внутренний проект LinkedIn в 2013 году для создания различных продуктов, ориентированных на пользователей и бизнес. Первым аналитическим продуктом LinkedIn, использовавшим Pinot, стал обновленный дизайн функции сайта социальной сети, которая позволяет участникам видеть, кто просматривал их профиль, в режиме реального времени. Проект был открыт в июне 2015 года под лицензией Apache 2.0 и передан в дар Apache Software Foundation компанией LinkedIn в июне 2019 года. [9] [8]
Pinot использует Apache Helix для управления кластером. Helix встроен в различные компоненты в качестве агента и использует Apache ZooKeeper для координации и поддержания общего состояния и работоспособности кластера. Все серверы и брокеры Pinot управляются Helix. Helix — это универсальная среда управления кластерами для управления разделами и репликами в распределенной системе.
Запросы принимаются брокерами, которые сверяют запрос с таблицей маршрутизации сегмент-сервер, распределяя запрос между серверами реального времени и автономными серверами.
Pinot использует Apache Helix для управления кластером. Helix — это среда управления кластерами для управления реплицируемыми секционированными ресурсами в распределенной системе. Helix использует Zookeeper для хранения состояния и метаданных кластера.
Pinot имеет схожие функции с сопоставимыми хранилищами данных OLAP, такими как Apache Druid . [12] [13] Как и Druid, Pinot представляет собой базу данных, ориентированную на столбцы, с различными схемами сжатия, такими как длина прогона и длина с фиксированным битом . Pinot поддерживает подключаемые технологии индексирования — Sorted Index, Bitmap Index , Inverted Index , Star-Tree Index и Range Index, которые в первую очередь отличают Pinot от других хранилищ данных OLAP.
Pinot поддерживает прием практически в реальном времени из таких потоков, как Kafka , AWS Kinesis, а также пакетный прием из таких источников, как Hadoop , S3 , Azure , GCS . Как и большинство других хранилищ данных OLAP и решений для хранения данных , Pinot поддерживает SQL -подобный язык запросов, который поддерживает выбор, агрегацию, фильтрацию, группировку и упорядочивание отдельных запросов к данным.