Trino (SQL クエリ エンジン)

Trinoは異なるデータソースに対してSQLを通じてアクセスを可能とするオープンソースの分散SQLクエリエンジンである。 HDFS、AWS S3、Google Cloud StorageやAzure Blob Storage 等のストレージ上に存在するHiveやIcebergテーブルフォーマット内のORCやParquetファイル等のアクセスに加えて、MySQL、PostgreSQL、Cassandra、Kafka、MongoDBやElasticsearchに対してリモートでクエリを実行する機能も備える。TrinoはApache Licenseの元に公開されている。

 歴史 
2019年1月に Prestoの作者である Martin Traverso、Dain SundstromおよびDavid PhillipsがオリジナルのPrestoDBのフォークとしてPrestoSQLプロジェクトを開始。 同時にPrestoの発展を目的としたNPO団体 Presto Software Foundationを発足。

2020年12月にPrestoSQLはTrinoへと名称が変更され、上記の団体はTrino Software Foundationへと変更され、コードベースやWebサイト等もリブランディングの一環として同様に変更された。

PrestoおよびTrinoは当時Facebookに勤めていたMartin、Dain、DavidおよびEric Hwangによって、Apache Hadoop上に存在する巨大なデータウェアハウスに対して分析者がインタラクティブにデータにアクセスできるように設計および開発が行われた。Trino の開発期間の最初の6年間はPrestoプロジェクトとして開発されていたと言える。 開発当初の経緯についてはthe Presto history sectionに記載されている。

 アーキテクチャ 
サムネイル|Trinoのコーディネーターおよびワーカーのアーキテクチャ
TrinoはJavaを用いて開発されている。 コーディネーターとワーカーという2種類のノードの種類が存在する。

 コーディネーターはクライアントから実行されたクエリをパース、アナライズ、オプティマイズおよびスケジューリングを行う。 サービスプロバイダインタフェース (SPI) に基づきテーブルや統計情報等のタスクに実行に必要な情報を取得する。

 ワーカーはスケジューラによって割り当てられたタスクやオペレーターを実行する。これらのタスクはデータソースから取得されたデータを処理し、コーディネーターへと渡され最終的にクライアントへと返却される。

TrinoはANSI SQL に準拠しており、SQL-92、SQL:1999、SQL:2003、SQL:2008、SQL:2011およびSQL:2016が対象に含まれている。

Trinoは計算処理とストレージを分離している。オンプレミスおよびクラウドコンピューティングのどちらでも使用可能。

Trinoは 分散コンピューティング MPPアーキテクチャを採用している。Trinoはアドホックもしくは事前にデータソース側で分割された単位によって処理を分割しワーカーに処理を分散させる。ワーカーが取得したデータは複数スレッド上でパイプライン処理が行われる。

 外部リンク 

 公式ウェブサイト

 脚注 

Category:Javaプラットフォーム
Category:クラウドプラットフォーム
Category:SQL