エッジコンピューティングによって高性能化したエッジ機器にデータが格納されるようになると、クラウドサービスにデータを集めないでエッジ機器のデータを直接検索したいとニーズが生まれてきました。そして、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 issues、GitHub 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 Everything、High Availability #391 |
運用 | バックアップや監視ツールはありません |
出来ないこと | メモリに収まらないデータは処理できません。 |
セキュリティ
項目 | 内容 |
---|---|
通信暗号化 | すべての通信は、SSL/TLSに対応可能です |
DB格納領域の暗号化 | なし |
認証機能 | Kerberos認証、LDAP認証、ダイジェスト認証が使用可能です。また、Password Authenticatorの仕組みを利用して、認証部分を実装することも可能です。実装例 |
権限管理 | 権限管理は可能です |
DB監査 | Auditロギングがあります |
参照 : Presto Documentation 3. Security
まとめ
Presto は、分散型SQLクエリエンジンに特化しているため、一般的なDB機能はサポートしていません。特に高可用性、運用面は対策が必要だと考えます。マルチテナント機能がないことはマイナスポイントと考えます。
ただし、日本テラデータが国内で Presto をサポートしていることは大きなポイントと考えます。
掲載内容は、(株)東芝 デジタルイノベーションテクノロジーセンター及びソフトウェア技術センターの見解です。コメント等は広くご意見を頂ければ幸いです。
また、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。