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 は、任意のデータソース向けにカスタムコネクターを構築するために実装できる標準の サービスプロバイダーインターフェイス (SPI) を提供します。Trino には、データソースタイプ別にグループ化された複数の組み込みコネクターも同梱されています:
データレイクおよびレイクハウス: Hive およびその他の Hadoop 互換ソース
リレーショナルデータベース: MySQL、PostgreSQL、SQL Server
その他のシステム: Cassandra、Kafka、MongoDB、Redis、Redshift、およびローカルファイル
詳細情報
オープンソースの Trino ドキュメントを表示するには、URL https://trino.io/docs/3XX/ 内のバージョン番号を Trino のコンポーネントバージョンに置き換え、ブラウザーでリンクを開きます。
たとえば、Trino のバージョンが 331 の場合は、https://trino.io/docs/331/ を使用します。詳細については、「Trino 331 Documentation」をご参照ください。