PrestoSQL ist jetzt Trino Trino – SQL-Abfrage-Engine für Big-Data-Analysen

Von Thomas Joos |

Die bisher als PrestoSQL bekannte SQL-Abfrage-Engine trägt jetzt den Namen Trino. Aktuell nutzen Unternehmen wie LinkedIn, Netflix, Slack, Comcast, Nordstrom und viele andere die Möglichkeiten von Trino.

Anbieter zum Thema

Der Schwerpunkt von Trino – vormals PrestoSQL – liegt darin, Daten aus einer Vielzahl von Systemen abzufragen, um Big-Data-Analysen durchzuführen.
Der Schwerpunkt von Trino – vormals PrestoSQL – liegt darin, Daten aus einer Vielzahl von Systemen abzufragen, um Big-Data-Analysen durchzuführen.
(Bild: Trino.io)

Trino ist der neue Name des Projektes, das bisher unter der Bezeichnung PrestoSQL bekannt war. Vor dem Einsatz von Trino müssen sich Anwender darüber im Klaren sein, für welche Einsatzgebiete das Tool geeignet ist und welche Szenarien nicht ideal für den Einsatz von Trino sind. Seinen Schwerpunkt hat Trino in der Verarbeitung von Daten in Umgebungen mit großen Datenmengen.

Spezialisiert ist Trino vor allem für die Aggregation großer Datenmengen und beim Erstellen von Berichten. Ideal ist der Einsatz also in Data-Warehousing-Umgebungen und in der Analytik. Hier unterstützt Trino auch Online Analytical Processing (OLAP).

Trino ist eine Abfrage-SQL-Engine, keine relationale Datenbank

Mit Trino lassen sich Daten abfragen und Trino versteht auch SQL. Allerdings handelt es sich bei Trino nicht um eine relationale Datenbank, in der sich Daten speichern lassen. Das verwechseln viele Analytiker. Es ist daher nicht möglich und auch nicht sinnvoll, Trino als Ersatz für MySQL, PostgreSQL oder Oracle zu verwenden. Es gibt keine Möglichkeit Online-Transaktionen über OLTP abzuwickeln. Trino ist keine Datenbank!

Trino ermöglich optimale Abfragen für Big-Data-Analysen

Der Schwerpunkt von Trino liegt darin, Daten aus einer Vielzahl von Systemen abzufragen, um Big-Data-Analysen durchzuführen. Dabei kann Trino nicht nur einfache SQL-Abfragen durchführen, sondern auch mit großen Datenmengen umgehen. Kommen Tools zum Einsatz, die Hadoop und HDFS nutzen, kann Trino als Alternative zum Einsatz kommen. Dazu nutzt das Tool Pipelines aus MapReduce-Aufträgen. Auch mit Hive und Pig kann Trino zusammenarbeiten. Es ist mit dem Tool also kein Problem, HDFS-Daten zu lesen.

Zusätzlich kann Trino auch mit anderen Datenquellen arbeiten. Dazu gehören auch relationale Datenbanken. SQL stellt für Trino kein Problem dar. Auch Daten aus Systemen wie Cassandras lassen sich mit Trino auslesen. In vielen Szenarien kommen verschiedene Datenquellen zum Einsatz, die Trino parallel nutzt.

Die Architektur von Trino
Die Architektur von Trino
(Bild: Trino.io)

Das sind die Komponenten von Trino: Koordinatoren und Worker

Trino besteht aus zwei Komponenten. Koordinatoren parsen die Anweisungen, planen die Abfragen und koordinieren die Worker-Knoten. Bei den Worker-Knoten handelt es sich um die zweite Komponente von Trino. Koordinatoren sind die Zentrale einer Trino-Umgebung. Mit diesem Server verbinden sich auch die Clients, um Abfragen durchzuführen.

Generell besteht eine Trino-Infrastruktur mindestens aus Koordinatoren und Worker-Knoten. Es gibt daher beim Einsatz von Trino mindestens zwei Server. Für Test- und Entwicklungsumgebungen ist es natürlich auch möglich, dass ein Knoten beide Rollen übernimmt.

Bei Abfragen erstellt der Koordinator ein Modell der Abfrage. Auf dieser Basis entstehen verschiedene Tasks, die der Koordinator an die Worker Nodes im Cluster verteilt. Die Aufgaben werden anschließend vom Koordinator überwacht. Die Verbindung zwischen Koordinator und Worker sowie zwischen Koordinator und Clients laufen über eine Rest-API.

