Como usar um query engine para transformar seu SI?

Como usar um query engine para transformar seu SI?

O
Omar
9 min
Como usar um query engine para transformar seu SI?

Em resumo

Descubra como os motores de consulta distribuídos podem transformar seu sistema de informação, facilitar o acesso e a análise de dados heterogêneos, tudo

Como utilizar um query engine para transformar seu SI? Tradicionalmente, as aplicações baseadas em um ecossistema Big Data foram construídas agrupando os dados em Data Lakes ou Data Warehouses. A ideia era concentrar os dados em uma única plataforma. Essa abordagem, embora amplamente empregada e evidente para gerenciar uma infraestrutura de dados, está evoluindo. Em um contexto mundial onde o volume de dados aumenta significativamente a cada ano (em termos de quantidade e de fontes de dados), torna-se custoso, e muitas vezes impossível, centralizar os dados. Compartilhar os dados em infraestruturas fortemente regulamentadas leva as empresas a inovar. Percebemos que o que buscamos fazer se posiciona como um componente de arquitetura de dados que permite compartilhar dados.

Existem diversos modelos de arquitetura que permitem o compartilhamento de dados. Entre os modelos mais utilizados, podemos citar: Ponto a pontoHub ou centralizadoTempo real No nosso caso de estudo, desejamos compartilhar os dados na forma de um hub - centralizado - sem, no entanto, duplicar os datastores das fontes de dados. Para implementar este tipo de modelo, os motores de consulta distribuídos parecem ser a resposta ao problema. De fato, eles permitem acessar, processar e consultar os dados onde estão armazenados, sem a necessidade de movê-los ou duplicá-los. Eles oferecem uma visão unificada e coerente dos dados, apesar de sua distribuição em diversas fontes. Além disso, permitem consultas em tempo real, o que melhora significativamente a eficiência e a flexibilidade das operações de dados.

Data Platform

As plataformas de dados são um elemento-chave para a transformação digital das empresas. Elas permitem coletar, armazenar, processar e distribuir dados provenientes de diferentes fontes. As plataformas de dados oferecem diversas vantagens para as empresas, como a tomada de decisão, a melhoria da eficiência operacional, o desenvolvimento de novos produtos/serviços e a redução de custos. Uma plataforma de dados permite a importação, o processamento, a análise e a apresentação dos dados. O padrão de arquitetura da plataforma de dados surgiu com o advento das tecnologias Hadoop em 2006.

Seu objetivo é gerenciar o ciclo de vida dos dados desde sua criação até sua valorização e exposição. Historicamente, falava-se em centralização dos dados em plataformas de dados centradas nos dados, pois o princípio básico era armazenar os dados em um mesmo sistema para permitir o compartilhamento desses dados (padrão de arquitetura Hub/Centralizada).

Hoje, o princípio de centralização dos dados continua atual. No entanto, não se trata mais de focar apenas no armazenamento em um data warehouse ou em um sistema ERP, mas sim de se apoiar em sistemas heterogêneos para armazenar os dados. Nessas abordagens mais modernas, busca-se posicionar um motor de consultas entre os sistemas de armazenamento que se deseja compartilhar, a fim de separar a camada de compartilhamento da camada de armazenamento. Esse padrão se assemelha a um padrão de API Gateway no mundo aplicativo, pois expõe uma interface/visão sobre os dados que podem ser compartilhados, sem precisar conhecer os detalhes dos sistemas subjacentes.

Para que serve um query engine?

Executar consultas SQL em qualquer tipo de datastore (banco de dados, streaming, NoSQL...)

Os query engines são componentes de plataformas de dados utilizados principalmente para apresentar um conjunto de fontes de dados heterogêneas como tabelas SQL. Eles permitem executar consultas nesses datastores heterogêneos e combinar os resultados de consultas em várias fontes de dados, sejam Datastores (Blob, S3, HDFS), bancos de dados (MongoDB, Cassandra, MariaDB, DB2) ou dados stream (Kafka).

