O Trino, anteriormente conhecido como PrestoSQL, é um mecanismo de consulta SQL distribuído e open source para análises interativas. A partir das versões 3.44.0 e 5.10.0 do E-MapReduce (EMR), a plataforma adotou o nome oficial da comunidade: Trino. Nas versões anteriores, o console exibia o nome Presto, mas o mecanismo subjacente já era o Trino.
Recursos básicos
Desenvolvido em Java, o Trino foi projetado para análises interativas de alto desempenho. Ele oferece suporte a:
Conformidade total com o padrão ANSI SQL.
-
Diversas fontes de dados por meio de conectores, incluindo:
Hive
Cassandra
Kafka
MongoDB
MySQL
PostgreSQL
SQL Server
Redis
Redshift
Arquivos locais
-
Estruturas de dados avançadas, como:
Arrays e mapas
Dados JSON
Dados GIS
Dados de cores
-
Extensibilidade por diversos mecanismos, entre eles:
Conectores de dados de extensão
Tipos de dados personalizados
Funções SQL personalizadas
Processamento em pipeline que transmite os resultados das consultas aos clientes em tempo real.
-
Monitoramento por múltiplas interfaces:
Interface web para visualize do progresso da execução das consultas.
Protocolo JMX.
Componentes do sistema
A figura a seguir ilustra os componentes do sistema Trino.
Um cluster Trino utiliza uma arquitetura coordenador/worker. O coordenador recebe as consultas SQL dos clientes, analisa e planeja as execuções e distribui as tarefas resultantes para os nós workers. O coordenador é responsável por:
Receber consultas dos usuários, analisá-las, gerar planos de execução e distribuir tarefas para os nós workers.
Monitorar o status dos nós workers. Cada nó worker mantém uma conexão de heartbeat com o coordenador para reportar seu estado.
Manter os dados do metastore.
Os nós workers executam as tarefas distribuídas. Eles utilizam conectores para ler dados de sistemas de armazenamento externos, processam essas informações e retornam os resultados ao coordenador.
Casos de uso
O Trino foi criado para cargas de trabalho de Processamento Analítico Online (OLAP), abrangendo análise de dados, agregações em grande escala e geração de relatórios. É indicado para:
Extração, transformação e carga (ETL)
Consultas ad hoc
Análise de dados estruturados ou semiestruturados em grande escala
Agregação e análise de relatórios sobre dados multidimensionais de grande volume
O Trino não é um banco de dados relacional de uso geral e não substitui sistemas como MySQL ou PostgreSQL. Seu suporte a transações é limitado; portanto, não é adequado para Processamento Transacional Online (OLTP) ou outras cargas de trabalho transacionais.
Benefícios
O Trino no E-MapReduce (EMR) oferece as seguintes vantagens em relação à versão open source:
Clusters prontos para uso. Crie um cluster Trino com centenas de nós em minutos, sem necessidade de configuração manual.
Dimensionamento elástico simplificado.
Integração nativa com a pilha de software do EMR e suporte a dados armazenados no Object Storage Service (OSS).
Operações totalmente gerenciadas, eliminando a necessidade de manutenção e operação (O&M).
Termos
Modelo de dados
O Trino organiza os dados em uma hierarquia de três camadas: catálogos, schemas e tabelas.
-
Catálogo
Um catálogo mapeia uma fonte de dados externa por meio de um conector e contém um ou mais schemas. Uma única consulta pode abranger vários catálogos.
-
Schema
Um schema equivale a uma instância de banco de dados e contém várias tabelas.
-
Tabela
Uma tabela funciona da mesma forma que em um banco de dados relacional padrão.
Conector
Um conector adapta o Trino a uma fonte de dados específica, funcionando de maneira semelhante a um driver de banco de dados. Cada catálogo está vinculado a um tipo de conector, configurado no arquivo de propriedades do catálogo.
O Trino fornece uma Service Provider Interface (SPI) padrão para implementação de conectores personalizados para qualquer fonte de dados. Além disso, o Trino inclui diversos conectores integrados, agrupados por tipo de fonte de dados:
Data lakes e lakehouses: Hive e outras fontes compatíveis com Hadoop
Bancos de dados relacionais: MySQL, PostgreSQL, SQL Server
Outros sistemas: Cassandra, Kafka, MongoDB, Redis, Redshift e arquivos locais
Mais informações
Para acessar a documentação open source do Trino, substitua o número da versão na URL http://trino.io/docs/3XX//@filepath pela versão do seu componente Trino e abra o link no navegador.
Por exemplo, se a sua versão do Trino for a 331, utilize https://trino.io/docs/331//@filepath. Para mais detalhes, consulte a Documentação do Trino 331.