Capítulo 1. Presentación de Trino

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Así que has oído hablar de Trino y has encontrado este libro. O tal vez estés hojeando esta primera sección y preguntándote si deberías sumergirte en él. En este capítulo introductorio, hablamos de los problemas que puedes estar encontrando con el crecimiento masivo de la creación de datos y el valor encerrado en esos datos. Trino es un facilitador clave para trabajar con todos los datos y proporcionar acceso a ellos con herramientas de éxito probado en torno al Lenguaje de Consulta Estructurado (SQL).

El diseño y las funciones de Trino te permiten obtener mejores perspectivas, más allá de las que tienes a tu alcance ahora. Puedes obtener estos conocimientos más rápidamente, así como información que antes no podías conseguir porque costaba demasiado o tardaba demasiado en obtenerse. Y por todo ello, acabas utilizando menos recursos y, por tanto, gastando menos de tu presupuesto, ¡que puedes utilizar para aprender aún más!

También te indicamos más recursos aparte de este libro, pero, por supuesto, esperamos que primero te unas a nosotros aquí.

Los problemas del Big Data

Todo el mundo captura cada vez más datos de métricas de dispositivos, seguimiento del comportamiento de los usuarios, transacciones empresariales, datos de localización, procedimientos y flujos de trabajo de pruebas de software y sistemas, y mucho más. La información obtenida a partir de la comprensión de esos datos y del trabajo con ellos puede determinar el éxito de cualquier iniciativa, o incluso de una empresa.

Al mismo tiempo, se ha disparado la diversidad de mecanismos de almacenamiento disponibles para los datos: bases de datos relacionales, bases de datos NoSQL, bases de datos de documentos, almacenes de valores clave, sistemas de almacenamiento de objetos, etc. Muchos de ellos son necesarios en las organizaciones actuales, y ya no es posible utilizar sólo uno de ellos. Como puedes ver en la Figura 1-1, enfrentarse a todo esto puede ser una tarea desalentadora que resulte abrumadora.

Big data can be overwhelming
Figura 1-1. Los grandes datos pueden ser abrumadores

Además, todos estos sistemas diferentes no te permiten consultar e inspeccionar los datos con herramientas estándar. Hay por todas partes diferentes lenguajes de consulta y herramientas de análisis para sistemas nicho. Mientras tanto, tus analistas empresariales están acostumbrados al estándar del sector, SQL. Un sinfín de potentes herramientas se basan en SQL para el análisis, la creación de cuadros de mando, los informes enriquecidos y otras tareas de inteligencia empresarial.

Los datos están distribuidos en varios silos, y algunos de ellos ni siquiera pueden consultarse con el rendimiento necesario para tus necesidades analíticas. Otros sistemas, a diferencia de las modernas aplicaciones en la nube, almacenan los datos en sistemas monolíticos que no pueden escalarse horizontalmente. Sin estas capacidades, estás reduciendo el número de casos de uso y usuarios potenciales, y por tanto la utilidad de los datos.

El enfoque tradicional de crear y mantener grandes almacenes de datos dedicados ha demostrado ser muy caro en organizaciones de todo el mundo. La mayoría de las veces, este enfoque también resulta demasiado lento y engorroso para muchos usuarios y patrones de uso. La solución a menudo considerada de crear un lago de datos acababa creando un vertedero de datos que nadie volvía a mirar, ni se tomaba grandes molestias para intentar analizar los datos. Incluso el nuevo enfoque de un lago de datos que promete combinar las ventajas de los almacenes y los lagos no será la única solución. Los datos seguirán estando distribuidos, almacenados por todas partes, y aparecerán en cada vez más sistemas.

Puedes ver la enorme oportunidad de que un sistema desbloquee todo este valor.

Trino al rescate

Trino es capaz de resolver todos estos problemas y de abrir nuevas oportunidades con consultas federadas a sistemas dispares, consultas paralelas, escalado horizontal de clústeres y mucho más. Puedes ver el logotipo del proyecto Trino enla Figura 1-2.

Trino es un motor de consulta SQL distribuido de código abierto. Fue diseñado y escrito desde cero para consultar datos de forma eficiente contra fuentes de datos dispares de todos los tamaños, desde gigabytes a petabytes. Trino rompe con la falsa disyuntiva entre tener una analítica rápida utilizando una solución comercial cara o utilizar una solución "libre" lenta que requiere un hardware excesivo.

Diseñado para Rendimiento y Escala

