Trino(旧称 PrestoSQL)は、インタラクティブな分析向けのオープンソース分散 SQL クエリエンジンです。E-MapReduce (EMR) バージョン 3.44.0 および 5.10.0 以降、EMR では公式コミュニティ名である Trino を採用しています。それ以前のバージョンではコンソール上に Presto と表示されていましたが、基盤となるエンジンはすでに Trino でした。
基本的な特徴
Trino は Java で開発され、パフォーマンス専有型のインタラクティブ分析を目的として設計されています。以下の機能をサポートします。
ANSI SQL の完全コンプライアンス。
-
コネクタ経由での幅広いデータソースへの対応。対応データソースは以下のとおりです。
Hive
Cassandra
Kafka
MongoDB
MySQL
PostgreSQL
SQL Server
Redis
Redshift
ローカルファイル
-
高度なデータ構造(以下を含む):
配列およびマップ
JSON データ
GIS データ
色データ
-
複数のメカニズムによる拡張性。具体的には以下のとおりです。
拡張データコネクタ
カスタムデータの型
カスタム SQL 関数
クエリ結果をリアルタイムでクライアントにストリームするパイプライン処理。
-
複数のインターフェイスによる監視機能。具体的には以下のとおりです。
クエリ実行の進捗状況を可視化する Web UI。
JMX プロトコル。
システムコンポーネント
次の図は、Trino のシステムコンポーネントを示しています。
Trino クラスターはコーディネーター/ワーカーノード アーキテクチャを採用しています。コーディネーターはクライアントからの SQL クエリを受け付け、解析および実行計画を作成したうえで、その結果に基づくタスクをワーカーノードに分散します。コーディネーターは以下の処理を担当します。
ユーザークエリの受信、解析、実行計画の生成、およびワーカーノードへのタスク分散。
ワーカーノードのステータス監視。各ワーカーノードはハートビート接続を維持し、自身のステータスをコーディネーターに報告します。
メタストアデータの管理。
ワーカーノードは分散タスクを実行します。ワーカーノードはコネクタを使用して外部ストレージシステムからデータを読み取り、処理したうえで結果をコーディネーターに返します。
ユースケース
Trino はオンライン分析処理 (OLAP) ワークロード — データ分析、大規模集約、レポート作成 — 向けに構築されています。以下の用途に適しています。
抽出・変換・ロード (ETL)
アドホッククエリ
大規模な構造化または半構造化データの分析
大規模多次元データの集約およびレポート分析
Trino は汎用リレーショナルデータベースではなく、MySQL や PostgreSQL のようなシステムを置き換えるものではありません。トランザクションのサポートは限定的であるため、オンライントランザクション処理 (OLTP) やその他のトランザクションワークロードには適していません。
メリット
E-MapReduce (EMR) 上の Trino は、オープンソース版 Trino と比較して以下の利点があります。
すぐに使用可能なクラスター。セットアップ不要で、数分以内に数百ノード規模の Trino クラスターを起動できます。
シンプルな弾力的スケーリング。
EMR ソフトウェアスタックとのシームレスな統合および Object Storage Service (OSS) に保存されたデータのサポート。
運用・保守 (O&M) 不要のフルマネージド操作。
用語
データモデル
Trino はデータを、カタログ、スキーマ、テーブルの 3 階層で整理します。
-
カタログ
カタログはコネクタを通じて外部データソースにマッピングされ、1 つ以上のスキーマを含みます。単一のクエリで複数のカタログをまたぐことができます。
-
スキーマ
スキーマはデータベースインスタンスに相当し、複数のテーブルを含みます。
-
テーブル
テーブルは標準的なリレーショナルデータベースと同様に機能します。
コネクタ
コネクタは、Trino を特定のデータソースに適合させるもので、データベースドライバーと似た役割を果たします。各カタログは 1 種類のコネクタタイプにバインドされ、その設定はカタログのプロパティファイルで行われます。
Trino は、任意のデータソース向けにカスタムコネクタを構築するために実装可能な標準的な Service Provider Interface (SPI) を提供しています。また、Trino には以下のデータソースタイプ別にグループ化された複数の組み込みコネクタも含まれています。
データレイクおよびレイクハウス:Hive およびその他の Hadoop 互換ソース
リレーショナルデータベース:MySQL、PostgreSQL、SQL Server
その他のシステム:Cassandra、Kafka、MongoDB、Redis、Redshift、およびローカルファイル
詳細情報
オープンソース版 Trino のドキュメントを参照するには、URL http://trino.io/docs/3XX/ のバージョン番号をご利用の Trino コンポーネントのバージョンに置き換え、ブラウザでリンクを開いてください。
たとえば、Trino のバージョンが 331 の場合は、https://trino.io/docs/331/ を使用します。詳細については、「Trino 331 Documentation」をご参照ください。