Die eigentlichen Aufgaben zur Verarbeitung von Daten übernehmen die Worker Nodes, koordiniert durch den Koordinator. Die Worker Nodes nutzen wiederum Connectoren, um Daten von den Datenquellen zu beziehen. Auch die Worker kommunizieren und setzen dabei auf die Rest-API, die auch für die Kommunikation mit dem Koordinator genutzt wird und zwischen Koordinator und Clients.

Datenquellen und Connectoren bei Trino

Die eigentlichen Daten, die Trino verarbeitet, sind nicht innerhalb von Trino gespeichert. Dazu werden über Connectoren die verschiedenen Datenquellen angebunden. Dabei handelt es sich um Treiber, die es Trino ermöglichen, auf die Daten eines Systems außerhalb der Trino-Installation zuzugreifen. Die Worker Nodes holen sich die Daten von den Datenquellen über diese Connectoren.

Connectoren verbinden daher Trino mit den verschiedenen Datenquellen. Dabei kann es sich um Hive handeln, aber auch um SQL-Datenbanken. Es gibt in Trino bereits verschiedene Connectoren, die das System für die Kommunikation mit den Datenquellen nutzen kann, ohne Erweiterungen zu installieren. Dazu kommen Connectoren von externen Entwicklern, mit denen sich Trino an eine Vielzahl an Datenquellen anbinden lässt.

Kataloge, Connectoren und Datenquellen

Kataloge unterscheiden zwischen den Datenquellen. Wenn zum Beispiel zwei Hive-Cluster an Trino angebunden sind, können zwei Daten-Kataloge für die beiden Hive-Systeme dazu genutzt werden, über einen gemeinsamen Hive-Connector mit Trino zu kommunizieren.

Jeder Katalog nutzt ein bestimmtes Schema und einen bestimmten Connector für die Kommunikation mit einer Datenquelle. Dabei können sich mehrere Kataloge natürlich auch einen Connector teilen. SQL-Anweisungen in Trino nutzen Kataloge. Die Kataloge nutzen wiederum die Connectoren zur Kommunikation mit den Datenquellen. Dabei kann eine SQL-Abfrage auch mehrere Kataloge nutzen.

Tabellen und Schemas organisieren

Schemas sind in der Trino-Umgebung dafür da, die Tabellen zu organisieren. Über einen Katalog und ein Schema werden Tabellen an Trino angebunden. Diese Tabellen lassen sich wiederum mit Trino abfragen. Tabellen sind eine Menge von Zeilen, die mit Spalten und Typen organisiert sind. Tabellen stellen in Trino generell also die gleiche Funktion dar, wie in relationalen Datenbanken. Auch hier spielen die Connectoren eine maßgebliche Rolle.

Trino testen und installieren

Für den Einsatz von Trino ist ein Linux-System mit 64-Bit notwendig. Für Test- und Entwicklungsumgebungen kann auch der Einsatz des Windows-Subsystem für Linux sinnvoll sein. Setzen Entwickler hier auch noch auf Windows 11 Pro oder Enterprise, lassen sich auch grafische Oberflächen auf dem Linux-System nutzen und parallel zu Windows-Programmen einsetzen.

Die Entwickler empfehlen das Anpassen von Grenzwerten in der Datei "/etc/security/limits.conf". Für den Betrieb von Trino wird noch die Java Runtime Environment benötigt. Aktuell empfehlen hier die Entwickler, auf die Version 11.0.11 zu setzen, nicht auf neuere Editionen. Diese funktionieren generell zwar auch, sind aber noch nicht getestet. Empfohlen wird der Einsatz von Azul Zulu.

Für den Betrieb von Trino wird idealerweise auch auf den Container-Betrieb gesetzt. Der Download kann mit dem folgenden Befehl erfolgen:

docker pull trinodb/trino

Sobald das Image zur Verfügung steht, kann die Umgebung mit dem folgenden Befehl gestartet werden. Das ermöglicht auch den Betrieb in einer Entwicklungs- und Testumgebung:

docker run -p 8080:8080 --name trino trinodb/trino

Um die Trino CLI zu nutzen kann anschließend der folgende Befehl genutzt werden:

docker exec -it trino

Beispiel:

docker exec -it trino --catalog tpch --schema sf1

Wer die Umgebung ohne Container-Unterstützung installieren will, kann Trino auch direkt installieren. Die Anweisungen dazu sind auf der Deployment-Seite des Projektes zu finden.

(ID:47969014)