Trino (silnik zapytań SQL)

Z Wikipedii, wolnej encyklopedii
Trino
Logo Trino
Logo programu
Ilustracja
Trino UI Version 358
Autor Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang
Aktualna wersja stabilna 445
(17 kwietnia 2024) [±]
Język programowania Java
Platforma sprzętowa Cross-platform
Rodzaj Silnik zapytań SQL
Licencja Apache License 2.0
Strona internetowa

Trino jest otwartym rozproszonym silnikiem zapytań SQL zaprojektowanym pod kątem dużych zbiorów danych[1]. Przy pomocy Trino można wykonywać zapytania w oparciu o pliki przechowane w chmurowych systemach plików takich jak AWS S3, Google Cloud Storage, Azure Blob Storage czy HDFS. Trino wspiera wiele formatów plików, w tym kolumnowe takie jak Parquet czy ORC[2][3], jak również różne formaty tabel, w tym Hive[3], Iceberg[2] i Delta[4]. Inne źródła danych wspierane przez Trino to między innymi MySQL, PostgreSQL, Cassandra, Kafka, MongoDB czy ElasticSearch[5]. Pojedyncze zapytanie może pobierać dane z wielu tabel pochodzących z różnych systemów źródłowych. Trino jest dostępne na licencji Apache[6].

Historia[edytuj | edytuj kod]

W styczniu 2019 oryginalni autorzy Presto, Martin Traverso, Dain Sundstrom i David Phillips utworzyli fork projektu Presto. Początkowo nowo powstały projekt używał oryginalnej nazwy, Presto. Domena sieciowa korzystała z nazwy PrestoSQL dla odróżnienia od projektu źródłowego, który korzystał z nazwy PrestoDB. Równocześnie autorzy założyli fundację Presto Software Foundation. Fundacja jest organizacją not-for-profit, której celem jest wspieranie rozwoju otwartego silnika zapytań SQL Presto[7][8].

W grudniu 2020 PrestoSQL zmieniło nazwę na Trino. Jednocześnie fundacja zmieniła nazwę na Trino Software Foundation. Kod źródłowy i inne zasoby powiązane z projektem PrestoSQL również podlegały zmianie nazwy[9].

Presto i Trino były oryginalnie zaprojektowane i rozwijane przez Martina, Daina, Davida i Erica Hwanga w firmie Facebook. Technologia była tam używana przez analityków danych. Pozwalała na wykonywanie interaktywnych zapytań na dużej hurtowni danych bazującej na projekcie Apache Hadoop. Trino bazuje na pierwszych sześciu latach rozwijania systemu Presto[10][11]. Możesz dowiedzieć się więcej o wczesnej historii Trino kierując się do anglojęzycznego artykułu poświęconego historii Presto.

Architektura[edytuj | edytuj kod]

Architektura Trino[12]

Trino jest napisane w języku programowania Java[13].

Trino ma rozproszoną architekturę i realizuje obliczenia z wykorzystaniem MPP[12]. Trino rozprasza pracę pomiędzy wiele węzłów obliczeniowych, które partycjonują przetwarzane dane lub polegają na już istniejących schematach partycjonowania, narzuconych przez źródło danych. Po tym jak dane zostaną pobrane przez węzeł obliczeniowych są przetwarzane strumieniowo, w wielu wątkach, przez sekwencje operatorów[12].

W Trino są dwa typy węzłów obliczeniowych: koordynator i worker[13].

  • Koordynator jest odpowiedzialny za przyjęcie zapytanie od klienta, sparsowanie treści zapytania, analizę semantyczną, planowanie, i sterowanie wykonaniem obliczenia. Koordynator pobiera listę dostępnych tabel, metadane tabel, statystyki danych i inne niezbędne informacje korzystając z interfejsów SPI (interfejs dostawcy usług). Implementacje interfejsów SPI są dostarczane przez konektory dedykowane różnym źródłom danych.
  • Workery są odpowiedzialne za wykonie zadań obliczeniowych zleconych przez koordynatora. Zadania przetwarzają dane pobrane z zewnętrznych źródeł danych (dostęp do danych także wykorzystuje interfejsy SPI). Wyniki obliczeń są pobierane przez koordynatora, i docelowo dostarczane do klienta, który zlecił zapytanie.

Trino jest zgodne ze standardami ANSI SQL[14]. Realizuje podzbiór następujących specyfikacji ANSI: SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011, SQL:2016.

Trino wspiera separacje obliczeń i danych i może być uruchamiane zarówno w prywatnych centrach danych jak i w publicznych chmurach obliczeniowych.

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. Overview — Trino 407 Documentation [online], trino.io [dostęp 2023-02-25].
  2. a b Iceberg connector — Trino 408 Documentation [online], trino.io [dostęp 2023-02-25].
  3. a b Hive connector — Trino 408 Documentation [online], trino.io [dostęp 2023-02-25].
  4. Delta Lake connector — Trino 408 Documentation [online], trino.io [dostęp 2023-02-25].
  5. Connectors — Trino 408 Documentation [online], trino.io [dostęp 2023-02-25].
  6. trinodb/trino, Trino, 25 lutego 2023 [dostęp 2023-02-25].
  7. Susan Hall, Presto's New Foundation Signals Growth for the Big Data SQL Engine [online], The New Stack, 31 stycznia 2019 [dostęp 2023-02-25] (ang.).
  8. Presto Software Foundation Launches to Advance Presto Open Source Community [online], PRWeb [dostęp 2023-02-25].
  9. Martin Traverso, Dain Sundstrom, David Phillips, We’re rebranding PrestoSQL as Trino [online], trino.io, 27 grudnia 2020 [dostęp 2023-02-25] (ang.).
  10. Contributors to prestodb/presto [online], GitHub [dostęp 2023-02-25] (ang.).
  11. Contributors to trinodb/trino [online], GitHub [dostęp 2023-02-25] (ang.).
  12. a b c Chapter 4. Trino Architecture, [w:] Matt Fuller, Manfred Moser, Martin Traverso, Trino: The Definitive Guide, O'Reilly Media, Inc, USA, 2021, s. 43-72, ISBN 9781098107710.
  13. a b MATT. MOSER, MANFRED. TRAVERSO, MARTIN FULLER, TRINO the definitive guide., [S.l.]: O'REILLY MEDIA, INC, USA, 2021, ISBN 978-1-0981-0768-0, OCLC 1246625327 [dostęp 2023-02-25].
  14. Chapter 1. Introducing Trino, [w:] Matt Fuller, Manfred Moser, Martin Traverso, Trino: The Definitive Guide, O'Reilly Media, Inc, USA, 2021, s. 3-17, ISBN 9781098107710.

Linki zewnętrzne[edytuj | edytuj kod]