Trino es una herramienta diseñada para consultar eficientemente grandes cantidades de datos utilizando la ejecución distribuida. Si tienes terabytes o incluso petabytes de datos que consultar, es probable que utilices herramientas como Apache Hive que interactúan con Hadoop y su Sistema de Archivos Distribuidos Hadoop (HDFS), o sistemas equivalentes como Amazon Simple Storage Service (S3) y otros proporcionados por los proveedores de la nube o utilizados en implementaciones compatibles autoalojadas. Trino está diseñado como una alternativa a estas herramientas para consultar esos datos de forma más eficiente.

Los analistas que esperan tiempos de respuesta SQL desde milisegundos para análisis en tiempo real hasta segundos y minutos deben utilizar Trino. Trino es compatible con SQL, utilizado habitualmente en el almacenamiento y análisis de datos para analizar datos, agregar grandes cantidades de datos y elaborar informes. Estas cargas de trabajo suelen clasificarse como procesamiento analítico en línea (OLAP).

Aunque Trino entiende y puede ejecutar eficientemente SQL, Trino no es una base de datos, ya que no incluye su propio sistema de almacenamiento de datos. No pretende ser una base de datos relacional de uso general que sirva para sustituir a Microsoft SQL Server, Oracle Database, MySQL o PostgreSQL. Además, Trino no está diseñada para gestionar el procesamiento de transacciones en línea (OLTP). Lo mismo ocurre con otras bases de datos diseñadas y optimizadas para el almacenamiento de datos o el análisis, como Teradata, Netezza, Vertica y Amazon Redshift.

Trino aprovecha técnicas conocidas y novedosas para el procesamiento distribuido de consultas. Estas técnicas incluyen el procesamiento paralelo en memoria, la ejecución en cadena a través de los nodos del clúster, un modelo de ejecución multihilo para mantener ocupados todos los núcleos de la CPU, eficientes estructuras de datos de memoria plana para minimizar la recogida de basura de Java y la generación de bytecode Java. Una descripción detallada de estos complejos aspectos internos de Trino queda fuera del alcance de este libro. Para los usuarios de Trino, estas técnicas se traducen en una visión más rápida de tus datos a una fracción del coste de otras soluciones.

SQL sobre cualquier cosa

Trino se diseñó inicialmente para consultar datos de HDFS. Y puede hacerlo muy eficazmente, como aprenderás más adelante. Pero no acaba ahí. Al contrario, Trino es un motor de consulta que puede consultar datos de almacenamiento de objetos, sistemas de gestión de bases de datos relacionales (RDBMS), bases de datos NoSQL y otros sistemas, como se muestra en la Figura 1-3.

Trino consulta los datos donde viven y no requiere una migración de los datos a una única ubicación. Por tanto, Trino te permite consultar datos en HDFS y otros sistemas de almacenamiento de objetos distribuidos. Te permite consultar RDBMS y otras fuentes de datos. Por tanto, al consultar los datos dondequiera que vivan, Trino puede sustituir a los tradicionales, caros y pesados procesos de extracción, transformación y carga (ETL). O, como mínimo, puede ayudarte proporcionándote un motor de consulta para ejecutar procesos ETL de alto rendimiento con herramientas modernas como dbt en todas las fuentes de datos donde sea necesario, y reducir o incluso evitar la necesidad de procesos ETL. Así que Trino no es claramente otra solución SQL-on-Hadoop.

SQL support for variety of data source with Trino
Figura 1-3. Soporte SQL para diversas fuentes de datos con Trino

Los sistemas de almacenamiento de objetos incluyen Amazon S3, Microsoft Azure Blob Storage, Google Cloud Storage y el almacenamiento compatible con S3, como MinIO y Ceph. Estos sistemas pueden utilizar el formato de tabla tradicional Hive, así como los sustitutos más recientes Delta Lake e Iceberg. Trino puede consultar RDBMS tradicionales como Microsoft SQL Server, PostgreSQL, MySQL, Oracle, Teradata y Amazon Redshift. Trino también puede consultar sistemas NoSQL como Apache Cassandra, Apache Kafka, MongoDB o Elasticsearch. Trino puede consultar prácticamente cualquier cosa y es realmente un sistema SQL-on-Anything.

Para los usuarios, esto significa que, de repente, ya no tienen que depender de lenguajes o herramientas de consulta específicos para interactuar con los datos de esos sistemas concretos, sino que simplemente pueden aprovechar Trino y sus conocimientos existentes de SQL y sus herramientas de análisis, cuadros de mando e informes bien entendidos. Estas herramientas, construidas sobre el uso de SQL, permiten el análisis de esos conjuntos de datos adicionales, que de otro modo estarían bloqueados en sistemas separados. Los usuarios pueden incluso utilizar Trino para realizar consultas en distintos sistemas con el mismo SQL que ya conocen.

