Apache Pinot es un almacén de datos distribuido , de código abierto y orientado a columnas escrito en Java . Pinot está diseñado para ejecutar consultas OLAP con baja latencia. [1] [2] [3] [4] [5] Es adecuado en contextos donde se necesitan análisis rápidos, como agregaciones, en datos inmutables, posiblemente, con ingesta de datos en tiempo real. [6] [7] [8] El nombre Pinot proviene de las vides de uva Pinot que se prensan en un líquido que se utiliza para producir una variedad de vinos diferentes. Los fundadores de la base de datos eligieron el nombre como metáfora para analizar grandes cantidades de datos de una variedad de formatos de archivos diferentes o fuentes de datos en streaming. [9]
Pinot se creó por primera vez en LinkedIn después de que el personal de ingeniería determinara que no existían soluciones disponibles que cumplieran con los requisitos del sitio de redes sociales, como baja latencia predecible, actualización de datos en segundos, tolerancia a fallas y escalabilidad. [9] [10] Pinot es utilizado en la producción por empresas de tecnología como Uber , [11] Microsoft , [8] y Factual .
Pinot se inició como un proyecto interno en LinkedIn en 2013 para impulsar una variedad de productos orientados al usuario y a las empresas. El primer producto de análisis de LinkedIn que utilizó Pinot fue un rediseño de la función del sitio de redes sociales que permite a los miembros ver quién ha visto su perfil en tiempo real. El proyecto fue de código abierto en junio de 2015 bajo una licencia Apache 2.0 y LinkedIn lo donó a Apache Software Foundation en junio de 2019. [9] [8]
Pinot utiliza Apache Helix para la gestión de clústeres. Helix está integrado como agente dentro de los diferentes componentes y utiliza Apache ZooKeeper para coordinar y mantener el estado y la salud general del clúster. Todos los servidores y corredores de Pinot son administrados por Helix. Helix es un marco genérico de gestión de clústeres para gestionar particiones y réplicas en un sistema distribuido.
Las consultas son recibidas por corredores, que comparan la solicitud con la tabla de enrutamiento de segmento a servidor, distribuyendo la solicitud entre servidores en tiempo real y fuera de línea.
Pinot aprovecha Apache Helix para la gestión de clústeres. Helix es un marco de gestión de clústeres para gestionar recursos particionados y replicados en un sistema distribuido. Helix utiliza Zookeeper para almacenar el estado y los metadatos del clúster.
Pinot comparte características similares con almacenes de datos OLAP comparables, como Apache Druid . [12] [13] Al igual que Druid, Pinot es una base de datos orientada a columnas con varios esquemas de compresión, como Longitud de ejecución y Longitud de bits fijos . Pinot admite tecnologías de indexación conectables : índice ordenado, índice de mapa de bits , índice invertido , índice de árbol en estrella e índice de rango, que son lo que diferencia principalmente a Pinot de otros almacenes de datos OLAP.
Pinot admite la ingesta casi en tiempo real de transmisiones como Kafka , AWS Kinesis y la ingesta por lotes de fuentes como Hadoop , S3 , Azure , GCS . Como la mayoría de los otros almacenes de datos y soluciones de almacenamiento de datos OLAP , Pinot admite un lenguaje de consulta similar a SQL que admite la selección, agregación, filtrado, agrupación, ordenación y consultas distintas de datos.