- DuckDBは単一ファイルのSQLデータベースであり、データ分析に特化している
- DuckDBの評価の多くは、定量的な分析に集中する傾向がある
- 特に速度の面で、DuckDBは一般的に良好な性能を示す
- しかしユーザーの立場では、いったん性能が十分に満足できる水準に達すると、それ以上の高速化には大きな意味がない
- その代わり、使いやすさのほうが重要であり、DuckDBはこの点で強みを持つ
- DuckDBの使いやすさに関する利点:
- 開発者体験
- メモリより大きいデータセットを処理できる
- インストールと実行が容易
人間工学的な使いやすさ(Ergonomics)
- DuckDBは、一般的な作業を簡単に処理できるよう設計されている
- たとえば、入力ファイルから直接テーブルを作成し、スキーマを推論できる
- Parquetファイルの場合は、Web上のファイルも読み取れる
- テーブルを事前に作成しなくてもデータをクエリできる
read_parquet 関数はrelationを返すため、サブクエリとして利用できる
- DuckDBはPostgresで使われるSQL機能の大半をサポートしている
- たとえば、ウィンドウ関数は完全にサポートされている
メモリより大きいデータセットの処理
- 多くのデータツールは、データセットがコンピュータのメモリより大きくなると正常に動作しない
- 一方でDuckDBは、メモリより大きいデータセットを完全にサポートしている
- Pandasでは、データフレームがシステムメモリの50%を超えると問題が発生することがある
簡単なインストールと実行
- DuckDBは単一の実行ファイル
duckdb としてコンパイルされる
- WASMを通じて、ブラウザ上で直接DuckDBを体験できる(shell.duckdb.org)
- WASMベースのため、サーバーではなくブラウザですべてが実行される
- DuckDBをデータフレームライブラリのように使う
- DuckDBはPythonとよく統合されている
- Python内でクエリを実行し、戻り値を利用できる
- これにより、段階的により大きなデータ演算を構築できる
- SQLの利点とデータフレームの利点の両方を得られる
csvbaseによるデータ保存
- csvbaseのクライアントライブラリは、fsspec APIを通じてさまざまなシステムと連携できる
- DuckDBも同様にcsvbaseと組み合わせて利用できる
拡張性(Scalability)
- DuckDBは数千台のマシンへとスケールするわけではない
- 一方、Apache Sparkは可能だが、かなりの複雑さを伴う
- スケールダウンも重要である
- DuckDBは個々のユーザーのレベルで動作し、多くの要件を必要としない
要約
- DuckDBは、SQLを知っているデータアナリストにとって魅力的な選択肢になりうる
- メモリより大きいデータを扱え、インストールも簡単で、多くの場合Sparkの優れた代替となりうる
5件のコメント
ParadeDB は最近、良い代替案を追加しました。 https://blog.paradedb.com/pages/introducing_lakehouse
特にstreamlitなどでシンプルなインタラクティブダッシュボードを作るときにとても良いです。
Hugging Face Datasetsから移行する価値はありますか?
DuckDB をベースにスプレッドシートを作ってみる実験をしています。DuckDB にはとても期待しています。
DuckDB - Embedded OLAP DB オープンソース
データがなくてもデータベースになる DuckDB
新しい jq としての DuckDB
DuckDB 1.0.0 リリース