Separación de los recursos de almacenamiento de datos y de cálculo de consultas

Trino no es una base de datos con almacenamiento, sino que simplemente consulta los datos allí donde viven. Cuando se utiliza Trino, el almacenamiento y la computación están desacoplados y pueden escalarse independientemente. Trino representa la capa de cálculo, mientras que las fuentes de datos subyacentes representan la capa de almacenamiento.

Esto permite a Trino ampliar y reducir sus recursos informáticos para el procesamiento de consultas, en función de la demanda analítica de acceso a estos datos. No hay necesidad de trasladar tus datos, aprovisionar recursos informáticos y de almacenamiento a las necesidades exactas de las consultas actuales, o cambiar eso regularmente, en función de tus necesidades cambiantes de consulta.

Trino puede escalar la potencia de consulta escalando el clúster informático dinámicamente, y los datos pueden consultarse justo donde residen en la fuente de datos. Esta característica te permite optimizar en gran medida tus necesidades de recursos de hardware y, por tanto, reducir costes.

Casos de uso de Trino

La flexibilidad y las potentes funciones de Trino te permiten decidir por ti mismo cómo utilizas exactamente Trino y qué ventajas valoras y quieres aprovechar. La mayoría de los usuarios de Trino empiezan así.

Una vez que tú y otros usuarios de Trino de tu organización os hayáis acostumbrado a sus ventajas y funciones, descubriréis nuevas situaciones. Se correrá la voz, y pronto verás cómo Trino satisface un sinfín de necesidades accediendo a diversas fuentes de datos.

En esta sección, tratamos varios de estos casos de uso. Ten en cuenta que puedes ampliar tu uso para abarcarlos todos. Por otra parte, también está perfectamente bien resolver un problema concreto con Trino. Sólo tienes que estar preparado para que te guste Trino y aumentar su uso después de todo.

Un punto de acceso a SQL Analytics

Los RDBMS y el uso de SQL existen desde hace mucho tiempo y han demostrado ser muy útiles. Ninguna organización funciona sin ellos. De hecho, la mayoría de las empresas utilizan varios sistemas. Las grandes bases de datos comerciales, como Oracle Database o IBM DB2, probablemente respaldan el software de tu empresa. Los sistemas de código abierto como MariaDB o PostgreSQL pueden utilizarse para otras soluciones y un par de aplicaciones internas .

Como consumidor y analista, es probable que te encuentres con numerosos problemas:

  • A veces ni siquiera sabes dónde hay datos disponibles para que los utilices, y sólo el conocimiento tribal en la empresa, o años de experiencia con configuraciones internas, pueden ayudarte a encontrar los datos adecuados.

  • La consulta de las distintas bases de datos de origen requiere que utilices conexiones diferentes, así como consultas distintas que ejecuten dialectos SQL diferentes. Son lo suficientemente parecidas como para parecer iguales, pero se comportan de forma lo suficientemente diferente como para causar confusión y la necesidad de aprender los detalles.

  • No puedes combinar los datos de distintos sistemas en una consulta sin utilizar el almacén de datos.

Trino te permite sortear estos problemas. Puedes exponer todas estas bases de datos en un solo lugar: Trino.

Puedes utilizar un estándar SQL para consultar todos los sistemas, funciones y operadores SQL normalizados que admite Trino.

Todas tus herramientas de cuadros de mando y análisis, y otros sistemas para tus necesidades de inteligencia empresarial, pueden apuntar a un único sistema, Trino, y tener acceso a todos los datos de tu organización.

Punto de acceso al almacén de datos y a los sistemas fuente

Cuando las organizaciones se encuentran con la necesidad de comprender y analizar mejor los datos de sus numerosos RDBMS, entra en juego la creación y el mantenimiento de sistemas de almacén de datos. Los datos seleccionados de varios sistemas pasan por complejos procesos ETL y, a menudo mediante trabajos por lotes de larga duración, acaban en un almacén de datos masivo y estrictamente controlado.

Aunque esto te ayuda mucho en muchos casos, como analista de datos, ahora te encuentras con nuevos problemas:

  • Ahora tienes otro punto de entrada, además de las propias bases de datos, para tus herramientas y consultas.

  • Los datos que necesitas específicamente hoy no están en el almacén de datos. Conseguir añadir los datos es un proceso doloroso, caro y lleno de obstáculos.