Separação dos recursos de infraestrutura de Storage e Compute

As funcionalidades de um motor de consultas distribuído podem variar, mas a maioria dos motores é projetada para ser altamente escalável, capaz de processar consultas em paralelo em diversos nós e de funcionar com uma grande variedade de dados.

Ao utilizar um motor de consultas, as empresas podem acessar facilmente seus dados presentes em diferentes sistemas de gerenciamento de dados, analisá-los e distribuí-los de forma simples. Ele permite que qualquer usuário recupere facilmente dados com suas próprias consultas, liberando uma carga de trabalho considerável da equipe de dados.

Federação de consultas

O objetivo principal dos query engines é a virtualização dos dados, possibilitada pela criação de um ponto de acesso único aos dados para os usuários. A virtualização dos dados fornece um nível de abstração sobre os dados. Ela permite reunir os resultados de uma consulta em views virtuais para que sejam consumidos por componentes aplicativos, como se estivéssemos apresentando views de banco de dados. A principal força de um query engine é sua capacidade de consultar sistemas heterogêneos, algo que um motor de consultas de um único banco de dados não permite.

Casos de uso dos query engines

Poderíamos questionar a utilidade de usar um motor de consultas quando ele já está nativamente disponível nos motores de bancos de dados. Aqui, o objetivo é explorar dados provenientes de fontes diferentes, e às vezes de formatos diferentes. Para isso, precisamos federar todos os nossos datastores heterogêneos, o que é mais facilmente realizável com um motor de consultas.

Transformação progressiva de plataformas de dados

Um query engine permite migrar fontes de armazenamento sem quebrar a lógica aplicativa.

O SI é composto por diferentes armazenamentos (dois na nuvem e um on-premise). Sem query engine, as diferentes aplicações devem consultar manualmente os dados em cada espaço de armazenamento. Modificar esse armazenamento gera problemas no nível aplicativo. O query engine se encarrega de realizar a consulta sem que o local onde os dados estão armazenados impacte a resolução da mesma.

Self-Service BI

A abordagem de Self-Service BI permite que os usuários selecionem por conta própria os dados de que precisam para compor relatórios sob demanda. Ela se baseia na disponibilização de dados, na busca de dados relevantes e no uso desses dados em relatórios. Essa abordagem permite reduzir o tempo de disponibilização de dados calculados, diminuindo o número de etapas para criar um relatório.

Data Mesh

O Data Mesh propõe que os domínios de negócio carreguem cada um um produto de dados, com um ciclo de vida autônomo. Os domínios de negócio são ligados por um acoplamento fraco e consomem dados de outros domínios de negócio ou disponibilizam seus dados. Para isso, o Data Mesh se baseia em uma exposição de dados, um catálogo centralizado que pode ser construído com a ajuda de um query engine.

Qual query engine escolher?

Hive

Hive é um sistema de processamento de dados distribuído para Hadoop. Ele permite que os usuários processem grandes volumes de dados utilizando uma linguagem de consulta do tipo SQL chamada HiveQL. O Hive armazena os dados em um sistema de arquivos distribuído, como HDFS ou S3. As vantagens do Hive incluem a compatibilidade SQL, o suporte a dados semiestruturados e a capacidade de gerenciar grandes conjuntos de dados. No entanto, o Hive tem limitações em termos de desempenho de consulta e tempo de latência. Clique aqui para saber mais.

Trino

Trino, anteriormente conhecido como Presto, é um motor de consultas SQL distribuído open source projetado para processar grandes conjuntos de dados. É utilizado para casos de uso como processamento de dados em tempo real, processamento de dados para análise e descoberta de dados. O Trino é compatível com diversos sistemas de armazenamento de dados, como Hadoop HDFS, Amazon S3, Cassandra, MongoDB, etc. As vantagens do Trino incluem desempenho rápido de consulta, escalabilidade horizontal, compatibilidade SQL e a possibilidade de processar dados semiestruturados. Clique aqui para saber mais.

