/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2023/09/03 MotherDuck の紹介と計算リソースについて

このブログで何度か DuckDB についてご紹介したのですが、DuckDB のクラウド版 MotherDuck のベータ版が2023年6月よりリクエストベースで利用可能になっています。

もくじ:

クラウド版 DuckDB, MotherDuck の利点

公式アナウンスで紹介されていることをご紹介します。

motherduck.com

クラウドとローカル環境のハイブリッド

DuckDB はローカル環境で余っている CPU やメモリリソースを活用することで、ローカル環境上でデータ分析を行うことを目指したシンプルなデータベースです。

そのため、DuckDB のクラウド版と聞くと DuckDB の理念から外れている気がしたのですが、MotherDuck はデータをクラウド環境下に保存することができる機能に加え、MotherDuck と DuckDB が協調することにより、適切な実行計画を自動的に立てることでクラウド上のデータとローカルのデータを合わせて分析することが可能です。

このハイブリッド実行ですが、公式ドキュメントのアーキテクチャに少し詳しく説明されています:

https://motherduck.com/docs/architecture-and-capabilities より

  • データがローカル上にある場合、ローカルの DuckDB へルーティングする
  • データが MotherDuck か S3 にある場合、MotherDuck へルーティングする
  • ローカルとMotherDuckのデータをジョインする場合、最適な方法を見つける

上の図だと MotherDuck 側の処理が終わったらローカルに転送し、MotherDuck とローカルのデータを結合しています。

MotherDuck はサーバレス実行モデルを採用とあり、ユーザがインスタンスを起動したり、ウェアハウスを設定する必要は全くありません。ユーザはクエリを書いて実行し、あとは MotherDuck が全て面倒を見てくれるとのこと。以下で紹介する GUI 上でも一応「設定」メニューはありますが、設定項目はほぼありません。

MotherDuck の計算リソースについて

では MotherDuck がどれほどの計算リソースを提供してくれるのかというと、調べた限りでは明確な記載はありませんでした。MotherDuck の Slack コミュニティで質問をすると、MotherDuck のマネージャーの方に回答をいただけました:

slack.motherduck.com より

概ね "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

Architecture and capabilities | MotherDuck