Trino te permite añadir cualquier base de datos de almacén de datos como fuente de datos, igual que cualquier otra base de datos relacional.

Si quieres profundizar en la consulta de un almacén de datos, puedes hacerlo allí mismo, en el mismo sistema. Puedes acceder al almacén de datos y al sistema de base de datos fuente en el mismo lugar e incluso escribir consultas que los combinen. Trino te permite consultar cualquier base de datos en el mismo sistema, almacén de datos, base de datos fuente y cualquier otra base de datos.

Proporciona acceso basado en SQL a cualquier cosa

Los días en que sólo se utilizaban RDBMS han quedado atrás. Ahora los datos se almacenan en muchos sistemas dispares optimizados para casos de uso relevantes. El almacenamiento basado en objetos, los almacenes clave-valor, las bases de datos de documentos, las bases de datos de grafos, los sistemas de flujo de eventos y otros sistemas denominados NoSQL ofrecen características y ventajas únicas.

Al menos algunos de estos sistemas se utilizan en tu organización y contienen datos cruciales para comprender y mejorar tu negocio.

Por supuesto, todos estos sistemas también requieren que utilices diferentes herramientas y tecnologías para consultar y trabajar con los datos.

Como mínimo, se trata de una tarea compleja con una enorme curva de aprendizaje. Lo más probable, sin embargo, es que acabes sólo arañando la superficie de tus datos y no obtengas realmente una comprensión completa. Careces de una buena forma de consultar los datos. Las herramientas para visualizar y analizar con más detalle son difíciles de encontrar o simplemente no existen.

Trino, en cambio, te permite conectarte a todos estos sistemas como fuente de datos. Expone los datos para su consulta con SQL estándar del Instituto Nacional Estadounidense de Normalización (ANSI) y todas las herramientas que utilizan SQL, como se muestra en la Figura 1-4.

One SQL access point for many use cases to all data sources
Figura 1-4. Un punto de acceso SQL para muchos casos de uso a todas las fuentes de datos

Así que con Trino, comprender los datos de todos estos sistemas tan diferentes se convierte en algo mucho más sencillo, o incluso posible, por primera vez.

Consultas federadas

Exponer todos los silos de datos en Trino es un gran paso hacia la comprensión de tus datos. Puedes utilizar SQL y herramientas estándar para consultarlos todos. Sin embargo, a menudo las preguntas que quieres responder requieren que llegues a los silos de datos, saques aspectos de ellos y luego los combines en un solo lugar.

Trino te permite hacerlo utilizando consultas federadas. Una consulta federada es una consulta SQL que hace referencia y utiliza bases de datos y esquemas de sistemas totalmente distintos en la misma sentencia. Todas las fuentes de datos de Trino están disponibles para que las consultes al mismo tiempo, con el mismo SQL en la misma consulta.

Puedes definir las relaciones entre la información de seguimiento de usuarios de tu almacén de objetos con los datos de clientes de tu RDBMS. Si tu almacén de valores clave contiene más información relacionada, también puedes engancharla a tu consulta.

Utilizar consultas federadas con Trino te permite obtener información que no podrías conocer de otro modo.

Capa semántica para un almacén virtual de datos

Los sistemas de almacén de datos no sólo han creado enormes beneficios para los usuarios, sino también una carga para las organizaciones:

  • Ejecutar y mantener el almacén de datos es un proyecto grande y caro.

  • Equipos especializados dirigen y gestionan el almacén de datos y los procesos ETL asociados.

  • Introducir los datos en el almacén requiere que los usuarios superen trámites burocráticos y suele llevar demasiado tiempo.

Trino, en cambio, puede utilizarse como almacén virtual de datos. Se puede utilizar para definir tu capa semántica utilizando una herramienta y el estándar ANSI SQL. Una vez configuradas todas las bases de datos como fuentes de datos en Trino, puedes consultarlas. Trino proporciona la potencia de cálculo necesaria para consultar el almacenamiento en las bases de datos. Utilizando SQL y las funciones y operadores compatibles, Trino puede proporcionarte los datos deseados directamente desde la fuente. No hay necesidad de copiar, mover o transformar los datos antes de que puedas utilizarlos para tu análisis.

Gracias a la compatibilidad SQL estándar con todas las fuentes de datos conectadas, puedes crear la capa semántica deseada para realizar consultas desde herramientas y usuarios finales de forma más sencilla. Y esa capa puede abarcar todas las fuentes de datos subyacentes sin necesidad de migrar ningún dato. Trino puede consultar los datos a nivel de fuente y almacenamiento.

