本文へスキップ
hdknr blog

DuckDB

インプロセス OLAP データベース。列指向アーキテクチャで分析クエリを高速実行し、Iceberg や DuckLake のテーブルを読み書きする計算エンジンにもなる

概要

列指向ストレージを採用した SQL データベースエンジン。Apache Arrow、Parquet と同じエコシステムの一部で、分析ワークロード(集計、GROUP BY)で従来の行指向 DB より圧倒的に高速。ベクトル化実行エンジンと自動並列化で OLAP に最適化。プロセス内で動くので、ノート PC や Lambda のような小さな環境でも使える。

詳細

データレイク上の計算エンジンとして

「分散ストレージ/計算エンジン/テーブル化技術」というデータ基盤の 3 層で見ると、DuckDB は計算エンジンの 1 つ。Spark クラスタを立てるほどではない規模の分析を、S3 上のテーブルに対して直接実行できる。

Apache Iceberg を読み書きする(iceberg 拡張)

DuckLake を使う(ducklake 拡張)

ATTACH 'ducklake:metadata.ducklake' AS my_ducklake; だけでスナップショット・タイムトラベル付きのレイクハウスになる。カタログに PostgreSQL を使えば複数の DuckDB プロセスから同時に読み書きでき、素の DuckDB ファイルの「書き込みは 1 プロセスのみ」という制約を越えられる。詳細は DuckLake。

使い分けの目安

重い ETL は Glue / EMR の Spark で Iceberg に書き、DuckDB は手元での探索・軽い集計・小規模修正に使うのが無難。DuckDB だけで完結する小さな構成なら DuckLake、組織横断で複数エンジンが同じテーブルを共有するなら Iceberg。

関連ページ

ソース記事