このブログで何度か DuckDB についてご紹介したのですが、DuckDB のクラウド版 MotherDuck のベータ版が2023年6月よりリクエストベースで利用可能になっています。
もくじ:
クラウド版 DuckDB, MotherDuck の利点
公式アナウンスで紹介されていることをご紹介します。
クラウドとローカル環境のハイブリッド
DuckDB はローカル環境で余っている CPU やメモリリソースを活用することで、ローカル環境上でデータ分析を行うことを目指したシンプルなデータベースです。
そのため、DuckDB のクラウド版と聞くと DuckDB の理念から外れている気がしたのですが、MotherDuck はデータをクラウド環境下に保存することができる機能に加え、MotherDuck と DuckDB が協調することにより、適切な実行計画を自動的に立てることでクラウド上のデータとローカルのデータを合わせて分析することが可能です。
このハイブリッド実行ですが、公式ドキュメントのアーキテクチャに少し詳しく説明されています:
- データがローカル上にある場合、ローカルの DuckDB へルーティングする
- データが MotherDuck か S3 にある場合、MotherDuck へルーティングする
- ローカルとMotherDuckのデータをジョインする場合、最適な方法を見つける
上の図だと MotherDuck 側の処理が終わったらローカルに転送し、MotherDuck とローカルのデータを結合しています。
MotherDuck はサーバレス実行モデルを採用とあり、ユーザがインスタンスを起動したり、ウェアハウスを設定する必要は全くありません。ユーザはクエリを書いて実行し、あとは MotherDuck が全て面倒を見てくれるとのこと。以下で紹介する GUI 上でも一応「設定」メニューはありますが、設定項目はほぼありません。
MotherDuck の計算リソースについて
では MotherDuck がどれほどの計算リソースを提供してくれるのかというと、調べた限りでは明確な記載はありませんでした。MotherDuck の Slack コミュニティで質問をすると、MotherDuck のマネージャーの方に回答をいただけました:
概ね "12 cores and 16GB of RAM" との回答で、業務であればこれに近い水準のPCを使うことも多いのではないでしょうか。クラウド版だからといってリソースが膨大に使えるということではないようです。
MotherDuck 自体がまだベータ版ということもあり、将来的にはユーザ側でハードウェアリソースをスケールアップできる予定とも回答をいただけました。ただこれだけのリソースが割り当てられる保証はなく利用状況に応じて動的にリソース割り当てがされるようです。
ノートブックとGitスタイルのコラボレーション
GUI が付いてくるのはシンプルに魅力的ですね。ノートブックスタイルとあるように、セルごとにクエリと実行結果を追加できる形式です。Snowflake の SnowSight と似ていますがウェアハウスやロールの指定もなく、非常にシンプルです。
ただデータ共有機能があることとセキュリティ面もMotherDuckを使うことで強化されるとのことなので、管理面でロールの切り替えなどはもしかしたら今後実装されるかもしれません。計算リソースの設定についても計画があるとのことなので、徐々に GUI も機能拡張されると思われます。
"Git スタイル" という点について、データのスナップショットを切って他のユーザに共有できる機能があるようで、そのことを恐らく指していると思われます。
DuckDB が使える環境なら、MotherDuck が利用可能
公式アナウンスでは特に可視化について言及されており、DuckDB で集計した結果を MotherDuck に保存し、様々な BI ツールから MotherDuck に接続してダッシュボードを他のユーザと共有するといった使い方が考えられます。
注意点:DuckDB でしかできない機能もある
現状 DuckDB でしか使えない機能もあり、以下の機能を使っている場合は注意が必要です:
- User Defined Functions (UDFs)
- Custom extensions. Only the https/httpfs, CSV/Parquet reader, fts, json, icu, tpcds, and tpch extensions are preloaded into MotherDuck.
- Sequences
- Macros
- Checkpointing
- Stored Procedures