Utilizar Trino como este "almacén de datos sobre la marcha" ofrece a las organizaciones la posibilidad de mejorar su almacén de datos existente con capacidades adicionales o incluso de evitar por completo la construcción y el mantenimiento de un almacén.

Motor de consulta del lago de datos

El término lago de datos se utiliza a menudo para referirse a un gran sistema de almacenamiento de objetos distribuidos HDFS o similar, en el que se vuelcan todo tipo de datos sin pensar demasiado en acceder a ellos. Trino desbloquea esto para convertirlo en un útil almacén de datos. De hecho, Trino surgió de Facebook como una forma de abordar consultas más rápidas y potentes de un almacén de datos Hadoop muy grande que lo que Hive y otras herramientas podían proporcionar. Esto dio lugar al conector Trino Hive, del que se habla en"Conector Hive para fuentes de datos de almacenamiento distribuido".

Los lagos de datos modernos utilizan ahora a menudo otros sistemas de almacenamiento de objetos, además de HDFS, de proveedores en la nube u otros proyectos de código abierto. Trino puede utilizar el conector Hive contra cualquiera de ellos y, por tanto, permitir el análisis basado en SQL en tu lago de datos, dondequiera que se encuentre y comoquiera que almacene los datos.

La creación de nuevos formatos de tabla, como Delta Lake e Iceberg, permitió a los lagos de datos mejorar enormemente su usabilidad, hasta el punto de que se creó el nuevo término data lakehouse. Con los conectores Delta Lake e Iceberg, Trino es una opción de primera clase para consultar estos nuevos lakehouses.

Conversiones SQL y ETL

Con soporte tanto para RDBMS como para otros sistemas de almacenamiento de datos, Trino puede utilizarse para mover datos. SQL, y el rico conjunto de funciones SQL disponibles, te permiten consultar datos, transformarlos y luego escribirlos en la misma fuente de datos o en cualquier otra.

En la práctica, esto significa que puedes copiar los datos de tu sistema de almacenamiento de objetos o almacén de valores clave a un RDBMS y utilizarlos para tus análisis en el futuro. Por supuesto, también puedes transformar y agregar los datos para obtener nuevos conocimientos.

Por otra parte, también es habitual tomar datos de un RDBMS operativo, o quizá de un sistema de flujo de eventos como Kafka, y trasladarlos a un lago de datos para aliviar la carga del RDBMS en términos de consulta por parte de muchos analistas. Los procesos ETL, ahora también llamados preparación de datos, pueden ser una parte importante de este proceso para mejorar los datos y crear un modelo de datos más adecuado para la consulta y el análisis.

En este escenario, Trino es una parte fundamental de una solución global de gestión de datos, y la compatibilidad con la ejecución tolerante a fallos de las consultas con los lagos de datos modernos hace de Trino una opción excelente para estos casos de uso.

Mejor información gracias a tiempos de respuesta más rápidos

Formular preguntas complejas y utilizar conjuntos de datos masivos siempre tropieza con limitaciones. Puede que resulte demasiado caro copiar los datos y cargarlos en tu almacén de datos y analizarlos allí. Los cálculos requieren demasiada potencia de cálculo para poder ejecutarlos en absoluto, o se tarda muchos días en obtener una respuesta.

Trino evita la copia de datos por diseño. El procesamiento paralelo y las grandes optimizaciones conducen regularmente a mejoras en el rendimiento de tus análisis con Trino.

Si una consulta que antes tardaba tres días puede ejecutarse ahora en 15 minutos, puede que merezca la pena ejecutarla después de todo. Y el conocimiento obtenido de los resultados te da una ventaja y la capacidad de ejecutar aún más consultas.

Estos tiempos de procesamiento más rápidos de Trino permiten mejores análisis y resultados.

Big Data, Aprendizaje Automático e Inteligencia Artificial

El hecho de que Trino exponga cada vez más datos a herramientas estándar en torno a SQL, y escale la consulta a conjuntos de datos masivos, lo convierte en una herramienta primordial para el procesamiento de big data. Ahora esto incluye a menudo el análisis estadístico y crece en complejidad hacia el aprendizaje automático y los sistemas de inteligencia artificial. Con la compatibilidad con R y otras herramientas, Trino tiene sin duda un papel que desempeñar en estos casos de uso.

Otros casos de uso

