Trino は異なるデータソースに対してSQLを通じてアクセスを可能とするオープンソースの分散SQL クエリエンジンである。[ 1] HDFS 、AWS S3 、Google Cloud StorageやAzure Blob Storage 等のストレージ上に存在するHive [ 2] やIceberg [ 3] テーブルフォーマット内のORCやParquetファイル等のアクセスに加えて、MySQL 、PostgreSQL 、Cassandra 、Kafka 、MongoDB やElasticsearch [ 4] に対してリモートでクエリを実行する機能も備える。TrinoはApache License [ 5] の元に公開されている。
歴史
2019年1月に Prestoの作者である Martin Traverso、Dain SundstromおよびDavid PhillipsがオリジナルのPrestoDBのフォーク としてPrestoSQLプロジェクトを開始。 同時にPrestoの発展を目的としたNPO団体 Presto Software Foundationを発足。[ 6] [ 7]
2020年12月にPrestoSQLはTrinoへと名称が変更され、上記の団体はTrino Software Foundationへと変更され、コードベースやWebサイト等もリブランディングの一環として同様に変更された。[ 8]
PrestoおよびTrinoは当時Facebook に勤めていたMartin、Dain、DavidおよびEric Hwangによって、Apache Hadoop 上に存在する巨大なデータウェアハウス に対して分析者がインタラクティブにデータにアクセスできるように設計および開発が行われた。Trino の開発期間の最初の6年間はPrestoプロジェクトとして開発されていたと言える。[ 9] [ 10] 開発当初の経緯についてはthe Presto history section に記載されている。
アーキテクチャ
Trinoのコーディネーターおよびワーカーのアーキテクチャ[ 11]
TrinoはJava [ 12] を用いて開発されている。 コーディネーター とワーカー という2種類のノードの種類が存在する[ 11] 。
コーディネーターはクライアントから実行されたクエリをパース、アナライズ、オプティマイズおよびスケジューリングを行う。 サービスプロバイダインタフェース (SPI) に基づきテーブルや統計情報等のタスクに実行に必要な情報を取得する[ 11] 。
ワーカーはスケジューラによって割り当てられたタスクやオペレーターを実行する。これらのタスクはデータソースから取得されたデータを処理し、コーディネーターへと渡され最終的にクライアントへと返却される[ 11] 。
TrinoはANSI SQL [ 13] に準拠しており、SQL-92、SQL:1999、SQL:2003、SQL:2008、SQL:2011およびSQL:2016が対象に含まれている。
Trinoは計算処理とストレージを分離している[ 13] 。オンプレミスおよびクラウドコンピューティング [ 14] のどちらでも使用可能。
Trinoは 分散コンピューティング MPP アーキテクチャを採用している[ 11] 。Trinoはアドホックもしくは事前にデータソース側で分割された単位によって処理を分割しワーカーに処理を分散させる。ワーカーが取得したデータは複数スレッド上でパイプライン処理が行われる[ 11] 。
外部リンク
脚注
^ “Overview — Trino current Documentation ”. trino.io . 2023年2月24日閲覧。
^ “Hive connector — Trino current Documentation ”. trino.io . 2023年2月24日閲覧。
^ “Iceberg connector — Trino current Documentation ”. trino.io . 2023年2月24日閲覧。
^ “Connectors — Trino current Documentation ”. trino.io . 2023年2月24日閲覧。
^ “trinodb/trino LICENSE ”. Trino (2022年8月25日). 2022年8月25日閲覧。
^ “Presto Software Foundation Launches to Advance Presto Open Source Community ”. PRWeb . 2019年2月1日閲覧。
^ “Presto's New Foundation Signals Growth for the Big Data SQL Engine ” (英語). The New Stack (2019年1月31日). 2019年2月1日閲覧。
^ Traverso (2020年12月27日). “We’re rebranding PrestoSQL as Trino ” (英語). trino.io . 2021年9月7日閲覧。
^ “Contributors to trinodb/trino ” (英語). GitHub . 2021年9月20日閲覧。
^ “Contributors to prestodb/presto ” (英語). GitHub . 2021年9月20日閲覧。
^ a b c d e f Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). “Chapter 4. Trino Architecture”. Trino: The Definitive Guide . O'Reilly Media, Inc, USA. pp. 43-72. ISBN 9781098107710
^ Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). “Chapter 2. Installing and Configuring Trino”. Trino: The Definitive Guide . O'Reilly Media, Inc, USA. pp. 19-24. ISBN 9781098107710
^ a b Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). “Chapter 1. Introducing Trino”. Trino: The Definitive Guide . O'Reilly Media, Inc, USA. pp. 3-17. ISBN 9781098107710
^ Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). “Chapter 13. Real-World Examples”. Trino: The Definitive Guide . O'Reilly Media, Inc, USA. pp. 267-272. ISBN 9781098107710