Kapitel 1. Trino stellt sich vor
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Du hast also von Trino gehört und dieses Buch gefunden. Oder vielleicht liest du gerade dieses erste Kapitel und fragst dich, ob du einsteigen sollst. In diesem Einführungskapitel gehen wir auf die Probleme ein, auf die du mit dem massiven Wachstum der Datenerzeugung und dem Wert, der in diesen Daten steckt, stoßen könntest. Trino ist ein wichtiger Wegbereiter, um mit all den Daten zu arbeiten und den Zugang zu ihnen mit bewährten und erfolgreichen Tools rund um die Structured Query Language (SQL) zu ermöglichen.
Das Design und die Funktionen von Trino ermöglichen es dir, bessere Einblicke zu erhalten, als du sie jetzt hast. Du kannst diese Erkenntnisse schneller gewinnen und Informationen erhalten, die du in der Vergangenheit nicht bekommen konntest, weil sie zu teuer waren oder zu lange dauerten, um sie zu erhalten. Und für all das brauchst du weniger Ressourcen und gibst daher weniger von deinem Budget aus, das du dann für noch mehr Lernen verwenden kannst!
Wir verweisen dich auch auf weitere Ressourcen außerhalb dieses Buches, aber wir hoffen natürlich, dass du zuerst hier zu uns kommst.
Die Probleme mit Big Data
Jeder erfasst immer mehr Daten aus Gerätemessungen, der Verfolgung des Nutzerverhaltens, Geschäftstransaktionen, Standortdaten, Software- und Systemtestverfahren und Workflows und vieles mehr. Die Erkenntnisse, die aus dem Verständnis dieser Daten und der Arbeit mit ihnen gewonnen werden, können über den Erfolg einer Initiative oder sogar eines Unternehmens entscheiden.
Gleichzeitig ist die Vielfalt der verfügbaren Mechanismen zur Speicherung von Daten explodiert: relationale Datenbanken, NoSQL-Datenbanken, Dokumentendatenbanken, Key-Value-Stores, Objektspeichersysteme und so weiter. Viele von ihnen sind in den heutigen Unternehmen notwendig, und es ist nicht mehr möglich, nur einen von ihnen zu verwenden. Wie du in Abbildung 1-1 sehen kannst, kann der Umgang damit eine gewaltige Aufgabe sein, die sich überwältigend anfühlt.
Außerdem erlauben es all diese unterschiedlichen Systeme nicht, die Daten mit Standardwerkzeugen abzufragen und zu prüfen. Überall gibt es unterschiedliche Abfragesprachen und Analysetools für Nischensysteme. Deine Unternehmensanalysten sind jedoch an den Industriestandard SQL gewöhnt. Unzählige leistungsstarke Tools nutzen SQL für Analysen, die Erstellung von Dashboards, umfangreiche Berichte und andere Business Intelligence Aufgaben.
Die Daten sind über verschiedene Silos verteilt, und einige davon können nicht einmal mit der für deine Analyseanforderungen erforderlichen Leistung abgefragt werden. Andere Systeme speichern, anders als moderne Cloud-Anwendungen, Daten in monolithischen Systemen, die nicht horizontal skalierbar sind. Ohne diese Funktionen schränkst du die Zahl der möglichen Anwendungsfälle und Nutzer ein und damit auch den Nutzen der Daten.
Der traditionelle Ansatz, große, dedizierte Data Warehouses zu erstellen und zu pflegen, hat sich in Unternehmen auf der ganzen Welt als sehr teuer erwiesen. Meistens wird dieser Ansatz auch als zu langsam und umständlich für viele Nutzer und Nutzungsmuster empfunden. Die oft in Erwägung gezogene Lösung, einen Data Lake einzurichten, endete damit, dass die Daten auf einer Müllhalde landeten, die niemand mehr anschaute oder sich die Mühe machte, die Daten zu analysieren. Auch der neue Ansatz eines Data Lakehouse, der verspricht, die Vorteile von Warehouses und Lakes zu kombinieren, wird nicht die einzige Lösung sein. Die Daten werden weiterhin verteilt bleiben, überall gespeichert werden und in immer mehr Systemen auftauchen.
Du kannst dir vorstellen, wie groß die Chance für ein System ist, all diese Werte zu erschließen.
Trino zur Rettung
Trino ist in der Lage, all diese Probleme zu lösen und neue Möglichkeiten mit föderierten Abfragen an unterschiedliche Systeme, parallelen Abfragen, horizontaler Cluster-Skalierung und vielem mehr zu erschließen. Das Logo des Trino-Projekts siehst du inAbbildung 1-2.
Trino ist eine quelloffene, verteilte SQL-Abfrage-Engine. Sie wurde von Grund auf für die effiziente Abfrage von Daten aus unterschiedlichen Datenquellen jeder Größe - von Gigabyte bis Petabyte - entwickelt und geschrieben. Trino macht Schluss mit der falschen Wahl zwischen schnellen Analysen mit einer teuren kommerziellen Lösung oder einer langsamen "kostenlosen" Lösung, die viel Hardware benötigt.
Entwickelt für Leistung und Größe
Trino ist ein Tool, mit dem große Datenmengen durch verteilte Ausführung effizient abgefragt werden können. Wenn du Terabytes oder sogar Petabytes an Daten abfragen musst, verwendest du wahrscheinlich Tools wie Apache Hive, die mit Hadoop und seinem Hadoop Distributed File System (HDFS) interagieren, oder gleichwertige Systeme wie Amazon Simple Storage Service (S3) und andere, die von Cloud-Providern bereitgestellt oder in selbst gehosteten, kompatiblen Implementierungen verwendet werden. Trino wurde als Alternative zu diesen Tools entwickelt, um diese Daten effizienter abzufragen.
Analysten, die SQL-Antwortzeiten von Millisekunden für Echtzeitanalysen bis hin zu Sekunden und Minuten erwarten, sollten Trino nutzen. Trino unterstützt SQL, das im Data Warehousing und in der Analytik häufig für die Analyse von Daten, die Aggregation großer Datenmengen und die Erstellung von Berichten verwendet wird. Diese Workloads werden oft als Online Analytical Processing (OLAP) bezeichnet.
Auch wenn Trino SQL versteht und effizient ausführen kann, ist Trino keine Datenbank, da es kein eigenes System zur Speicherung von Daten enthält. Es ist nicht als universelle relationale Datenbank gedacht, die Microsoft SQL Server, Oracle Database, MySQL oder PostgreSQL ersetzt. Außerdem ist Trino nicht für die Verarbeitung von Online-Transaktionen (OLTP) ausgelegt. Das gilt auch für andere Datenbanken, die für Data Warehousing oder Analysen entwickelt und optimiert wurden, wie z. B. Teradata, Netezza, Vertica und Amazon Redshift.
Trino nutzt sowohl bekannte als auch neue Techniken für die verteilte Abfrageverarbeitung. Zu diesen Techniken gehören die parallele In-Memory-Verarbeitung, die Pipeline-Ausführung über die Knoten im Cluster, ein Multithreading-Ausführungsmodell, um alle CPU-Kerne zu beschäftigen, effiziente Flat-Memory-Datenstrukturen, um die Speicherbereinigung in Java zu minimieren, und die Erzeugung von Java-Bytecode. Eine detaillierte Beschreibung dieser komplexen Trino-Interna würde den Rahmen dieses Buches sprengen. Für Trino-Nutzer bedeuten diese Techniken schnellere Einblicke in ihre Daten zu einem Bruchteil der Kosten anderer Lösungen.
SQL-on-Anything
Trino wurde ursprünglich entwickelt, um Daten aus dem HDFS abzufragen. Und das kann es auch sehr effizient, wie du später lernen wirst. Aber das ist noch nicht alles. Vielmehr ist Trino eine Abfrage-Engine, die Daten aus Objektspeichern, relationalen Datenbankmanagementsystemen (RDBMS), NoSQL-Datenbanken und anderen Systemen abfragen kann, wie in Abbildung 1-3 dargestellt.
Trino fragt Daten dort ab, wo sie sich befinden, und erfordert keine Migration der Daten an einen einzigen Ort. Mit Trino kannst du also Daten in HDFS und anderen verteilten Speicherungen abfragen. Es ermöglicht dir, RDBMS und andere Datenquellen abzufragen. Indem Trino die Daten dort abfragt, wo sie sich befinden, kann es die traditionellen, teuren und schwerfälligen Extraktions-, Transformations- und Ladeprozesse (ETL) ersetzen. Oder zumindest kann es dir helfen, indem es eine Abfrage-Engine bereitstellt, mit der du hochleistungsfähige ETL-Prozesse mit modernen Werkzeugen wie dbt über alle Datenquellen hinweg ausführen kannst, wo dies erforderlich ist, und so die Notwendigkeit von ETL-Prozessen verringern oder sogar vermeiden kannst. Trino ist also eindeutig nicht nur eine weitere SQL-on-Hadoop-Lösung.
Zu den Objektspeichersystemen gehören Amazon S3, Microsoft Azure Blob Storage, Google Cloud Storage und S3-kompatible Speicher wie MinIO und Ceph. Diese Systeme können sowohl das traditionelle Hive-Tabellenformat als auch die neueren Ersatzformate Delta Lake und Iceberg verwenden. Trino kann traditionelle RDBMSs wie Microsoft SQL Server, PostgreSQL, MySQL, Oracle, Teradata und Amazon Redshift abfragen. Trino kann auch NoSQL-Systeme wie Apache Cassandra, Apache Kafka, MongoDB oder Elasticsearch abfragen. Trino kann praktisch alles abfragen und ist ein echtes SQL-on-Anything-System.
Für die Nutzerinnen und Nutzer bedeutet das, dass sie plötzlich nicht mehr auf spezielle Abfragesprachen oder Tools angewiesen sind, um mit den Daten in diesen speziellen Systemen zu interagieren. Sie können einfach Trino und ihre vorhandenen SQL-Kenntnisse sowie ihre gut verstandenen Analyse-, Dashboarding- und Reporting-Tools nutzen. Diese Tools, die auf der Verwendung von SQL aufbauen, ermöglichen die Analyse dieser zusätzlichen Datensätze, die sonst in separaten Systemen eingeschlossen sind. Die Nutzer können mit Trino sogar verschiedene Systeme mit demselben SQL abfragen, das sie bereits kennen.
Trennung von Datenspeicherung und Rechenressourcen für Abfragen
Trino ist keine Datenbank mit Speicherung, sondern fragt die Daten einfach dort ab, wo sie sind. Bei der Verwendung von Trino sind Speicherung und Berechnung entkoppelt und können unabhängig voneinander skaliert werden. Trino stellt die Rechenschicht dar, während die zugrundeliegenden Datenquellen die Ebene der Speicherung repräsentieren.
Auf diese Weise kann Trino seine Rechenressourcen für die Abfrageverarbeitung je nach Bedarf der Analytiker an diesen Daten auf- und abbauen. Es ist nicht nötig, deine Daten zu verschieben und die Rechen- und Speicherressourcen genau auf die aktuellen Abfragen abzustimmen oder regelmäßig zu ändern, wenn sich die Abfrageanforderungen ändern.
Trino kann die Abfrageleistung skalieren, indem es den Compute-Cluster dynamisch skaliert, und die Daten können direkt dort abgefragt werden, wo sie sich in der Datenquelle befinden. Dank dieser Eigenschaft kannst du den Bedarf an Hardwareressourcen erheblich optimieren und so die Kosten senken.
Trino Anwendungsfälle
Die Flexibilität und die leistungsstarken Funktionen von Trino erlauben es dir, selbst zu entscheiden, wie genau du Trino nutzt und welche Vorteile du schätzt und nutzen möchtest. Du kannst mit einer kleinen Anwendung für ein bestimmtes Problem beginnen. Die meisten Trino-Nutzer fangen so an.
Sobald du und andere Trino-Nutzer in deinem Unternehmen sich an die Vorteile und Funktionen gewöhnt haben, wirst du neue Situationen entdecken. Das spricht sich herum, und schon bald wirst du sehen, dass Trino eine Vielzahl von Anforderungen erfüllt, indem es auf eine Vielzahl von Datenquellen zugreift.
In diesem Abschnitt gehen wir auf einige dieser Anwendungsfälle ein. Denke daran, dass du deinen Anwendungsfall erweitern kannst, um sie alle abzudecken. Andererseits ist es auch völlig in Ordnung, ein bestimmtes Problem mit Trino zu lösen. Sei einfach bereit, Trino zu mögen und seine Nutzung zu erweitern.
Ein SQL Analytics-Zugangspunkt
RDBMS und die Verwendung von SQL gibt es schon sehr lange und sie haben sich als sehr nützlich erwiesen. Kein Unternehmen kommt ohne sie aus. Die meisten Unternehmen haben sogar mehrere Systeme im Einsatz. Große kommerzielle Datenbanken wie Oracle Database oder IBM DB2 sind wahrscheinlich die Grundlage deiner Unternehmenssoftware. Open-Source-Systeme wie MariaDB oder PostgreSQL werden vielleicht für andere Lösungen und einige interne Anwendungen verwendet .
Als Verbraucher und Analyst stößt du wahrscheinlich auf zahlreiche Probleme:
-
Manchmal weißt du nicht, wo es überhaupt Daten gibt, die du nutzen kannst, und nur Stammeswissen im Unternehmen oder jahrelange Erfahrung mit internen Setups können dir helfen, die richtigen Daten zu finden.
-
Um die verschiedenen Quelldatenbanken abzufragen, musst du verschiedene Verbindungen und Abfragen mit unterschiedlichen SQL-Dialekten verwenden. Sie sind ähnlich genug, um gleich auszusehen, aber sie verhalten sich gerade so unterschiedlich, dass sie Verwirrung stiften und du die Details lernen musst.
-
Du kannst die Daten aus verschiedenen Systemen nicht in einer Abfrage kombinieren, ohne das Data Warehouse zu nutzen.
Trino ermöglicht es dir, diese Probleme zu umgehen. Du kannst all diese Datenbanken an einem Ort ausstellen: Trino.
Du kannst einen SQL-Standard verwenden, um alle von Trino unterstützten systemstandardisierten SQL-Funktionen und Operatoren abzufragen.
All deine Dashboarding- und Analysetools sowie andere Systeme für deine Business Intelligence-Bedürfnisse können auf ein System, Trino, verweisen und haben Zugriff auf alle Daten in deinem Unternehmen.
Zugangspunkt zum Data Warehouse und den Quellsystemen
Wenn Unternehmen die Notwendigkeit sehen, die Daten in ihren zahlreichen RDBMS besser zu verstehen und zu analysieren, kommt die Erstellung und Pflege von Data Warehouse-Systemen ins Spiel. Ausgewählte Daten aus verschiedenen Systemen durchlaufen dann komplexe ETL-Prozesse und landen, oft über langlaufende Batch-Jobs, in einem streng kontrollierten, riesigen Data Warehouse.
Das ist zwar in vielen Fällen sehr hilfreich, aber als Datenanalyst/in stößt du jetzt auf neue Probleme:
-
Jetzt hast du zusätzlich zu den Datenbanken selbst einen weiteren Einstiegspunkt für deine Tools und Abfragen.
-
Die Daten, die du heute brauchst, befinden sich nicht im Data Warehouse. Das Hinzufügen der Daten ist ein mühsamer, teurer Prozess voller Hürden.
Mit Trino kannst du jede Data Warehouse Datenbank als Datenquelle hinzufügen, genau wie jede andere relationale Datenbank.
Wenn du tiefer in eine Data Warehouse-Abfrage eintauchen willst, kannst du das direkt im selben System tun. Du kannst auf das Data Warehouse und das Quelldatenbanksystem am selben Ort zugreifen und sogar Abfragen schreiben, die beide miteinander kombinieren. Mit Trino kannst du jede Datenbank im selben System abfragen, das Data Warehouse, die Quelldatenbank und jede andere Datenbank.
SQL-basierter Zugriff auf alles möglich machen
Die Zeiten, in denen nur RDBMS verwendet wurden, sind längst vorbei. Daten werden heute in vielen verschiedenen Systemen gespeichert, die für die jeweiligen Anwendungsfälle optimiert sind. Objektbasierte Speicherung, Key-Value-Stores, Dokumentendatenbanken, Graphdatenbanken, Event-Streaming-Systeme und andere sogenannte NoSQL-Systeme bieten alle einzigartige Funktionen und Vorteile.
Zumindest einige dieser Systeme sind in deinem Unternehmen im Einsatz und enthalten Daten, die für das Verständnis und die Verbesserung deines Unternehmens wichtig sind.
Natürlich musst du bei all diesen Systemen auch verschiedene Tools und Technologien einsetzen, um die Daten abzufragen und zu bearbeiten.
Zumindest ist dies eine komplexe Aufgabe mit einer enormen Lernkurve. Wahrscheinlicher ist jedoch, dass du am Ende nur an der Oberfläche deiner Daten kratzt und kein wirklich vollständiges Verständnis erlangst. Dir fehlt eine gute Möglichkeit, die Daten abzufragen. Tools zur Visualisierung und detaillierteren Analyse sind schwer zu finden oder existieren einfach nicht.
Trino hingegen ermöglicht es dir, dich mit all diesen Systemen als Datenquelle zu verbinden. Die Daten können mit dem Standard-SQL des American National Standards Institute (ANSI) abgefragt werden und alle Werkzeuge verwenden SQL, wie in Abbildung 1-4 dargestellt.
Mit Trino wird es also viel einfacher, die Daten in all diesen sehr unterschiedlichen Systemen zu verstehen, oder sogar zum ersten Mal möglich.
Föderierte Abfragen
Die Offenlegung aller Datensilos in Trino ist ein großer Schritt zum Verständnis deiner Daten. Du kannst SQL und Standardtools verwenden, um sie alle abzufragen. Oft musst du jedoch für die Fragen, die du beantworten willst, in die Datensilos gehen, Aspekte aus ihnen herausziehen und sie dann an einem Ort kombinieren.
Mit Trino kannst du das mit Hilfe von Verbundabfragen erreichen. Eine Verbundabfrage ist eine SQL-Abfrage, die Datenbanken und Schemata aus völlig unterschiedlichen Systemen in derselben Anweisung referenziert und verwendet. Du kannst alle Datenquellen in Trino gleichzeitig abfragen, und zwar mit der gleichen SQL-Anweisung in der gleichen Abfrage.
Du kannst die Beziehungen zwischen den Informationen zur Benutzerverfolgung aus deiner Speicherung und den Kundendaten in deinem RDBMS definieren. Wenn dein Key-Value-Store weitere verwandte Informationen enthält, kannst du sie ebenfalls in deine Abfrage einbinden.
Wenn du mit Trino föderierte Abfragen verwendest, erhältst du Einblicke, die du sonst nicht erfahren könntest.
Semantische Schicht für ein virtuelles Data Warehouse
Data-Warehouse-Systeme haben nicht nur große Vorteile für die Nutzer, sondern auch eine Belastung für die Unternehmen geschaffen:
-
Der Betrieb und die Pflege des Data Warehouse ist ein großes, teures Projekt.
-
Dedizierte Teams betreiben und verwalten das Data Warehouse und die damit verbundenen ETL-Prozesse.
-
Um die Daten in das Warehouse zu bekommen, müssen die Nutzerinnen und Nutzer bürokratische Hürden überwinden und brauchen in der Regel zu viel Zeit.
Trino hingegen kann als virtuelles Data Warehouse verwendet werden. Damit kannst du deine semantische Schicht mit einem einzigen Tool und ANSI-SQL-Standard definieren. Sobald alle Datenbanken als Datenquellen in Trino konfiguriert sind, kannst du sie abfragen. Trino bietet die notwendige Rechenleistung, um die Speicherung in den Datenbanken abzufragen. Mit SQL und den unterstützten Funktionen und Operatoren kann Trino dir die gewünschten Daten direkt aus der Quelle liefern. Du musst die Daten nicht erst kopieren, verschieben oder umwandeln, bevor du sie für deine Analyse verwenden kannst.
Dank der standardmäßigen SQL-Unterstützung für alle angeschlossenen Datenquellen kannst du die gewünschte semantische Schicht für Abfragen von Tools und Endnutzern auf einfachere Weise erstellen. Und diese Schicht kann alle zugrunde liegenden Datenquellen umfassen, ohne dass Daten migriert werden müssen. Trino kann die Daten auf der Ebene der Quelle und der Speicherung abfragen.
Der Einsatz von Trino als "on-the-fly Data Warehouse" bietet Unternehmen die Möglichkeit, ihr bestehendes Data Warehouse um zusätzliche Funktionen zu erweitern oder sogar den Aufbau und die Pflege eines Warehouses ganz zu vermeiden.
Data Lake Query Engine
Der Begriff "Data Lake" wird oft für ein großes HDFS- oder ähnliches verteiltes Objektspeichersystem verwendet, in das alle möglichen Daten gekippt werden, ohne dass man sich groß Gedanken über den Zugriff darauf macht. Trino verwandelt diese Daten in ein nützliches Data Warehouse. Trino wurde von Facebook entwickelt, um schnellere und leistungsfähigere Abfragen in einem sehr großen Hadoop-Data-Warehouse zu ermöglichen, als dies mit Hive und anderen Tools möglich ist. Daraus entstand der Trino Hive Connector, der in"Hive Connector for Distributed Storage Data Sources" beschrieben wird.
Moderne Data Lakes nutzen heute neben HDFS oft auch andere Objektspeicher von Cloud-Providern oder anderen Open-Source-Projekten. Trino kann den Hive-Konnektor für jedes dieser Systeme nutzen und so SQL-basierte Analysen für deinen Data Lake ermöglichen, egal wo er sich befindet und wie er die Daten speichert.
Die Schaffung neuer Tabellenformate wie Delta Lake und Iceberg ermöglichte es, die Nutzbarkeit von Data Lakes enorm zu verbessern, so sehr, dass der neue Begriff Data Lakehouse entstand. Mit den Delta Lake- und Iceberg-Konnektoren ist Trino eine erstklassige Wahl für die Abfrage dieser neuen Lakehouses.
SQL-Konvertierungen und ETL
Trino unterstützt sowohl RDBMS als auch andere Systeme zur Datenspeicherung und kann daher zum Verschieben von Daten verwendet werden. Mit SQL und den zahlreichen verfügbaren SQL-Funktionen kannst du Daten abfragen, sie umwandeln und dann in dieselbe oder eine andere Datenquelle schreiben.
In der Praxis bedeutet das, dass du Daten aus deinem Objektspeicher oder Key-Value-Store in ein RDBMS kopieren und für deine Analysen verwenden kannst. Natürlich kannst du die Daten auch transformieren und aggregieren, um neue Erkenntnisse zu gewinnen.
Andererseits ist es auch üblich, Daten aus einem operativen RDBMS oder einem Event-Streaming-System wie Kafka in einen Data Lake zu verschieben, um das RDBMS bei der Abfrage durch viele Analysten zu entlasten. ETL-Prozesse, die heute oft auch als Datenaufbereitung bezeichnet werden, können ein wichtiger Teil dieses Prozesses sein, um die Daten zu verbessern und ein Datenmodell zu erstellen, das sich besser für Abfragen und Analysen eignet.
In diesem Szenario ist Trino ein wichtiger Teil einer Gesamtlösung für das Datenmanagement, und die Unterstützung für die fehlertolerante Ausführung von Abfragen mit modernen Data Lakehouses macht Trino zu einer ausgezeichneten Wahl für solche Anwendungsfälle.
Bessere Einblicke durch schnellere Reaktionszeiten
Wenn du komplexe Fragen stellst und große Datensätze verwendest, stößt du immer an Grenzen. Es könnte sich als zu teuer erweisen, die Daten zu kopieren, sie in dein Data Warehouse zu laden und dort zu analysieren. Die Berechnungen erfordern zu viel Rechenleistung, um sie überhaupt durchführen zu können, oder es dauert mehrere Tage, bis du eine Antwort erhältst.
Trino vermeidet von vornherein das Kopieren von Daten. Parallele Verarbeitung und starke Optimierungen führen regelmäßig zu Leistungsverbesserungen bei deiner Analyse mit Trino.
Wenn eine Abfrage, die früher drei Tage gedauert hat, jetzt in 15 Minuten ausgeführt werden kann, lohnt es sich vielleicht doch, sie durchzuführen. Und das Wissen, das du aus den Ergebnissen gewinnst, gibt dir einen Vorteil und die Möglichkeit, noch mehr Abfragen durchzuführen.
Diese schnelleren Verarbeitungszeiten von Trino ermöglichen bessere Analysen und Ergebnisse.
Big Data, maschinelles Lernen und künstliche Intelligenz
Die Tatsache, dass Trino immer mehr Daten für Standardwerkzeuge wie SQL zugänglich macht und die Abfragen auf riesige Datensätze skaliert, macht es zu einem erstklassigen Werkzeug für die Verarbeitung von Big Data. Dazu gehören oft statistische Analysen und eine zunehmende Komplexität in Richtung maschinelles Lernen und künstliche Intelligenz. Mit der Unterstützung von R und anderen Tools kann Trino in diesen Anwendungsfällen eine wichtige Rolle spielen.
Andere Anwendungsfälle
In den vorangegangenen Abschnitten haben wir einen Überblick über die Anwendungsfälle von Trino gegeben. Es entstehen regelmäßig neue Anwendungsfälle und Kombinationen.
In Kapitel 13 erfährst du Einzelheiten über die Nutzung von Trino durch einige bekannte Unternehmen und Organisationen. Wir stellen diese Informationen gegen Ende des Buches vor, damit du dir erst einmal das Wissen aneignen kannst, das du zum Verständnis der vorliegenden Daten benötigst, indem du die folgenden Kapitel liest.
Trino Ressourcen
Neben diesem Buch gibt es viele weitere Ressourcen, mit denen du dein Wissen über Trino erweitern kannst. In diesem Abschnitt zählen wir die wichtigsten Anlaufstellen auf. Die meisten von ihnen enthalten eine Menge Informationen und verweisen auf weitere Ressourcen.
Website
Die Trino Software Foundation verwaltet die Community des Open-Source-Projekts Trino und pflegt die Projektwebsite. Die Startseite siehst du in Abbildung 1-5. Auf der Website findest du die Dokumentation, Kontaktdaten, Blogbeiträge der Community mit den neuesten Nachrichten und Veranstaltungen, Episoden des Trino Community Broadcast im Audio- und Videoformat und andere Informationen unter https://trino.io.
Dokumentation
Die ausführliche Dokumentation für Trino wird als Teil der Codebasis gepflegt und ist auf der Website verfügbar. Sie enthält sowohl allgemeine Übersichten als auch detaillierte Referenzinformationen über die SQL-Unterstützung, Funktionen und Operatoren, Konnektoren, Konfiguration und vieles mehr. Dort findest du auch Versionshinweise mit Details zu den letzten Änderungen. Beginne unterhttps://trino.io/docs.
Community Chat
Die Community aus Anfängern, Fortgeschrittenen und Experten sowie die Mitwirkenden und Betreuer von Trino sind sehr hilfsbereit und arbeiten jeden Tag aktiv im Community-Chat aufhttps://trinodb.slack.com zusammen.
Tritt dem Ankündigungskanal bei und sieh dir dann die zahlreichen Kanäle an, die sich auf verschiedene Themen konzentrieren, wie z.B. Hilfe für Anfänger, Fehlersuche, Veröffentlichungen, Entwicklung und spezifischere Kanäle, um über Kubernetes oder bestimmte Anschlüsse zu diskutieren.
Hinweis
Du kannst Matt, Manfred und Martin fast jeden Tag im Community-Chat finden, und wir würden uns freuen, von dir zu hören.
Quellcode, Lizenz und Version
Trino ist ein Open-Source-Projekt, das unter der Apache License, v2 verbreitet wird. Der Quellcode wird im Git-Repository unterhttps://github.com/trinodb/trino verwaltet und ist dort verfügbar.
Die Organisation trinodb
unterhttps://github.com/trinodb enthält zahlreiche weitere Repositories, die mit dem Projekt in Verbindung stehen, wie z.B. den Quellcode der Website, Clients, andere Komponenten oder das Repository für die Lizenzverwaltung der Mitwirkenden.
Trino ist ein aktives Open-Source-Projekt mit häufigen Veröffentlichungen. Wenn du die aktuellste Version verwendest, kannst du von den neuesten Funktionen, Fehlerbehebungen und Leistungsverbesserungen profitieren. Dieses Buch bezieht sich auf die zum Zeitpunkt der Erstellung aktuelle Trino-Version 392 und verwendet diese auch. Wenn du eine andere, neuere Version von Trino verwendest, sollte sie genauso funktionieren wie in diesem Buch beschrieben. Auch wenn es unwahrscheinlich ist, dass du auf Probleme stößt, ist es wichtig, dass du dich in den Versionshinweisen und der Dokumentation über alle Änderungen informierst.
Beitragender
Wie wir bereits erwähnt haben, ist Trino ein Community-getriebenes Open-Source-Projekt, und deine Beiträge sind willkommen und werden gefördert. Das Projekt ist im Community-Chat sehr aktiv, und die Committer und andere Entwickler können dir dort helfen.
Hier sind ein paar Aufgaben, mit denen du anfangen kannst, deinen Beitrag zu leisten:
-
Sieh dir den Abschnitt Developer Guide in der Dokumentation an.
-
Lerne, das Projekt aus dem Quellcode zu bauen, mit Anweisungen in der README-Datei.
-
Lies die Forschungsberichte, die auf der Community-Seite der Website verlinkt sind.
-
Lies den Verhaltenskodex auf der gleichen Seite.
-
Finde eine Ausgabe mit dem Label gute erste Ausgabe.
-
Unterschreibe die Lizenzvereinbarung für Beitragszahler (CLA).
Das Projekt erhält weiterhin Beiträge mit einer großen Bandbreite an Komplexität - von kleinen Verbesserungen der Dokumentation über neue Anschlüsse oder andere Plug-ins bis hin zu Verbesserungen tief im Inneren von Trino.
Natürlich ist jede Arbeit, die du mit und um Trino herum machst, in der Community willkommen. Das schließt natürlich auch scheinbar nicht verwandte Arbeiten ein, wie das Schreiben von Blogbeiträgen, Vorträge auf Benutzergruppentreffen oder Konferenzen oder das Schreiben und Verwalten eines eigenen Plug-ins, vielleicht für ein von dir verwendetes Datenbanksystem.
Insgesamt ermutigen wir dich, mit dem Team zusammenzuarbeiten und dich einzubringen. Das Projekt wächst und gedeiht mit den Beiträgen von allen. Wir sind bereit zu helfen. Du kannst es schaffen!
Buch Repository
In einem Git-Repository stellen wir dir Ressourcen zu diesem Buch zur Verfügung, z. B. Beispiele für Konfigurationsdateien, SQL-Abfragen, Datensätze und mehr.
Du findest es unter https://github.com/trinodb/trino-the-definitive-guide und kannst den Inhalt als Archivdatei herunterladen oder das Repository mit git
klonen.
Wenn du auf Probleme stößt, kannst du gerne einen Pull Request für Korrekturen, gewünschte Ergänzungen oder Dateiprobleme erstellen.
Iris Datensatz
In späteren Abschnitten dieses Buches wirst du auf Beispielabfragen und Anwendungsfälle stoßen, in denen es umIrisblumen und den Iris-Datensatz geht. Der Grund ist ein berühmter Datensatz, der häufig in datenwissenschaftlichen Klassifizierungsbeispielen verwendet wird und in dem sich alles um Irisblumen dreht.
Der Datensatz besteht aus einer einfachen Tabelle mit 150 Datensätzen und Spalten mit Werten für Kelchblattlänge, Kelchblattbreite, Blütenblattlänge, Blütenblattbreite und Art.
Die geringe Größe ermöglicht es den Nutzern, Abfragen einfach zu testen und auszuführen und eine Vielzahl von Analysen durchzuführen. Dadurch eignet sich der Datensatz zum Lernen, auch für die Verwendung mit Trino. Mehr über den Datensatz erfährst duauf der Wikipedia-Seite dazu.
Unser Buch-Repository enthält das Verzeichnis iris-data-set mit den Daten im CSV-Format (comma-separated values) sowie eine SQL-Datei, um eine Tabelle zu erstellen und sie einzufügen. Nachdem duKapitel 2 und "Trino Command-Line Interface" gelesen hast , sind die folgenden Anweisungen leicht zu befolgen.
Du kannst den Datensatz verwenden, indem du zunächst die Datei etc/catalog/brain.propertiesan denselben Ort wie deine Trino-Installation kopierst und Trino neu startest.
Jetzt kannst du das Trino CLI verwenden, um den Datensatz in die Tabelle iris
im Schemadefault
des Katalogs brain
zu übertragen:
$ trino -f iris-data-set/iris-data-set.sql
USE
CREATE TABLE
INSERT: 150
rows
Bestätige, dass die Daten abgefragt werden können:
$ 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"
...
Alternativ kannst du die Abfragen in einem beliebigen SQL-Verwaltungstool ausführen, das mit Trino verbunden ist, zum Beispiel mit dem Java Database Connectivity (JDBC)-Treiber, der unter "Trino JDBC-Treiber" beschrieben wird .
Spätere Abschnitte enthalten Beispielabfragen, die mit diesem Datensatz ausgeführt werden können (Kapitel 8 und9), sowie Informationen über den Memory Connector, der im brain
Katalog verwendet wird (Kapitel "Memory Connector").
Flugdatensatz
Ähnlich wie der Iris-Datensatz wird auch der Flugdatensatz später in diesem Buch für Beispielabfragen und -verwendung verwendet. Der Datensatz ist etwas komplexer als der Iris-Datensatz und besteht aus Nachschlagetabellen für Fluggesellschaften, Flughäfen und anderen Informationen sowie aus Transaktionsdaten über bestimmte Flüge. Dadurch eignet sich der Datensatz für komplexere Abfragen mit Joins und für die Verwendung in föderierten Abfragen, bei denen sich verschiedene Tabellen in unterschiedlichen Datenquellen befinden.
Die Daten werden von der Federal Aviation Administration (FAA) gesammelt und für die Analyse kuratiert. Das Tabellenschema von flights
ist ziemlich umfangreich. Eine Teilmenge der verfügbaren Spalten ist in Tabelle 1-1 dargestellt.
Flugdatum |
airlineid |
Herkunft |
dest |
Ankunftszeit |
deptime |
Jede Zeile im Datensatz steht entweder für einen Abflug oder eine Ankunft eines Fluges an einem Flughafen in den Vereinigten Staaten.
Das Book Repository - siehe "Book Repository" - enthälteinen separaten Ordner,flight-data-set. Er enthält Anweisungen, wie du die Daten in verschiedene Datenbanksysteme importierst, damit du sie mit Trino verbinden und die Beispielabfragen ausführen kannst.
Eine kurze Geschichte von Trino
Im Jahr 2008 machte Facebook Hive (später Apache Hive) zum Open Source. Hive wurde innerhalb von Facebook für die Analyse von Daten im HDFS auf dem sehr großen Apache Hadoop-Cluster eingesetzt.
Datenanalysten bei Facebook nutzten Hive, um interaktive Abfragen in ihrem großen Data Warehouse durchzuführen. Bevor es Presto bei Facebook gab, basierte die gesamte Datenanalyse auf Hive, das für interaktive Abfragen in der Größenordnung von Facebook nicht geeignet war. Im Jahr 2012 war das Hive Data Warehouse 250 Petabyte groß und musste Hunderte von Nutzern bewältigen, die jeden Tag Zehntausende von Abfragen stellten. Hive begann, innerhalb von Facebook an seine Grenzen zu stoßen und bot keine Möglichkeit, andere Datenquellen innerhalb von Facebook abzufragen.
Presto wurde von Grund auf so konzipiert, dass es schnelle Abfragen im Facebook-Maßstab ausführen kann. Anstatt ein neues System zu erstellen, in das die Daten verschoben werden, wurde Presto so konzipiert, dass es die Daten dort liest, wo sie gespeichert sind, und zwar über sein steckbares Konnektorsystem. Einer der ersten Konnektoren, die für Presto entwickelt wurden, war der Hive-Konnektor; siehe"Hive-Konnektor für verteilte Speicherdatenquellen". Dieser Konnektor fragt Daten, die in einem Hive Data Warehouse gespeichert sind, direkt ab.
Im Jahr 2012 begannen vier Facebook-Ingenieure mit der Entwicklung von Presto, um die Anforderungen an Leistung, Skalierbarkeit und Erweiterbarkeit der Analysefunktionen bei Facebook zu erfüllen. Von Anfang an bestand die Absicht, Presto als Open-Source-Projekt aufzubauen. Anfang 2013 wurde die erste Version von Presto bei Facebook in Betrieb genommen. Im Herbst 2013 wurde Presto offiziell als Open Source angeboten. Angesichts des Erfolgs von Facebook begannen auch andere große Webunternehmen, Presto zu übernehmen, darunter Netflix, LinkedIn, Treasure Data und andere. Viele Unternehmen folgten.
Im Jahr 2015 kündigte Teradata an, dass 20 Ingenieure an Presto mitarbeiten werden, um Unternehmensfunktionen wie Sicherheitsverbesserungen und die Integration von Ökosystem-Tools hinzuzufügen. Später im Jahr 2015 fügte Amazon Presto zu seinem AWS Elastic MapReduce (EMR) Angebot hinzu. 2016 kündigte Amazon Athena an, bei dem Presto eine wichtige Rolle spielt. Und 2017 wurde Starburst gegründet, ein Unternehmen, das den Erfolg von Presto überall vorantreiben soll.
Ende 2018 verließen die ursprünglichen Schöpfer Facebook und gründeten die Presto Software Foundation, um sicherzustellen, dass das Projekt gemeinschaftlich und unabhängig bleibt. Das Projekt wurde unter dem NamenPrestoSQL bekannt. Die gesamte Gemeinschaft der Mitwirkenden und Nutzer zog mit den Gründern und Betreuern des Projekts in die PrestoSQL-Codebasis um. Seitdem haben sich die Innovation und das Wachstum des Projekts noch weiter beschleunigt.
Ende 2020 wurde ein weiterer Meilenstein des Projekts erreicht. Um die Verwirrung zwischen PrestoSQL, dem alten PrestoDB-Projekt, und anderen Versionen zu verringern, beschloss die Gemeinschaft, das Projekt umzubenennen. Nach langer Suche nach einem geeigneten Namen wurde Trino gewählt. Der Code, die Website und alles, was mit dem Projekt zu tun hat, wurde aufTrino umgestellt. Die Stiftung wurde in Trino Software Foundation umbenannt. Die letzte Version unter dem PrestoSQL-Banner war 350. Die Versionen 351 und später verwenden Trino. Die Gemeinschaft begrüßte und feierte den Wechsel, zog mit dem Projekt um und wählte einen Namen für das neue Maskottchen, Commander Bun Bun.
Heute wächst und gedeiht die Trino-Gemeinschaft, und Trino wird weiterhin in großem Umfang von vielen bekannten Unternehmen eingesetzt. Die Kernentwickler und die breitere Gemeinschaft rund um Trino treiben ständig Innovationen voran: neue SQL-Unterstützung, aktualisierte Laufzeitnutzung von Java 17, modernisierter Code und Architektur zur Unterstützung von fehlertoleranter Ausführung und erhöhter Leistung sowie Integrationen mit Client-Tools für Berichts- und Datenplattformanforderungen. Das Projekt wird von einer florierenden Gemeinschaft von Entwicklern und Mitwirkenden aus vielen Unternehmen auf der ganzen Welt gepflegt, darunter Amazon, Bloomberg, Eventbrite, Gett, Google, Line, LinkedIn, Lyft, Netflix, Pinterest, Red Hat, Salesforce, Shopify, Starburst, Treasure Data, Zuora und die vielen Kunden dieser Nutzer.
Fazit
In diesem Kapitel haben wir dich mit Trino bekannt gemacht. Du hast mehr über einige seiner Funktionen erfahren und wir haben gemeinsam mögliche Anwendungsfälle erkundet.
In Kapitel 2 bringst du Trino zum Laufen, verbindest eine Datenquelle und siehst, wie du die Daten abfragen kannst.
Get Trino: Der endgültige Leitfaden, 2. Auflage 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.