LoginSignup
6
10

More than 3 years have passed since last update.

Prestoの調査

Last updated at Posted at 2019-12-13

エッジコンピューティングによって高性能化したエッジ機器にデータが格納されるようになると、クラウドサービスにデータを集めないでエッジ機器のデータを直接検索したいとニーズが生まれてきました。そして、IoT(Internet of Things) システムでは広域に分散されたエッジ機器のデータ群を高速に検索するために、マルチデータベースにアクセスできる分散SQLエンジンが求められています。そこで、分散SQLエンジンの Presto についてまとめました。
動作環境やライセンスなど基本情報から、対応プログラム言語、可用性、拡張性など機能情報やセキュリティまで掘り下げて、以下のようにまとめました。

Presto

Presto は、ペタバイトクラスまでのあらゆるサイズのデータ​​ソースに対してインタラクティブな分析クエリを実行するためのオープンソースの分散型SQLクエリエンジンです。
Presto は、1つの Presto Coordinator と複数の Presto Worker を持っている。クエリは Presto CLI のようなクライアントから送信されます。
Presto Coordinatorはクエリのパース、アナライズ、クエリ実行計画を行い、処理を Presto Workerに渡します。
Prestoは、Connectorプラグインで、複数のデータソースにアクセスしてクエリを実行するこが可能です。
参照 : Presto Overview

基本情報

項目            内容
URL https://prestosql.io/
データモデル リレーショナルデータモデル
動作環境 CPU: 64 bit CPU
メモリ: 512MB以上 ( 要 Shared Bufferの4倍の物理メモリ )
ストレージ
OS: Linux、Mac OS X
Software : Java 8 Update 161 以上, Oracle JDK, OpenJDK、Maven 3.3.9(ビルド用)、 Python 2.4(実行用)
実装言語 Java
ライセンス Apache License, Version 2.0
https://github.com/prestosql/presto/blob/master/LICENSE
主なバージョン Release 316 (2019-07-09) : data_formatでマルチバイト文字をサポート、UNNESTを使ったクエリの性能改善
Release 315 (2019-06-15) : FETCH FIRST ... WITH TIES 構文のサポート追加、format() 関数の追加
Release 314 (2019-06-08) : json_parse() 関数の性能改善、EXPLAINコマンドのプラン出力の可視化
参照 : Presto Documentation 12. Release Notes
開発元 Presto Software Foundation
開発体制 Contributorは、304名
Contributorは、Presto Software Foundation Contributor License Agreementsを締結する必要があります。
活動状況 GitHub issuesの投稿月間 平均約 600件、GitHub でソースコード・コミット月間約80件
参照 : GitHub issuesGitHub Commits
国内サポート体制 日本テラデータ、Think Bigのビッグデータ・コンサルティング・サービス を国内で販売開始
参照 : 日本テラデータ・プレスリリース
その他 開発の主体が、Facebook Open Source community をベースとする Presto Foundation と 2019年1月に発足した Presto Software Foundation に二分されています。主要メンバーは Presto Software Foundation に移り、開発を進めているため、今後は、Presto Software Foundation の動向をキャッチアップする方が良いと思われます。

機能情報

項目            内容
対応プログラム言語 C、Go、Java、Node.js、Python、R、Ruby
参照 : Presto Resources
アクセス可能なDB Apache Accumulo、Cassandra、Elasticsearch、Hive、Kafka、Kudu、Local File、Memory、MongoDB、MySQL、PostgreSQL、Redis、Redshift、SQL Server
参照 : Presto Documentation 6. Connectors
クエリ言語 SQL(ANSI SQLに準拠)
マルチテナント なし
インデックス なし
トランザクション Prestoでオンライントランザクション処理(OLTP)を扱えるように設計されていません。
参照 : Presto Documentation 1.1. Use Cases -> What Presto Is Not
ストアドプロシジャ Oracleのようなストアドプロシージャはありませんが、コネクタによってストアドプロシージャ相当を実現することが可能です。使用する際には、CALLコマンドでプロシージャを実行することが可能です。
参照 : Presto Documentation 9.4 CALL
dockerコンテナ dockerhubでPrestoのDocker Containerイメージが公開されている。
https://hub.docker.com/r/prestosql/presto
性能拡張 workerの台数を増やせばスループットも比例して上がります。ただし、データを分割できないデータソースがあると、特定のworkerに負荷が集中して台数を増やしてもスループットもが上がらないことがあります。
高可用性 Prestoは、現時点でCoordinator、またはWorkerのための有効なフォールト・トレランスを持っていません。現在、改善中である。
参照 : Presto: SQL on EverythingHigh Availability #391
運用 バックアップや監視ツールはありません
出来ないこと メモリに収まらないデータは処理できません。

セキュリティ

項目            内容
通信暗号化 すべての通信は、SSL/TLSに対応可能です
DB格納領域の暗号化 なし
認証機能 Kerberos認証、LDAP認証、ダイジェスト認証が使用可能です。また、Password Authenticatorの仕組みを利用して、認証部分を実装することも可能です。実装例
権限管理 権限管理は可能です
DB監査 Auditロギングがあります

参照 : Presto Documentation 3. Security

まとめ

Presto は、分散型SQLクエリエンジンに特化しているため、一般的なDB機能はサポートしていません。特に高可用性、運用面は対策が必要だと考えます。マルチテナント機能がないことはマイナスポイントと考えます。

ただし、日本テラデータが国内で Presto をサポートしていることは大きなポイントと考えます。

掲載内容は、(株)東芝 デジタルイノベーションテクノロジーセンター及びソフトウェア技術センターの見解です。コメント等は広くご意見を頂ければ幸いです。

また、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。

6
10
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10