DuckDB に入門してみた
こんにちは。こんにちは。jedipunkz🚀 です。 今回は DuckDB について理解したことをまとめようと思います。 DuckDB は PostgreSQL 互換の SQL を使って、JSON や CSV、Parquet などのファイルを直接クエリできるデータベースエンジンです。サーバーのセットアップが不要で、Node.js や Python などのアプリケーションに組み込んで使えるため、データ分析やログ解析の用途で注目されています。 DuckDB の特徴 DuckDB は以下の特徴を持ちます。 組み込み型データベース: サーバー不要で、プロセス内で動作 高速な分析処理: 列指向ストレージとベクトル化実行により OLAP に最適化 多様なフォーマット対応: JSON、CSV、Parquet などを直接読み込み PostgreSQL 互換 SQL: 標準的な SQL で操作可能 軽量: SQLite のように単一バイナリで動作 環境セットアップ 今回は Node.js (TypeScript) で DuckDB を使用します。 基本的なセットアップコードは以下の通りです。 :memory: を指定することで、メモリ上にデータベースを作成します。永続化が必要な場合は、ファイルパスを指定することもできます。 import duckdb from "duckdb"; import { promisify } from "util"; const db = new duckdb.Database(":memory:"); const dbAll = promisify(db.all.bind(db)); const dbClose = promisify(db.close.bind(db)); 基本的な SELECT 操作 まずは基本的な SELECT 操作から見ていきます。 サンプルデータ 従業員データを JSON ファイルで用意します (employees.json)。 [ {"id": 1, "name": "Alice", "age": 28, "department": "Sales", "salary": 50000}, {"id": 2, "name": "Bob", "age": 35, "department": "Engineering", "salary": 75000}, {"id": 3, "name": "Charlie", "age": 42, "department": "Sales", "salary": 65000}, {"id": 4, "name": "Diana", "age": 31, "department": "Engineering", "salary": 80000}, {"id": 5, "name": "Eve", "age": 29, "department": "HR", "salary": 55000} ] クエリ実行 DuckDB では、JSON ファイルを直接 FROM 句で指定できます。 ポイントは、CREATE TABLE などの事前準備なしに、ファイルパスを指定するだけでクエリを実行できる点です。DuckDB が自動的にスキーマを推論し、データを読み込みます。 ...