Prestoの概要
Prestoは、ペタバイトクラスまでのあらゆるサイズのデータソースに対して、インタラクティブ(対話的)な分析クエリを実行するためのオープンソースの高性能分散型SQLクエリエンジンです。
Prestoは元々、Facebookが自社の大規模なデータセットに対して、インタラクティブに結果を返すことを目的に2012年に開発され、2013年にオープンソースとなったものです。例えばFacebookではPrestoを利用して、300PBのデータウェアハウスを含む複数のデータストアに対して1000人を超えるスタッフが毎日3万件を超えるクエリを実行し、1日当たり合計1PBをスキャンしています。
これを可能にするためにPrestoでは、クエリを実行する際に、ジョブをタスクに分割し、そのタスクが並列で動くような計算モデルが採用されています。また、中間データをメモリ上に持つことでタスク間のデータのやり取りを高速化し、素早いレスポンスを得ることが可能となっています。
またPrestoは複数データソース(HBase, Cassandra, MySQL, etc...)に対して一度に集計を実行することができる機能を持っています。これにより、クエリ毎に毎回データソースを切り替える必要がなくなり、一つのクエリで複数のデータソースからデータを参照することが可能となっています。
このようにメモリ上で中間データをやり取りするため、高速で実行できる反面、JOIN結果が数十~数百万行となるようなクエリで文字列型のキーを使うなど、メモリを著しく逼迫させると処理が失敗する可能性もあることになります。
そのためPrestoは主に「一秒~数分程度で終わる集計」や「コンパクトな処理を素早く実行したい場合」などに利用されるアーキテクチャとなります。
なお、Prestoは、2019年1月に、Presto Foundationが管理するPrestoDBと、Presto Software Foundation(現Trino Software Foundation)が管理するPrestoSQLに分岐しています。PrestoSQLは、2020年12月に商標の問題からTrinoと名称変更されています。
Prestoの主な特徴
大規模向け高速分析用データベース |
Prestoはデータウェアハウス、または分析用に設計および最適化されているデータベースです。1秒から数分の応答時間を期待するアナリストを対象としています。 |
---|---|
分散システム |
Prestoは、1つのCoordinatorと複数のWorkerを持っています。クエリは Presto CLI のようなクライアントから送信され、Coordinatorがクエリのパース、アナライズ、クエリ実行計画を行い、Workerへ分配します。
またPrestoは、Connectorプラグインで、複数のデータソースにアクセスしてクエリを実行するこが可能です。
|
低学習コスト |
PrestoはANSI標準SQLに従って作られているため、書籍やWeb上の情報が多く、低い学習コストで運用することが可能です。 |
Prestoのユースケース
PrestoはFacebookをはじめとして、AirbnbやDropboxなど多くの大手インターネット企業で採用されています。
Prestoの動作環境
Prestoはオンプレミスやクラウド環境などの様々なプラットフォーム上でインストールすることができます。
Prestoと同様の機能を提供する製品
Prestoと類似する機能を提供している分散型SQLクエリエンジンとしては、HiveやImpala、Apache Drillなどがあります。また、Prestoの流れをくむ製品であるTrinoは、元々Prestoを開発していた主要メンバーが参加しているため、こちらが主流になる可能性もあります。
Prestoのライセンス
Prestoのライセンスは、 「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、 誰でも自由かつ無償で利用・改変・再配布できるようになっています
Prestoの参考情報
Prestoのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。