summary:
データを一元的に移動・変換することなく,複数のデータストアを仮想的に統合し,単一の論理ビューとして扱える点において,Trinoはデータ仮想化の中核的技術の一つと位置づけられる.ANSI SQLに準拠したクエリ言語を用いて,ユーザーはストレージやフォーマットの差異を意識せずに,統合されたクエリ処理を実行できる.Trinoの設計思想は,ETLによる事前のバッチ処理ではなく,オンザフライでの即時クエリ実行にあり,したがってデータウェアハウスのみならず,データレイクやNoSQLデータストア,クラウドオブジェクトストレージといった多様なソースを対象とする,高速なクエリ処理プラットフォームである.
Trinoは元々,Facebook[現Meta]によって2012年頃に開発されたPrestoというプロジェクトに端を発する.当時,従来のMapReduce型の処理が低遅延クエリに不向きであったため,HiveやHadoopの上にリアルタイムかつインタラクティブなSQLクエリ実行を可能とする分散エンジンとしてPrestoが開発された.2018年末には,Prestoの主要開発者らがFacebookを離れ,Prestoのオープンガバナンスと技術の方向性をめぐる対立を背景として,2019年初めにPrestoSQLという名のフォークを立ち上げた.2020年12月には,このフォークが正式にTrinoへと改称され,現在ではこちらが事実上の本流として広く採用されている.改称の主な理由はFacebookがPrestoの商標を所有していたことによる法的問題を回避するためである.Metaが保有するPrestoDBとは別に,Trino Software Foundation[以前はPresto Software Foundation]が独立して開発・保守を行っている.
Trinoはクエリエンジンとして,Coordinatorと複数のWorkerから構成されるマスター・ワーカー型のアーキテクチャを採用している.Coordinatorはクエリの解析・オプティマイズ・実行計画の生成を担い,Workerノード群は実際のデータアクセスおよび演算処理を担当する.処理は全て分散かつパイプライン化され,各Workerはデータソースからブロック単位でデータを取得し,実行計画に従ってフィルタリング・結合・集計などの処理を逐次的に行う.
Trinoはデータを所有しないクエリエンジンであり,全てのデータは外部のデータソースに保管され,Trinoはこれに対してコネクタを介してアクセスする.コネクタは,MySQL,PostgreSQL,SQL Server,OracleなどのRDBMS,Hadoop,Apache Kafka,Elasticsearch,Amazon S3,Google Cloud Storage,Azure Blob Storage,MongoDB,Cassandraなど100以上のバックエンドに対応しており,ユーザーはこれらをまたがってJOINやCTE[Common Table Expression]を駆使した複雑なクエリを実行可能である.
TrinoはJavaで記述されており,JDBC/ODECドライバーおよびRESTベースのクライアントインタフェースを提供する.クエリの最適化にはリレーショナル代数に基づくルールベースのプランナーと,統計情報を活用したコストベースのプランナーが用いられている.コストベースの最適化器[CBO]は複雑な結合操作や大規模なデータセットに対して特に効果を発揮する.また,Apache Arrowとの統合によるベクトル化実行や,ページベースのメモリ管理,動的フィルタリング,高速なスキャンおよび投機的スケジューリングといった性能面の工夫も数多く実装されている.
メモリ管理においては,TrinoはJavaのヒープメモリ外で直接メモリを管理する手法を採用しており,JVMのガベージコレクションによる停止時間を最小化している.また,クエリ実行中のメモリ使用量を監視し,制限を超えそうな場合はディスクへのスピルを行う機能も備えている.さらに,複数のクエリを同時実行する際のリソース割り当てを管理するためのリソースグループの概念も導入されている.
加えて,Delta LakeやApache Iceberg,Apache Hudiといったトランザクション対応のデータレイクフォーマットとも統合されており,時間旅行クエリ[Time Travel Query]やスキーマ進化,ACIDトランザクションをサポートし,クラウド時代のデータウェアハウス/レイクハウス基盤としての地位を確立しつつある.最近のバージョンでは,MapReduce・Sparkのような長時間実行のバッチ処理もサポートする機能が追加され,ETLジョブにも対応できるようになっている.
セキュリティ面では,Kerberos,OAuth2,LDAP,JWTなど多様な認証方式をサポートし,きめ細かなアクセス制御も可能である.また,データマスキングや行レベルセキュリティなどの機能も提供されている.
現在,TrinoはNetflix,LinkedIn,Airbnb,Comcast,Bytedance,Grab,Starburstなどの大規模ユーザーによって商用環境でも採用されており,単なる分析基盤を超えて,リアルタイムBIやRAG[Retrieval Augmented Generation]型LLMパイプラインの構成要素としても注目されている.特にStarburst Data社はTrinoの商用サポートとエンタープライズ版を提供する主要企業として知られている.
Trinoは多数のBI・可視化ツール[Tableau,Power BI,Looker,Superset]との統合も進んでおり,さらにdbt[data build tool]やAirflowなどのデータ処理ツールとの連携も強化されている.
Mathematics is the language with which God has written the universe.