En las secciones anteriores hemos ofrecido una visión general de alto nivel de los casos de uso de Trino. Regularmente surgen nuevos casos de uso y combinaciones.

En el Capítulo 13, puedes conocer detalles sobre el uso de Trino por parte de algunas empresas y organizaciones conocidas. Presentamos esa información hacia el final del libro para que puedas adquirir primero los conocimientos necesarios para comprender los datos que tienes entre manos leyendo los capítulos siguientes.

Recursos Trino

Además de este libro, existen muchos más recursos que te permitirán ampliar tus conocimientos sobre Trino. En esta sección, enumeramos los puntos de partida importantes. La mayoría de ellos contienen mucha información e incluyen punteros a otros recursos.

Página web

La Fundación del Software Trino gobierna la comunidad del proyecto de código abierto Trino y mantiene el sitio web del proyecto. Puedes ver la página de inicio en la Figura 1-5. El sitio web contiene documentación, datos de contacto, entradas del blog de la comunidad con las últimas noticias y eventos, episodios de Trino Community Broadcast en formato de audio y vídeo, y otra información en https://trino.io.

Front page of Trino website at trino.io
Figura 1-5. Página de inicio del sitio web de Trino en trino.io

Documentación

La documentación detallada de Trino se mantiene como parte del código base y está disponible en el sitio web. Incluye descripciones generales de alto nivel, así como información de referencia detallada sobre el soporte SQL, funciones y operadores, conectores, configuración y mucho más. También encontrarás notas de la versión con detalles de los últimos cambios. Empieza enhttps://trino.io/docs.

Chat comunitario

La comunidad de usuarios principiantes, avanzados y expertos, así como los colaboradores y mantenedores de Trino, es muy solidaria y colabora activamente todos los días en el chat de la comunidad disponible enhttps://trinodb.slack.com.

Únete al canal de anuncios, y luego echa un vistazo a los numerosos canales centrados en diversos temas, como ayuda para principiantes, triaje de errores, versiones, desarrollo, y canales más específicos para hablar de Kubernetes o de conectores concretos.

Nota

Puedes encontrar a Matt, Manfred y Martin en el chat de la comunidad casi todos los días, y nos encantaría saber de ti allí.

Código fuente, licencia y versión

Trino es un proyecto de código abierto distribuido bajo la Licencia Apache, v2 con el código fuente gestionado y disponible en el repositorio Git enhttps://github.com/trinodb/trino.

La organización trinodb enhttps://github.com/trinodb contiene otros numerosos repositorios relacionados con el proyecto, como el código fuente del sitio web, los clientes, otros componentes o el repositorio de gestión de licencias de los colaboradores.

Trino es un proyecto activo de código abierto con versiones frecuentes. Si utilizas la versión más reciente, podrás beneficiarte de las últimas funciones, correcciones de errores y mejoras de rendimiento. Este libro hace referencia y utiliza la última versión de Trino, la 392, en el momento de escribir este libro. Si eliges una versión diferente y más reciente de Trino, debería funcionar igual que la descrita en este libro. Aunque es poco probable que te encuentres con problemas, es importante que consultes las notas de la versión y la documentación para conocer cualquier cambio.

Contribuyendo

Como hemos mencionado, Trino es un proyecto de código abierto impulsado por la comunidad, y tus contribuciones son bienvenidas y alentadas. El proyecto es muy activo en el chat de la comunidad, y los committers y otros desarrolladores están disponibles para ayudar allí.

Aquí tienes algunas tareas para empezar a contribuir:

  • Consulta la sección Guía del desarrollador de la documentación.

  • Aprende a construir el proyecto desde el código fuente con las instrucciones del archivo README.

  • Lee los artículos de investigación enlazados en la página de la Comunidad del sitio web.

  • Lee el Código de Conducta en la misma página.

  • Encuentra un número con la etiqueta buen primer número.

  • Firma el acuerdo de licencia de colaborador (CLA).

El proyecto sigue recibiendo contribuciones de muy diversa complejidad: desde pequeñas mejoras en la documentación hasta nuevos conectores u otros complementos, pasando por mejoras en lo más profundo del funcionamiento interno de Trino.

Por supuesto, cualquier trabajo que hagas con y en torno a Trino es bienvenido en la comunidad. Esto incluye, sin duda, trabajos aparentemente no relacionados, como escribir entradas de blog, hacer presentaciones en reuniones de grupos de usuarios o conferencias, o escribir y gestionar un plug-in por tu cuenta, tal vez para un sistema de base de datos que utilices.

