Apache Pinot es un almacén de datos OLAP distribuido en tiempo real
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.