DuckDBとは

DuckDBは、組み込み型の高速分析データベースエンジンです。
「SQLiteがOLTP(トランザクション処理)向けなら、DuckDBはOLAP(分析処理)向け」というイメージです。


目次

特徴

  1. 組み込み型
    • SQLiteのようにアプリに直接組み込み可能で、サーバーを立てずに動きます。
    • Python、C/C++、Java、Node.jsなどから利用可能。
  2. 分析処理に特化
    • 列指向ストレージ方式を採用(分析で有利)。
    • 大規模データの集計・集約が高速。
    • PandasやArrowとシームレスに連携。
  3. インストールが簡単
    • Pythonなら pip install duckdb で使える。
    • 追加のサーバーセットアップ不要。
  4. 大容量ファイルの直接読み込み
    • CSV、Parquet、JSONなどを直接SQLでクエリ可能。
    • SELECT * FROM 'data.parquet' のようにファイルをテーブルのように扱える。
  5. マルチスレッド処理対応
    • 複数コアを使った並列処理で高速化。

Pythonでの簡単な使い方例

import duckdb

# メモリ上にDB作成
con = duckdb.connect()

# データ作成
con.execute("CREATE TABLE items(id INTEGER, name VARCHAR, price DOUBLE)")
con.execute("INSERT INTO items VALUES (1, 'apple', 120.5), (2, 'banana', 98.0)")

# SQLで集計
result = con.execute("SELECT AVG(price) FROM items").fetchall()
print(result)  # [(109.25,)]

ファイルを直接クエリ

import duckdb

con = duckdb.connect()

# CSVやParquetを直接参照
df = con.execute("SELECT * FROM 'data.parquet' WHERE amount > 100").df()
print(df)
  • 中間テーブルを作らず、直接ファイルに対してSQLが打てるのが強み。

他のDBとの違い

項目DuckDBSQLitePostgreSQL/MySQL
用途分析(OLAP)小規模トランザクション(OLTP)汎用
ストレージ列指向行指向行指向
サーバー不要不要必要
大規模分析
ファイル直クエリ××

よかったらシェアしてね!
目次