En general, te animamos a que trabajes con el equipo y te involucres. El proyecto crece y prospera con las aportaciones de todos. Estamos dispuestos a ayudar. ¡Tú puedes!

Depósito de libros

Proporcionamos recursos relacionados con este libro -como ejemplos de archivos de configuración, consultas SQL, conjuntos de datos y mucho más- en un repositorio Git para tu comodidad.

Encuéntralo en https://github.com/trinodb/trino-the-definitive-guide, y descarga el contenido como un archivo comprimido o clona el repositorio con git.

No dudes en crear un pull request para cualquier corrección, adición deseada o problema de archivo si encuentras algún problema.

Conjunto de datos del iris

En secciones posteriores de este libro, vas a encontrar consultas de ejemplo y casos de uso que hablan delas flores del iris y del conjunto de datos del iris. El motivo es un famoso conjunto de datos, utilizado habitualmente en ejemplos de clasificación de la ciencia de datos, que trata sobre las flores del iris.

El conjunto de datos consiste en una tabla simple de 150 registros y columnas con valores para la longitud de los sépalos, la anchura de los sépalos, la longitud de los pétalos, la anchura de los pétalos y la especie.

Su pequeño tamaño permite a los usuarios probar y ejecutar consultas fácilmente y realizar una amplia gama de análisis. Esto hace que el conjunto de datos sea adecuado para el aprendizaje, incluso para su uso con Trino. Puedes obtener más información sobre el conjunto de datosen la página de Wikipedia sobre él.

Nuestro repositorio de libros contiene el directorio iris-data-set con los datos en formato de valores separados por comas (CSV), así como un archivo SQL para crear una tabla e insertarla. Después de leerel Capítulo 2 y la "Interfaz de línea de comandos de Trino", las siguientes instrucciones son fáciles de seguir.

Puedes utilizar el conjunto de datos copiando primero el archivo etc/catalog/brain.propertiesen la misma ubicación que tu instalación de Trino y reiniciando Trino.

Ahora puedes utilizar la CLI de Trino para obtener el conjunto de datos en la tabla iris del esquemadefault del catálogo brain:

$ trino -f iris-data-set/iris-data-set.sql
USE
CREATE TABLE
INSERT: 150 rows

Confirma que se pueden consultar los datos:

$ trino --execute 'SELECT * FROM brain.default.iris;'
"5.1","3.5","1.4","0.2","setosa"
"4.9","3.0","1.4","0.2","setosa"
"4.7","3.2","1.3","0.2","setosa"
...

Como alternativa, puedes ejecutar las consultas en cualquier herramienta de gestión SQL conectada a Trino; por ejemplo, con el controlador de conectividad a bases de datos Java (JDBC) descrito en "Controlador JDBC de Trino".

En secciones posteriores se incluyen consultas de ejemplo para ejecutar con este conjunto de datos en los Capítulos 8 y9, así como información sobre el conector de memoria utilizado en el catálogo brain en "Conector de memoria".

Conjunto de datos de vuelo

Al igual que el conjunto de datos del iris, el conjunto de datos de vuelos se utiliza más adelante en este libro para ejemplos de consulta y uso. El conjunto de datos es un poco más complejo que el conjunto de datos del iris, ya que consta de tablas de búsqueda de compañías aéreas, aeropuertos y otra información, así como de datos transaccionales sobre vuelos concretos. Esto hace que el conjunto de datos sea adecuado para consultas más complejas utilizando uniones y para su uso en consultas federadas, en las que diferentes tablas se encuentran en diferentes fuentes de datos.

Los datos se recogen de la Administración Federal de Aviación (FAA) y se curan para su análisis. El esquema de la tabla flights es bastante amplio, con un subconjunto de las columnas disponibles que se muestran en la Tabla 1-1.

Tabla 1-1. Subconjunto de columnas disponibles

fecha de vuelo

airlineid

origen

dest

arrtime

deptime

Cada fila del conjunto de datos representa una salida o una llegada de un vuelo a un aeropuerto de Estados Unidos.

El repositorio de libros -ver "Repositorio de libros"- contieneuna carpeta aparte,flight-data-set. Contiene instrucciones sobre cómo importar los datos a distintos sistemas de bases de datos, para que puedas conectarlos a Trino y ejecutar las consultas de ejemplo.

Breve historia de Trino

En 2008, Facebook hizo que Hive (que más tarde se convertiría en Apache Hive) fuera de código abierto. Hive se utilizó ampliamente en Facebook para ejecutar análisis de datos en HDFS en su enorme clúster Apache Hadoop.

