Trino (motor de consulta SQL)
# Trino (motor de consulta SQL)

Trino é um motor de consulta SQL distribuído de código aberto desenhado para consultar grandes conjuntos de dados distribuídos em uma ou mais fontes de dados heterogêneas. O Trino pode consultar datalakes que contêm formatos de arquivo de dados orientados a colunas como ORC ou Parquet estando armazenados em diferentes sistemas de armazenamento como HDFS, AWS S3, Google Cloud Storage ou Azure Blob Storage utilizando o Hive e formatos de tabela Iceberg. O Trino também tem a capacidade de executar consultas federadas que consultam tabelas em diferentes fontes de dados, como MySQL, PostgreSQL, Cassandra, Kafka, MongoDB e Elasticsearch . O Trino é publicado sob a licença Apache .

## História

Em janeiro de 2019, os criadores originais do Presto, Martin Traverso, Dain Sundstrom e David Phillips, criaram uma variação do projeto Presto. Inicialmente, eles mantiveram o nome Presto e usaram o identificador da Web PrestoSQL para distingui-lo do projeto PrestoDB original. Ao mesmo tempo, eles anunciaram a Presto Software Foundation. A fundação é uma organização sem fins lucrativos dedicada ao avanço do motor de consulta SQL distribuído de código aberto Presto.
Presto e Trino foram originalmente projetados e desenvolvidos por Martin, Dain, David e Eric Hwang no Facebook para permitir que analistas de dados executem consultas interativas em seu grande data warehouse no Apache Hadoop . O Trino compartilha os primeiros seis anos de desenvolvimento com o projeto Presto. Para saber mais sobre a história anterior do Trino, você pode consultar a seção de história do Presto .

## Arquitetura

Trino é escrito em Java . Ele contém dois tipos de nós, um coordinator e um worker .
* O coordinator é responsável por analisar, otimizar, planejar e agendar uma consulta enviada por um cliente. O coordinator interage com a interface do provedor de serviços (SPI) para obter as tabelas disponíveis, estatísticas de tabelas e outras informações necessárias para realizar suas tarefas.
* Os workers são responsáveis por executar as tarefas e os operadores fornecidos a eles pelo agendador. Essas tarefas processam linhas das fontes de dados que produzem resultados que são retornados ao coordinator e, por fim, de volta ao cliente.
Trino adere ao padrão ANSI SQL e inclui várias partes das seguintes especificações ANSI: SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011, SQL:2016 .
O Trino oferece suporte ao desacoplamento de computação e armazenamento e pode ser instalado em data center próprios e na nuvem .
Trino tem uma arquitetura MPP de computação distribuída . O Trino primeiro distribui o trabalho por vários workers executando operações de particionamento ad hoc ou contando com partições existentes nos dados do armazenamento de dados subjacente. Depois que esses dados chegam a worker, os dados são processados por operadores de pipeline executados em vários encadeamentos.