Trino (motor de consultas SQL)

De Wikipedia, la enciclopedia libre
Trino
Información general
Tipo de programa software libre y de código abierto
Autor Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang
Licencia Licencia Apache
Idiomas inglés
Información técnica
Programado en Java
Estándares ANSI SQL, JDBC
Versiones
Última versión estable 44322 de marzo de 2024
Enlaces

Trino es un motor de consulta SQL distribuido de código abierto diseñado para acceder a grandes conjuntos de datos distribuidos en una o más fuentes de datos heterogéneas.[1]​ Trino puede consultar data lakes que contengan archivos de datos abiertos orientados a columnas como ORC o Parquet[2][3]​ que residen en diferentes sistemas de almacenamiento como HDFS, AWS S3, Google Cloud Storage o Azure Blob Storage[4]​, utilizando los formatos de tabla Hive[2]​ e Iceberg[3]​. Además, Trino puede ejecutar consultas federadas que accedan a tablas en diferentes fuentes de datos, tales como MySQL, PostgreSQL, Cassandra, Kafka, MongoDB y Elasticsearch.[5]​ Trino se publica bajo la Licencia Apache.[6]

Historia[editar]

En enero de 2019, los creadores originales de Presto, Martin Traverso, Dain Sundstrom y David Phillips, crearon una bifurcación del proyecto Presto. Inicialmente mantuvieron el nombre Presto y usaron el identificador web PrestoSQL para distinguirlo del proyecto PrestoDB original. Simultáneamente, anunciaron la creación de Presto Software Foundation. Esta fundación es una organización sin ánimo de lucro dedicada al desarrollo del motor de consulta SQL distribuido de código abierto de Presto.[7][8]

En diciembre de 2020, PrestoSQL pasó a llamarse Trino. Trino Software Foundation, el código base y todos los demás activos de PrestoSQL fueron renombrados como parte del cambio de marca.[9]

Presto y Trino fueron diseñados y desarrollados originalmente por Martin, Dain, David y Eric Hwang en Facebook para permitir que los analistas de datos ejecutasen consultas interactivas en su gran almacén de datos en Apache Hadoop. Trino comparte los primeros seis años de desarrollo con el proyecto Presto.[10][11]​ Para obtener más información sobre la historia anterior de Trino, puede consultar la sección de historia de Presto.

Arquitectura[editar]

Descripción general de la arquitectura de Trino con el coordinador y los trabajadores[12]

Trino está escrito en Java.[13]​ Contiene dos tipos de nodos, un coordinador y un trabajador.[12]

  • El coordinador es responsable de analizar, optimizar, planificar y programar una consulta enviada por un cliente. El coordinador interactúa con la interfaz de proveedor de servicio (service provider interface o SPI) para obtener las tablas disponibles, estadísticas de tablas y otras informaciones necesarias para realizar su tarea.[12]
  • Los trabajadores son responsables de ejecutar las tareas y los operadores proporcionados por el planificador. Estas tareas procesan datos procedentes de las fuentes de datos, ya sea en formato fila o columna, que producen resultados que son devueltos al coordinador y, en última instancia, al cliente.[12]

Trino implementa el estándar ANSI SQL[4]​ e incluye varias partes de las siguientes especificaciones ANSI: SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011, SQL:2016.

Trino separa computación y almacenamiento[4]​ y se puede implementar tanto en servidores propios como en los principales proveedores de la nube.[14]

Trino tiene una arquitectura masivamente paralela (MPP) de computación distribuida.[12]​ Trino inicialmente distribuye la carga de trabajo entre varios trabajadores mediante la ejecución de operaciones de partición ad hoc o basándose en las particiones existentes en las bases de datos subyacentes. Una vez que estos datos han llegado al trabajador, los datos se procesan a través de operadores encadenados ejecutados por múltiples procesos ligeros.[12]

Véase también[editar]

Referencias[editar]

  1. «Overview — Trino 393 Documentation». trino.io. Consultado el 25 de agosto de 2022. 
  2. a b «Hive connector — Trino 393 Documentation». trino.io. 
  3. a b «Iceberg connector — Trino 393 Documentation». trino.io. Consultado el 25 de agosto de 2022. 
  4. a b c Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). «Chapter 1. Introducing Trino». Trino: The Definitive Guide. O'Reilly Media, Inc, USA. pp. 3-17. ISBN 9781098107710. 
  5. «Connectors — Trino 393 Documentation». trino.io. Consultado el 25 de agosto de 2022. 
  6. «trinodb/trino LICENSE». Trino. 25 de agosto de 2022. Consultado el 25 de agosto de 2022. 
  7. «Presto Software Foundation Launches to Advance Presto Open Source Community». PRWeb. Consultado el 1 de febrero de 2019. 
  8. «Presto's New Foundation Signals Growth for the Big Data SQL Engine». The New Stack (en inglés estadounidense). 31 de enero de 2019. Consultado el 1 de febrero de 2019. 
  9. Traverso, Martin (27 de diciembre de 2020). «We’re rebranding PrestoSQL as Trino». trino.io (en inglés). Consultado el 7 de septiembre de 2021. 
  10. «Contributors to trinodb/trino». GitHub (en inglés). Consultado el 20 de septiembre de 2021. 
  11. «Contributors to prestodb/presto». GitHub (en inglés). Consultado el 20 de septiembre de 2021. 
  12. a b c d e f Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). «Chapter 4. Trino Architecture». Trino: The Definitive Guide. O'Reilly Media, Inc, USA. pp. 43-72. ISBN 9781098107710. 
  13. Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). «Chapter 2. Installing and Configuring Trino». Trino: The Definitive Guide. O'Reilly Media, Inc, USA. pp. 19-24. ISBN 9781098107710. 
  14. Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). «Chapter 13. Real-World Examples». Trino: The Definitive Guide. O'Reilly Media, Inc, USA. pp. 267-272. ISBN 9781098107710. 


Enlaces externos[editar]