Los analistas de datos de Facebook utilizaban Hive para ejecutar consultas interactivas en su gran almacén de datos. Antes de que existiera Presto en Facebook, todos los análisis de datos dependían de Hive, que no era adecuado para consultas interactivas a la escala de Facebook. En 2012, su almacén de datos Hive tenía un tamaño de 250 petabytes y debía gestionar cientos de usuarios que emitían decenas de miles de consultas al día. Hive empezó a llegar a su límite dentro de Facebook y no ofrecía la posibilidad de consultar otras fuentes de datos dentro de Facebook.

Presto se diseñó desde cero para ejecutar consultas rápidas a escala de Facebook. En lugar de crear un nuevo sistema al que trasladar los datos, Presto se diseñó para leer los datos desde donde están almacenados mediante su sistema de conectores enchufables. Uno de los primeros conectores desarrollados para Presto fue el conector Hive; consulta"Conector Hive para fuentes de datos de almacenamiento distribuido". Este conector consulta directamente los datos almacenados en un almacén de datos Hive.

En 2012, cuatro ingenieros de Facebook iniciaron el desarrollo de Presto para abordar las necesidades de rendimiento, escalabilidad y extensibilidad de los análisis en Facebook. Desde el principio, la intención fue construir Presto como un proyecto de código abierto. A principios de 2013, la versión inicial de Presto se puso en producción en Facebook. En otoño de 2013, Presto se ofreció oficialmente como código abierto. Viendo el éxito en Facebook, otras grandes empresas a escala web empezaron a adoptar Presto, como Netflix, LinkedIn, Treasure Data, etc. Muchas empresas siguieron su ejemplo.

En 2015, Teradata anunció un gran compromiso de 20 ingenieros que contribuían a Presto, centrados en añadir características empresariales como mejoras de seguridad e integración de herramientas del ecosistema. Más tarde, en 2015, Amazon añadió Presto a su oferta AWS Elastic MapReduce (EMR). En 2016, Amazon anunció Athena, en la que Presto es una pieza fundamental. Y en 2017 se creó Starburst, una empresa dedicada a impulsar el éxito de Presto en todas partes.

A finales de 2018, los creadores originales abandonaron Facebook y fundaron la Fundación Presto Software para garantizar que el proyecto siguiera siendo colaborativo e independiente. El proyecto pasó a conocerse comoPrestoSQL. Toda la comunidad de colaboradores y usuarios se trasladó al código base de PrestoSQL con los fundadores y mantenedores del proyecto. Desde entonces, la innovación y el crecimiento del proyecto se han acelerado aún más.

A finales de 2020 se produjo otro hito del proyecto. Para reducir la confusión entre PrestoSQL, el proyecto heredado PrestoDB, y otras versiones, la comunidad decidió cambiar el nombre del proyecto. Tras una larga búsqueda de un nombre adecuado, se eligió Trino. El código, el sitio web y todo lo que rodea al proyecto se actualizó para utilizarTrino. La fundación pasó a llamarse Fundación de Software Trino. La última versión bajo la bandera de PrestoSQL fue la 350. Las versiones 351 y posteriores utilizan Trino. La comunidad acogió y celebró el cambio, se trasladó con el proyecto y eligió un nombre para la nueva mascota, el Comandante Bun Bun.

En la actualidad, la comunidad de Trino prospera y crece, y muchas empresas conocidas siguen utilizando Trino a gran escala. Los mantenedores del núcleo y la comunidad más amplia en torno a Trino impulsan constantemente la innovación con nuevo soporte SQL, uso actualizado del tiempo de ejecución de Java 17, código y arquitectura modernizados para soportar la ejecución tolerante a fallos y un mayor rendimiento, e integraciones con herramientas cliente para las necesidades de informes y plataformas de datos. El proyecto lo mantiene una floreciente comunidad de desarrolladores y colaboradores de muchas empresas de todo el mundo, como Amazon, Bloomberg, Eventbrite, Gett, Google, Line, LinkedIn, Lyft, Netflix, Pinterest, Red Hat, Salesforce, Shopify, Starburst, Treasure Data, Zuora, y los muchos clientes de estos usuarios.

Conclusión

En este capítulo te hemos presentado Trino. Has aprendido más sobre algunas de sus funciones y hemos explorado juntos posibles casos de uso.

En el Capítulo 2, pones en marcha Trino, conectas una fuente de datos y ves cómo puedes consultar los datos.

Get Trino: La Guía Definitiva, 2ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.