Drill

Drill é um motor de consultas distribuído open source projetado para executar consultas em dados semiestruturados e não estruturados. Ele suporta formatos de arquivo como JSON, CSV, AVRO, Parquet, etc. O Drill é compatível com diversos sistemas de armazenamento de dados, como Hadoop HDFS, Amazon S3, Azure Blob Storage, etc. As vantagens do Drill incluem o suporte a dados semiestruturados, a compatibilidade SQL e a capacidade de consultar múltiplas fontes de dados sem precisar exportar os dados para um sistema de armazenamento central. Clique aqui para saber mais.

Impala

Impala é um motor de consultas SQL open source distribuído para Hadoop. Ele permite que os usuários executem consultas SQL em tempo real sobre dados armazenados no Hadoop. O Impala é compatível com diversos formatos de arquivo, como HDFS, Kudu, Parquet, etc. As vantagens do Impala incluem desempenho rápido de consulta, escalabilidade horizontal e suporte a SQL. No entanto, o Impala é limitado pela compatibilidade de formatos de arquivo e fontes de dados. Clique aqui para saber mais.

Dremio

Dremio é uma plataforma de dados distribuída open source projetada para acelerar os tempos de acesso aos dados. Ela suporta consultas SQL e permite que os usuários consultem dados em múltiplas fontes, incluindo fontes na nuvem e locais. O Dremio utiliza uma arquitetura distribuída para acelerar os tempos de acesso aos dados e dispõe de uma função de cache integrada para acelerar os tempos de resposta das consultas. As vantagens do Dremio incluem o suporte a múltiplas fontes de dados, escalabilidade horizontal, compatibilidade SQL e desempenho rápido de consulta. Clique aqui para saber mais.

Comparação dessas soluções

Decidimos comparar esses query engines com base em vários critérios: Tempo real: nota mais alta para uma solução que permite tempo real,Custo de infraestrutura: nota mais alta para um custo de infraestrutura mais baixo,Desempenho: nota mais alta para um desempenho mais importante,Conectores: nota mais alta se conectores para fontes de dados estão disponíveis e mantidos pelo editor ou pela comunidade,Comunidade: nota mais alta se a comunidade que desenvolve ou utiliza o produto é importante.

Conclusão

Em resumo, Hive, Trino, Drill, Impala e Dremio são todos componentes de infraestrutura de TI distribuída projetados para processar grandes conjuntos de dados. Todos os componentes têm a capacidade de armazenar e processar grandes quantidades de dados e utilizam consultas SQL para interrogar os dados.

No entanto, cada componente tem suas próprias vantagens e limitações. O Hive é bem adaptado para casos de uso onde a compatibilidade SQL é necessária, mas pode sofrer com desempenho de consulta mais lento. Trino e Drill são ambos adaptados para o processamento de dados semiestruturados e não estruturados. O Trino extrai o máximo de suas capacidades ao processar dados em tempo real. O Impala é bem adaptado para o processamento de dados armazenados no Hadoop, mas pode ser limitado em termos de compatibilidade de formato de arquivo e fontes de dados. Por fim, o Dremio é projetado para acelerar os tempos de acesso aos dados, com uma função de cache integrada para acelerar os tempos de resposta das consultas. O Trino é um excelente componente de infraestrutura para compartilhar dados de fontes heterogêneas e para casos de uso em tempo real. Sua arquitetura consome muito poucos recursos de infraestrutura.

Continue a explorar

Veja outros artigos de Modern Stack & Integração no universo Tech & Platform

Artigos recomendados

Este tema interessa a você?

Nossos especialistas podem aprofundar este tema numa conversa dedicada. Marque um horário para falar sobre isso.

Falar com um especialista →