Apache Pinot es una solución de almacenamiento OLAP distribuida diseñada en tiempo real, que se utiliza para ofrecer análisis escalables en tiempo real con baja latencia.
Puede ingerir datos de fuentes de datos por lotes (como HDFS, S3, Azure Data Lake, Google Cloud Storage), así como de fuentes de transmisión (como Kafka). Pinot está diseñado para escalar horizontalmente, de modo que pueda escalar a conjuntos de datos más grandes y tasas de consulta más altas según sea necesario.
Sobre Apache Pinot
El proyecto Pinot fue desarrollado originalmente por LinkedIn y en 2015 fue transferido a la Fundación Apache para un mayor desarrollo conjunto. El almacenamiento está diseñado para funcionar en un entorno donde constantemente se agregan nuevos datos y está diseñado para proporcionar una latencia mínima y predecible, lo que permite que el almacenamiento se utilice para el procesamiento de consultas en tiempo real.
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.
Apache Pinot proporciona escalabilidad horizontal y proporciona un medio para lograr tolerancia a fallas y capacidad de supervivencia frente a errores de software y hardware. Los procesos de replicación y respaldo se integran directamente en el ciclo de procesamiento de los datos agregados al almacén. Por un lado, este enfoque permite simplificar significativamente la arquitectura, pero, por otro lado, provoca un retraso entre la adición de datos y su disponibilidad para consultas.
Los datos se almacenan en tablas en una base de datos orientada a columnas, ademas de que se admiten varios esquemas de compresión y la capacidad de colocar múltiples valores en un campo. Pinot proporciona un sistema de índice conectable que puede utilizar varias tecnologías de indexación (índice ordenado, índice de mapa de bits, índice invertido, índice StarTree, filtro Bloom, índice de rango, índice de búsqueda de texto (Lucence/FST), índice JSON, índice geoespacial).
De las características que se destacan de Apache Pinot:
- Orientado a columnas: una base de datos orientada a columnas con varios esquemas de compresión, como longitud de ejecución y longitud de bits fija.
- Indexación conectable: tecnologías de indexación conectables, Índice ordenado, Índice de mapa de bits, Índice invertido.
- Optimización de consultas: capacidad de optimizar el plan de consulta/ejecución en función de los metadatos de consultas y segmentos.
- Ingesta de flujos y lotes: ingesta casi en tiempo real de flujos e ingesta por lotes de Hadoop.
- Consulta: motor de ejecución de consultas basado en SQL.
- Upsert durante la ingesta en tiempo real: actualice los datos a escala con coherencia
- Campos de valores múltiples: compatibilidad con campos de valores múltiples, lo que le permite consultar campos como valores separados por comas.
- Nativo de la nube en Kubernetes: Helm chart proporciona una implementación en clúster escalable horizontalmente y tolerante a fallas que es fácil de administrar con Kubernetes.
Nueva versión de Apache Pinot
Cabe mencionar que hace poco se dio a conocer la versión 1.0 de Apache Pinot, la cual básicamente resumió mucho trabajo para estabilizar la base del código y tener en cuenta los deseos de la comunidad (se tuvieron en cuenta más de 300 comentarios).
Ademas de ello, se destaca que el nuevo motor de procesamiento de consultas de múltiples etapas (Multi-Stage Query Engine) ha alcanzado su máximo potencial, lo que permite implementar soporte para fusionar tablas (JOIN). El motor utilizado inicialmente hizo un excelente trabajo con operaciones simples de filtrado y agregación, pero para garantizar un tiempo de ejecución de consultas predecible, no admitía operaciones de combinación de tablas.
El nuevo motor incluye las etapas intermedias del procesamiento de consultas complejas y la semántica de SQL están cerca de ANSI SQL. Además, la nueva versión ofrece soporte nativo para procesar datos en formato JSON, brinda soporte para el valor «NULL», se integra con Apache Spark 3.x y mejora la implementación de tablas en modo Upsert (agregando compresión de segmentos y brindando soporte para operaciones de eliminación).
Finalmente, si estás interesado en poder conocer más al respecto, debes saber que el código del proyecto está escrito en Java y distribuido bajo la licencia Apache. Puedes consultar los detalles de la nueva versión en el siguiente enlace.