Trino (moteur de requête SQL)

Trino est un moteur de requête SQL distribué open source conçu pour interroger de grands ensembles de données répartis sur une ou plusieurs sources de données hétérogènes[2]. Trino peut interroger des lacs de données qui contiennent des formats de fichiers de données ouverts orientés colonnes comme ORC ou Parquet[3],[4], résidant sur différents systèmes de stockage comme HDFS, AWS S3, Google Cloud Storage ou Azure Blob Storage[5] en utilisant les formats de table Hive[3], Delta Lake et Iceberg[4]. Trino a également la capacité d'exécuter des requêtes fédérées qui interrogent des tables dans différentes sources de données telles que MySQL, PostgreSQL, Cassandra, Kafka, MongoDB et Elasticsearch[6] Trino est publié sous la licence Apache[7].

Trino
Description de l'image Trino-logo-w-bk.svg.

Informations
Créateur Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang
Développé par Piotr Findeisen (d), David A. Phillips (d) et Martin Traverso (d)Voir et modifier les données sur Wikidata
Dernière version 445 ()[1]Voir et modifier les données sur Wikidata
Dépôt https://github.com/trinodb/trino
Écrit en Java
Système d'exploitation Logiciel multiplateforme
Type Entrepôt de données
Licence Licence Apache 2.0
Site web trino.io

Histoire modifier

En , les créateurs originaux de Presto, Martin Traverso, Dain Sundstrom et David Phillips, ont créé un fork du projet Presto. Ils ont initialement conservé le nom Presto et ont utilisé PrestoSQL comme nom de projet pour le distinguer du projet PrestoDB d'origine. Simultanément, ils ont annoncé la création de la Presto Software Foundation. La fondation est une organisation à but non lucratif vouée à la promotion du moteur de requête SQL distribué open source Presto[8],[9].

En , PrestoSQL a été rebaptisé Trino. La Trino Software Foundation, le code source et d'autres éléments de PrestoSQL ont été renommés à la suite du changement de nom du projet[10].

Presto et Trino ont été initialement conçus et développés par Martin, Dain, David et Eric Hwang de Facebook pour permettre aux analystes de données d'exécuter des requêtes interactives sur leur grand entrepôt de données dans Apache Hadoop. Trino partage les six premières années de développement avec le projet Presto[11],[12] Pour en savoir plus sur l'histoire antérieure de Trino, vous pouvez consulter la section Historique de Presto.

Architecture modifier

 
Vue d'ensemble de l'architecture Trino avec le coordinateur et les workers[13].

Trino est écrit en Java[14]. Il contient deux types de nœuds, le coordinateur et le worker[13].

  • Le coordinateur est responsable du parsing, de l'analyse, de l'optimisation, de la planification et de l'orchestration d'une requête soumise par un client. Le coordinateur interagit avec l'interface du fournisseur de services (SPI) pour obtenir les tables disponibles, les statistiques des tables et d'autres informations nécessaires à l'exécution de ses tâches[13].
  • Les workers sont responsables de l'exécution des tâches et des opérateurs qui leur sont fournis par le planificateur. Ces tâches traitent les lignes des données sources et produisent les résultats qui sont renvoyés au coordinateur et finalement renvoyés au client[13].

Trino adhère à la norme ANSI SQL[5] et inclut diverses parties des spécifications ANSI suivantes : SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011, SQL:2016.

Trino propose une architecture qui sépare le calcul et le stockage[5] et peut être déployé à la fois sur site et dans le cloud[15].

Trino a une architecture MPP de calcul distribué[13]. Trino répartit d'abord le travail sur plusieurs workers en exécutant des opérations de partitionnement ad hoc ou en s'appuyant sur des partitions existantes dans les données du stockage sous-jacent. Une fois que ces données sont dans le worker, les données sont traitées via des opérateurs en pipeline exécutés sur plusieurs threads[13].

Notes et références modifier

  1. « Release 445 », (consulté le )
  2. (en) « Overview — Trino 393 Documentation », trino.io (consulté le ).
  3. a et b (en) « Hive connector — Trino 393 Documentation », trino.io.
  4. a et b (en) « Iceberg connector — Trino 393 Documentation », trino.io (consulté le ).
  5. a b et c (en) Matt Fuller, Manfred Moser et Martin Traverso, Trino: The Definitive Guide, O'Reilly Media, Inc, USA, , 3-17 p. (ISBN 9781098107710), « Chapter 1. Introducing Trino »
  6. (en) « Connectors — Trino 393 Documentation », trino.io (consulté le ).
  7. (en) « trinodb/trino LICENSE », Trino, (consulté le ).
  8. (en) « Presto Software Foundation Launches to Advance Presto Open Source Community », PRWeb (consulté le ).
  9. (en-US) « Presto's New Foundation Signals Growth for the Big Data SQL Engine », The New Stack, (consulté le ).
  10. (en) Traverso, Sundstrom et Phillips, « We’re rebranding PrestoSQL as Trino = », trino.io, (consulté le ).
  11. (en) « Contributors to trinodb/trino », GitHub (consulté le ).
  12. (en) « Contributors to prestodb/presto », GitHub (consulté le ).
  13. a b c d e et f (en) Matt Fuller, Manfred Moser et Martin Traverso, Trino: The Definitive Guide, O'Reilly Media, Inc, USA, , 43-72 p. (ISBN 9781098107710), « Chapter 4. Trino Architecture ».
  14. (en) Matt Fuller, Manfred Moser et Martin Traverso, Trino: The Definitive Guide, O'Reilly Media, Inc, USA, , 19-24 p. (ISBN 9781098107710), « Chapter 2. Installing and Configuring Trino ».
  15. (en) Matt Fuller, Manfred Moser et Martin Traverso, Trino: The Definitive Guide, O'Reilly Media, Inc, USA, , 267-272 p. (ISBN 9781098107710), « Chapter 13. Real-World Examples ».

Voir aussi modifier

Articles connexes modifier

Liens externes modifier