Apache Trino es un motor de consultas SQL distribuido de código abierto capaz de conectarse a distintas plataformas de almacenamiento y bases de datos desde un acceso unificado. Usando SQL puedes hacer consultas a tablas que se encuentran en las fuentes de datos más importantes pudiendo utilizar lo mejor cada una.
Con Trino puedes analizar datos que se encuentran en una base de datos mysql, cruzar resultados con otra fuente en postgres e incluso agregar datos que se encuentran en un warehouse como Snowflake o Redshift. Trino permite consultar directamente desde las fuentes originales, no almacena los datos
Catalogo Trino
Trino utiliza catálogos que contienen las conexiones para cada fuente en una interfaz centralizada para explorar, consultar y analizar datos. Puedes crear modelos, reportes y preparar datos a utilizar en dashboards. Muchas herramientas de reportería soportan trino usando su API
Trino no se limita a solo a analizar datos desde diferentes fuentes, también puedes crear tus propias tablas o vistas siempre y cuando tengas los permisos. Por ejemplo, puedes crear tablas en una base de datos o en otras fuentes cloud como el formato tabla iceberg usando AWS S3 o Google cloud storage. Los formatos de tabla como Apache Iceberg permiten operaciones insert, select, update y delete utilizando una arquitectura de archivos interna.
Operaciones SQL
Trino se encarga de traducir la consulta SQL para soportar cada fuente o catálogo. Si la fuente es una base de datos relacional, Trino hará pequeños cambios para adaptar la consulta SQL proveída. Pero en casos de conexiones muy diferentes como OpenSearch, Kafka o Google Sheets, Trino hará su mejor esfuerzo para adaptar consultas SQL a fuentes que pueden utilizar otros mecanismos para consultas los datos. Como cada tabla tiene tipos de columnas distintos dependiendo de la fuente, Trino hace las conversiones necesarias para estandarizar todas las fuentes en un solo lugar. Revisa la lista oficial de conectores.
Trino soporta funciones SQL básicas y complejas, incluyendo operaciones matemáticas. Algunos ejemplo son las operaciones SQL de consulta, inserción, de agregación, window functions y funciones definidas por usuario (UDF)
Sin embargo, Trino no soporta las operaciones de todas las fuentes disponibles . Por ejemplo, las transacciones donde puedes tratar más de una operación SQL como una unidad no son soportadas. Quizás en nuevas versiones aparezcan otras esperadas funcionalidades.
La comunidad Trino
Trino cuenta con una comunidad activa con canales y miembros estables. Al ser un proyecto de código abierto, los desarrolladores y usuarios pueden contribuir reportando issues, requerimientos o nuevos desarrollos.
Starburst es la principal compañía que provee Trino comercialmente. Las empresas pueden obtener las funcionalidades de Trino junto con un soporte y otras características no incluidas por Trino nativamente como seguridad, data lineage, auditoría, data discovery, modeling, transformaciones, optimizaciones de consultas y más. Starburst apuesta integrando Apache Iceberg para manejar datos, crear tablas, transformaciones y servir datos.
También puedes montar tu propia infraestructura Trino. Tienes imágenes docker disponibles, implementaciones en la nube configurables como AWS EMR, Athena, GCP DataProc y otros servicios que incluyen Trino.
Lakehouse
Trino es una parte clave para arquitecturas lakehouse, donde el procesamiento de datos se encuentra separado del almacenamiento. Puedes utilizar el motor Trino en un cluster con diferentes tamaños y capacidades de acuerdo al tipo de consultas a soportar.
Trino es capaz de integrarse con muchas fuentes de datos, es escalable y económico. Es una base de datos SQL distribuida que no mueve datos y provee un acceso unificado a múltiples fuentes.
La comunidad Trino crece cada día más, proveyendo nuevas mejoras y soporte. Trino es una plataforma atractiva como alternativa a los warehouse tradicionales de pago que pueden resultar excesivamente costosos. Puedes añadirlo a tu arquitectura a un bajo costo con varios componentes a integrar aprovechando su flexibilidad.
