Dremioの調査

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

# Dremio

Dremio は、MongoDB、JSON ファイルといった非構造型のデータや、Redshift、PostgreSQL、SQLServer といった従来の構造型のデータに対して統一した SQLインターフェイスを提供します。さらに、そうしたさまざまな種類のデータソースに対してクエリの最適化とデータのキャッシュの管理を自動的に行います。また、Apache Arrow を使用したカラムナーのインメモリ処理と、元となるデータソースへの先進的なプッシュダウンを活用し、Apache Parquet によるデータソースの高度に最適化された物理的表現を利用することで、クエリパフォーマンスの高速化を可能とします。<br>Dremioは1つ以上のCoordinatorと1つ以上のExecutorを持っています。<br>参照 : [Dremio Document : Introduction](https://docs.dremio.com/)、[Architecture](https://docs.dremio.com/deployment/architecture.html)

# 基本情報

|項目&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|内容|
|-----|--------|
|URL|https://www.dremio.com/|
|データモデル|不明|
|動作環境|**CPU**： 64 bit CPU<br>**メモリ**： 最大2GBのヒープメモリ、4GBの直接メモリ(MacOS X の場合)<br>**ストレージ**：<br>**OS**：RHEL、CentOS 6.7以上、CentOS 7.3以上、Windows7以上、MacOS 10.12以上<br>**Software** : 64 bit Java Development Kit version 1.8、Webブラウザ(Google Chrome 54以上、Apple Safari 11以上、Mozilla Firefox 50以上、Microsoft Edge 14以上、Microsoft Internet Explorer 11以上)<br>参照 : [Dremio Document : Standalone Quickstart](https://docs.dremio.com/quickstart/standalone-quickstart.html)|
|実装言語|Java|
|ライセンス|Community Edition は Apache License, Version 2.0<br>Enterprise Edition は 製品ライセンス(1契約ごとに年間1万2000ドル)<br>参照 : [Dremio Enterprise Edition](https://www.dremio.com/enterprise-edition/)|
|主なバージョン|**Release 3.3** (2019-07-29) : AzureストレージOAuth認証、シングル・サイン・オン<br>**Release 3.2** (2019-05-10) : Azureストレージへ接続が可能、クラウド・オーケストレーション・テンプレートの追加<br>**Release 3.1** (2019-01-18) : Hash Aggregation Spilling機能の追加、コネクタ・フレームワークの増強<br>参照 : [Dremio Document : Release Notes](https://docs.dremio.com/release-notes/)|
|開発元|Dremio|
|開発体制|Contributorは、3名<br>Contributorは、[Contributor License Agreement](https://www.dremio.com/legal/contributor-agreement/) を締結する必要がある|
|活動状況|dremio communityの投稿月間平均約 100件、GitHubでソースコード・コミット月間 数件<br>参照 : [dremio community](https://community.dremio.com/)、 [GitHub Commits](https://github.com/dremio/dremio-oss/commits/master)|
|国内サポート体制|現時点で国内での保守サポートサービスを行っている企業、団体はありません|
|その他|OSS版では、メジャーDBのドライバーの使用などで、かなり機能が制限されています。また、現時点で使用できる機能であっても使用不可になる可能性があります。<br>参照 : [readme](https://github.com/dremio/dremio-oss/blob/master/README.md)|

# 機能情報

|項目&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|内容|
|-----|--------|
|対応プログラム言語|ODBC、JDBCドライバを利用可能なプログラム言語であればアクセス可能<br>参照 : [Dremio Document : Client Connectivity](https://docs.dremio.com/client-applications/)|
|アクセス可能なDB|PostgreSQL、MySQL、Oracle、Microsoft SQL Server、IBM DB2 (Enterprise Edition のみ)、Amazon Redshift、Azure Data Lake Store、Amazon S3、HDFS、NAS、MapR-FS、Elasticsearch、Amazon Elasticsearch Service、Hive、HBase、MongoDB<br>参照 : [Dremio Document : Data Sources](https://docs.dremio.com/data-sources/)|
|クエリ言語|SQL|
|マルチテナント|Multi-tenant workload controls という機能でマルチテナント機能を実現しています(Enterprise Edition のみ)|
|インデックス|なし|
|トランザクション|なし|
|ストアドプロシジャ|なし|
|dockerコンテナ|dockerhubで、dremio community editionのDocker Containerイメージが公開されています。<br>https://hub.docker.com/r/dremio/dremio-oss/|
|性能拡張|1～1,000以上のCoordinatorノードでスケールアウトを実現しています<br>参照 : [Dremio Document : Cluster Deployments](https://docs.dremio.com/deployment/)|
|高可用性|バックアップ・コーディネータ・ノードを用意することで高可用性を実現します。ZooKeeper がアクティブなコーディネータ・ノードを監視していて、ダウンした場合、バックアップ・コーディネータ・ノードにフェイルオーバーを実施します。<br>[Dremio Document : High Availability](https://docs.dremio.com/advanced-administration/high-availability.html)|
|運用|メタデータとユーザがアップロードしたファイルはバックアップ/リストアすることが可能です。バックアップにはキャッシュの内容、ダウンロードファイル、検索結果を含みません。<br>また、Dremio UIと呼ばれる管理者ツールが提供されます。<br>参照 : [Dremio Document : Backup Dremio](https://docs.dremio.com/advanced-administration/backup.html)、 [Restore Dremio](https://docs.dremio.com/advanced-administration/restore.html)|
|出来ないこと||

# セキュリティ

|項目&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|内容|
|-----|--------|
|通信暗号化|すべての通信は、TLSに対応可能しています(Enterprise Edition のみ)|
|DB格納領域の暗号化|ありません|
|認証機能|LDAP 認証(Enterprise Edition のみ)|
|権限管理| Dremio UIからデータセット、ソース、スペース、フォルダに共有や権限の設定が可能です。権限は UNIXベースの権限を設定しています。|
|DB監査|ありません|

参照 : [Dremio Dcoument : Data Security](https://docs.dremio.com/security/)

# まとめ

Dremio は分散型SQLクエリエンジンに特化しているため、一般的なDB機能はサポートしていませんが、高可用性、運用面は考慮されています。ただし、マルチテナント機能、セキュリティを考えると製品版を使用することになりそうです。

掲載内容は、(株)東芝 デジタルイノベーションテクノロジーセンター及びソフトウェア技術センターの見解です。コメント等は広くご意見を頂ければ幸いです。<br>
また、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。