Trino
Motor de Consulta Distribuído

Um mecanismo de consulta distribuído é projetado para executar consultas SQL complexas em grandes volumes de dados espalhados por várias fontes. Elimina a necessidade de mover ou duplicar dados, permitindo análises diretamente onde os dados estão armazenados, aumentando a eficiência e a escalabilidade.
Principais características de um mecanismo de consulta distribuído:
- Execução Paralela: Divide consultas em tarefas menores, que são processadas simultaneamente em diferentes nós de um cluster, otimizando o tempo de execução.
- Conexão com Múltiplas Fontes de Dados: Oferece integração com data lakes, data warehouses e bancos de dados relacionais, permitindo a execução de consultas federadas.
- SQL como Linguagem Universal: Analistas podem realizar consultas utilizando SQL, sem necessidade de aprender linguagens específicas.
- Desempenho Optimizado: Utiliza técnicas como pushdown de predicados e armazenamento em memória para reduzir a latência e maximizar a performance.
Entre os casos de uso comuns, de mecanismos de consulta distribuídos, destacam-se:
- Consultas federadas em várias fontes de dados..
- Análises em tempo real de grandes volumes de dados.
- Unificação de data lakes e data warehouses para facilitar a governança e auditoria..
O seu funcionamento básico envolve:
- O cliente envia uma consulta ao mecanismo.
- O mecanismo interpreta a consulta, cria um plano de execução e distribui tarefas para os workers.
- Cada worker processa a sua parte, acedendo diretamente às fontes de dados.
- Os resultados são consolidados e enviados de volta ao cliente.

Principais Características do Trino
O Trino é um mecanismo de consulta distribuído open-source, projetado para executar consultas SQL em grandes volumes de dados armazenados em fontes diversas, como data lakes, data warehouses e bases de dados relacionais.
Inicialmente, desenvolvido como Presto, por engenheiros do Facebook para atender suas necessidades internas de análise de dados, o Trino surgiu em 2020 após uma divisão com a Presto Foundation. Desde então, tornou-se referência em soluções de alta performance para análise de dados distribuídos.
Principais Características:
- Velocidade: Desenvolvido para análises de baixa latência, o Trino utiliza execução altamente paralela e distribuída para processar consultas de forma eficiente.
- Escalabilidade Horizontal: Permite a adição de workers para ampliar a capacidade de processamento, sendo capaz de lidar com workloads em escala de exabytes, como em grandes data lakes e data warehouses.
- Simplicidade: Compatível com ANSI SQL, facilita a integração com ferramentas de BI como R, Tableau, Power BI, Superset, entre outras.
- Versatilidade: Suporta análises "ad hoc" interativas, consultas em lote de longa duração e aplicativos de alto volume, garantindo tempos de resposta inferiores a um segundo em cenários críticos.
- Análise Local: Consulta dados diretamente em fontes como Hadoop, S3, Cassandra e MySQL, eliminando a necessidade de copiar ou mover dados, simplificando processos e reduzindo erros.
- Consultas Federadas: Habilita a execução de consultas em múltiplas fontes de dados, como HDFS, S3, bancos relacionais e data warehouses.
- Alta Performance: Sua arquitetura é otimizada para workloads interativos, garantindo latência mínima.
- Extensibilidade: Oferece suporte para conectores personalizados, possibilitando integração com novas fontes de dados.
- Confiabilidade: Amplamente utilizado em operações críticas, como relatórios financeiros para mercados públicos, por algumas das maiores organizações globais.
- Suporte a Diversos Formatos: Compatível com formatos como Parquet, ORC, Avro, JSON e CSV.
- Comunidade Aberta: Desenvolvido sob a liderança da Trino Software Foundation, uma organização sem fins lucrativos.
Arquitetura do Trino
Trino é um mecanismo de consulta distribuído que processa dados em paralelo em vários servidores. Os servidores de um Cluster Trino são classificados como Coordinators e Workers.
As seções a seguir descrevem os principais componentes da arquitetura do Trino.
Cluster
Um cluster Trino é composto por vários nós, incluindo um Coordinator e zero ou mais Workers. Os usuários se conectam ao Coordinator por meio de ferramentas de consulta SQL. O Coordinator orquestra tarefas entre os Workers e acessa fontes de dados conectadas por meio de catálogos configurados.
Cada consulta é processada como uma operação com estado. O Coordinator distribui a carga de trabalho entre os Workers em paralelo. Cada nó executa uma única instância JVM, com paralelização adicional usando threads.
Nó
Um Nó (Node) no Trino refere-se a qualquer servidor dentro de um cluster que executa um processo Trino. Ele normalmente corresponde a um único computador, já que apenas um processo Trino é recomendado por máquina.