Trino, anciennement PrestoSQL, est un moteur de requêtes SQL distribué et open source dédié à l'analytique interactive. À partir des versions 3.44.0 et 5.10.0 d'E-MapReduce (EMR), EMR a adopté le nom officiel de la communauté, Trino. Les versions antérieures affichaient le nom Presto dans la console, mais le moteur sous-jacent était déjà Trino.
Fonctionnalités de base
Développé en Java, Trino est conçu pour offrir des performances élevées lors de l'analytique interactive. Il prend en charge :
La conformité totale à la norme ANSI SQL.
-
Une large gamme de sources de données via des connecteurs, notamment :
Hive
Cassandra
Kafka
MongoDB
MySQL
PostgreSQL
SQL Server
Redis
Redshift
Fichiers locaux
-
Des structures de données avancées, telles que :
Tableaux et maps
Données JSON
Données SIG (GIS)
Données de couleur
-
L'extensibilité via plusieurs mécanismes, dont :
Connecteurs de données d'extension
Types de données personnalisés
Fonctions SQL personnalisées
Le traitement en pipeline qui diffuse les résultats des requêtes aux clients en temps réel.
-
La surveillance via plusieurs interfaces :
Une interface web qui visualise la progression de l'exécution des requêtes.
Le protocole JMX.
Composants du système
Le schéma suivant illustre les composants du système Trino.
Un cluster Trino repose sur une architecture coordinateur/travailleur. Le coordinateur accepte les requêtes SQL des clients, les analyse et élabore un plan, puis distribue les tâches résultantes aux nœuds travailleurs. Le coordinateur assure les fonctions suivantes :
Acceptation des requêtes utilisateur, analyse, génération des plans d'exécution et distribution des tâches aux nœuds travailleurs.
Surveillance de l'état des nœuds travailleurs. Chaque nœud travailleur maintient une connexion heartbeat avec le coordinateur pour signaler son statut.
Gestion des données du metastore.
Les nœuds travailleurs exécutent les tâches distribuées. Ils utilisent des connecteurs pour lire les données depuis des systèmes de stockage externes, traiter ces données et renvoyer les résultats au coordinateur.
Cas d'utilisation
Trino est conçu pour les charges de travail OLAP (Online Analytical Processing), telles que l'analyse de données, les agrégations à grande échelle et la génération de rapports. Il convient aux scénarios suivants :
Extract, Transform, Load (ETL)
Requêtes ad hoc
Analyse de données structurées ou semi-structurées à grande échelle
Agrégation et analyse de rapports pour des données multidimensionnelles volumineuses
Trino n'est pas une base de données relationnelle polyvalente et ne remplace pas des systèmes tels que MySQL ou PostgreSQL. Sa prise en charge des transactions étant limitée, il ne convient pas aux charges de travail OLTP (Online Transaction Processing) ou autres tâches transactionnelles.
Avantages
Trino sur E-MapReduce (EMR) offre les avantages suivants par rapport à la version open source de Trino :
Clusters prêts à l'emploi. Déployez un cluster Trino de centaines de nœuds en quelques minutes, sans configuration requise.
Mise à l'échelle élastique simplifiée.
Intégration transparente avec la pile logicielle EMR et prise en charge des données stockées dans Object Storage Service (OSS).
Opérations entièrement gérées, sans besoin de maintenance opérationnelle.
Terminologie
Modèle de données
Trino organise les données selon une hiérarchie à trois niveaux : catalogs, schemas et tables.
-
Catalog
Un catalog correspond à une source de données externe via un connecteur et contient un ou plusieurs schemas. Une seule requête peut s'étendre sur plusieurs catalogs.
-
Schema
Un schema équivaut à une instance de base de données et contient plusieurs tables.
-
Table
Une table fonctionne de la même manière que dans une base de données relationnelle standard.
Connecteur
Un connecteur adapte Trino à une source de données spécifique, à l'instar d'un pilote de base de données. Chaque catalog est associé à un type de connecteur, configuré dans le fichier de propriétés du catalog.
Trino fournit une interface Service Provider Interface (SPI) standard que vous pouvez implémenter pour créer des connecteurs personnalisés pour n'importe quelle source de données. Trino inclut également plusieurs connecteurs intégrés, regroupés par type de source de données :
Data lakes et lakehouses : Hive et autres sources compatibles Hadoop
Bases de données relationnelles : MySQL, PostgreSQL, SQL Server
Autres systèmes : Cassandra, Kafka, MongoDB, Redis, Redshift et fichiers locaux
Pour en savoir plus
Pour consulter la documentation open source de Trino, remplacez le numéro de version dans l'URL http://trino.io/docs/3XX//@filepath par la version de votre composant Trino, puis ouvrez le lien dans un navigateur.
Par exemple, si votre version de Trino est la 331, utilisez https://trino.io/docs/331//@filepath. Pour plus d'informations, consultez la documentation Trino 331.