Apache Pinot est un magasin de données distribué , open source et orienté colonnes écrit en Java . Pinot est conçu pour exécuter des requêtes OLAP avec une faible latence. Il est adapté aux contextes où des analyses rapides, telles que des agrégations, sont nécessaires sur des données immuables, éventuellement avec une ingestion de données en temps réel. Le nom Pinot vient des vignes de raisin Pinot qui sont pressées en liquide qui est utilisé pour produire une variété de vins différents. Les fondateurs de la base de données ont choisi ce nom comme métaphore pour analyser de vastes quantités de données provenant d'une variété de formats de fichiers différents ou de sources de données en streaming.
Pinot a été créé pour la première fois chez LinkedIn après que l'équipe d'ingénierie a déterminé qu'il n'existait aucune solution prête à l'emploi répondant aux exigences du site de réseautage social, comme une faible latence prévisible, une fraîcheur des données en quelques secondes, une tolérance aux pannes et une évolutivité. Pinot est utilisé en production par des entreprises technologiques telles que Uber , Microsoft , et Factual .
Histoire
Pinot a été lancé en 2013 en tant que projet interne chez LinkedIn pour alimenter une variété de produits destinés aux utilisateurs et aux entreprises. Le premier produit d'analyse de LinkedIn à utiliser Pinot était une refonte de la fonctionnalité du site de réseautage social qui permet aux membres de voir qui a consulté leur profil en temps réel. Le projet a été rendu open source en juin 2015 sous une licence Apache 2.0 et a été donné à l'Apache Software Foundation par LinkedIn en juin 2019.
Architecture

Pinot utilise Apache Helix pour la gestion des clusters. Helix est intégré en tant qu'agent dans les différents composants et utilise Apache ZooKeeper pour la coordination et le maintien de l'état et de la santé globale du cluster. Tous les serveurs et courtiers Pinot sont gérés par Helix. Helix est un framework de gestion de cluster générique pour gérer les partitions et les répliques dans un système distribué.
Gestion des requêtes
Les requêtes sont reçues par des courtiers, qui vérifient la demande par rapport à la table de routage segment-serveur, en dispersant la demande entre les serveurs en temps réel et hors ligne.
Gestion des clusters
Pinot utilise Apache Helix pour la gestion des clusters. Helix est un framework de gestion de clusters permettant de gérer les ressources répliquées et partitionnées dans un système distribué. Helix utilise Zookeeper pour stocker l'état et les métadonnées du cluster.
Caractéristiques
Pinot partage des fonctionnalités similaires avec des banques de données OLAP comparables, telles qu'Apache Druid . Comme Druid, Pinot est une base de données orientée colonnes avec divers schémas de compression tels que Run Length et Fixed-Bit Length . Pinot prend en charge les technologies d'indexation enfichables - Index trié, Index bitmap , Index inversé , Index arbre en étoile et Index de plage, qui sont ce qui différencie principalement Pinot des autres banques de données OLAP.
Pinot prend en charge l'ingestion en temps quasi réel à partir de flux tels que Kafka , AWS Kinesis et l'ingestion par lots à partir de sources telles que Hadoop , S3 , Azure , GCS . Comme la plupart des autres banques de données OLAP et solutions d' entreposage de données , Pinot prend en charge un langage de requête de type SQL qui prend en charge la sélection, l'agrégation, le filtrage, le regroupement par, le tri par et les requêtes distinctes sur les données.