Apache Pinot é um data warehouse OLAP distribuído em tempo real
O Apache Pinot é uma solução de armazenamento OLAP distribuída em tempo real, projetada para fornecer análises escaláveis, de baixa latência e em tempo real.
Ele pode ingerir dados de fontes de dados em lote (como HDFS, S3, Azure Data Lake, Google Cloud Storage), bem como de fontes de streaming (como Kafka). O Pinot foi projetado para escalar horizontalmente, podendo se adaptar a conjuntos de dados maiores e taxas de consulta mais altas conforme necessário.
Sobre Apache Pinot
O projeto Pinot foi originalmente desenvolvido pelo LinkedIn e, em 2015, transferido para a Apache Foundation para desenvolvimento conjunto. O armazenamento foi projetado para operar em um ambiente onde novos dados são constantemente adicionados e foi desenvolvido para fornecer latência mínima e previsível, permitindo seu uso para processamento de consultas em tempo real.
Assim como a maioria dos outros data warehouses e soluções de data warehousing OLAP, o Pinot oferece suporte a uma linguagem de consulta semelhante a SQL , que permite seleção, agregação, filtragem, agrupamento, classificação e outras consultas de dados.
O Apache Pinot oferece escalabilidade horizontal e um meio de alcançar tolerância a falhas e resiliência contra falhas de software e hardware. Os processos de replicação e backup são integrados diretamente ao ciclo de processamento de dados para dados adicionados ao armazenamento. Por um lado, essa abordagem simplifica significativamente a arquitetura, mas, por outro, introduz um atraso entre a adição de dados e sua disponibilidade para consulta.
Os dados são armazenados em tabelas dentro de um banco de dados orientado a colunas, e são suportados diversos esquemas de compressão e a capacidade de inserir múltiplos valores em um campo. O Pinot fornece um sistema de indexação plugável que pode utilizar diversas tecnologias de indexação (índice ordenado, índice bitmap, índice invertido, índice StarTree, filtro de Bloom, índice de intervalo, índice de busca de texto (Lucence/FST), índice JSON, índice geoespacial).
Das características que se destacam no Apache Pinot:
- Orientado a colunas– Um banco de dados orientado a colunas com vários esquemas de compactação, como comprimento de execução e comprimento de bits fixo.
- Indexação conectável: Tecnologias de indexação conectáveis, Índice Classificado, Índice Bitmap, Índice Invertido.
- Otimização de consulta- Capacidade de otimizar o plano de consulta/execução com base em metadados de consulta e segmento.
- Ingestão de streams e lotes: Ingestão quase em tempo real de fluxos do Hadoop e ingestão em lote.
- Consulta: Mecanismo de execução de consultas baseado em SQL.
- Upsert durante a ingestão em tempo real: atualizar dados em escala com consistência
- Vários campos de valor: suporte para campos de vários valores, permitindo consultar campos como valores separados por vírgula.
- Nativo da nuvem no Kubernetes: O gráfico Helm fornece uma implantação em cluster horizontalmente escalonável e tolerante a falhas que é fácil de gerenciar com o Kubernetes.
Nova versão do Apache Pinot
Vale mencionar que a versão 1.0 do Apache Pinot foi lançada recentemente , a qual basicamente sintetizou um extenso trabalho para estabilizar a base de código e levar em consideração os desejos da comunidade (mais de 300 comentários foram considerados).
Além disso, vale ressaltar que o novo mecanismo de consulta multiestágio atingiu seu potencial máximo , permitindo suporte para mesclagem de tabelas (JOINs). O mecanismo inicialmente utilizado apresentava excelente desempenho em operações simples de filtragem e agregação, mas, para garantir tempos de execução de consulta previsíveis, não suportava operações de junção de tabelas.
O novo mecanismo inclui estágios intermediários para processamento de consultas complexas e sua semântica SQL é próxima do ANSI SQL . Além disso, a nova versão oferece suporte nativo para processamento de dados JSON, fornece suporte para o valor "NULL", integra-se ao Apache Spark 3.x e aprimora a implementação de tabelas no modo Upsert (adicionando compressão de segmentos e fornecendo suporte para operações de exclusão).
Por fim, caso tenha interesse em saber mais , saiba que o código do projeto foi escrito em Java e distribuído sob a licença Apache. Você pode encontrar detalhes sobre a nova versão no seguinte link.