# DuckDB [[CWI]]の[[Mark Raasveldt]]・[[Hannes Mühleisen]]が開発した、プロセス内に組み込んで分析SQLクエリを実行する新しいデータ管理システム。MITライセンスのオープンソースソフトウェアとして提供される([[@2019__SIGMOD__DuckDB - an Embeddable Analytical Database]])。 ## 概要 SIGMOD '19のデモンストレーション論文で発表。SQLiteが組み込み型データベースとして広く普及している一方でOLTP(トランザクション処理)向け設計のためOLAP(分析)性能が乏しいという課題を受け、分析ワークロード専用に設計された点が特徴。パーサ(`libpg_query`由来)・コストベースオプティマイザ・ベクトル化解釈実行エンジン・HyPer由来のシリアライザブルMVCC・DataBlocksストレージレイアウトという構成を取る。JITコンパイル方式ではなくベクトル化解釈実行を採用したのは、LLVM等の巨大なコンパイラライブラリへの依存を避け移植性を優先したため。クライアントプロトコルやサーバプロセスを持たずC/C++ APIで直接アクセスされ、SQLite互換レイヤーおよびR(DBI)・Python(PEP 249)向けAPIも提供する。前身の[[MonetDBLite]]開発で得られた知見(purpose-builtでない組み込みシステムの限界)をもとに、ゼロから組み込み分析用途向けに設計された。 ## 講義教材 2026年、University of Tübingenの[[Torsten Grust]]教授が15週構成の講義「Design and Implementation of DuckDB Internals(DiDi)」でDuckDBの内部実装を教材に採用した。第1回「Welcome & Setup」では、DuckDBが従来のDBMSプロセス分離アーキテクチャ(PostgreSQL・MySQL・SQL Server・Oracle等)を取らず、クライアントと同一プロセス内でカーネルが動く「zero copy」設計であることを図解している([[@2026__DuckDB__Welcome & Setup (DiDi Course, Lecture 1)]])。同スライドの時点でDuckDBのバージョンはv1.5系(2026年3月時点でv1.5.0)。開発元の[[Hannes Mühleisen]]・[[Mark Raasveldt]]は支援企業[[DuckDB Labs]](アムステルダム)も運営する。DiDi第6回「Query Execution Plans and Pipelining」では、SQLを木構造の物理演算子プランへ変換する仕組みと、そのプランをパイプライン(ソース・演算子・シンク)へ分解して全CPUコアを中間結果の素材化なしに並列動作させる実行モデルを解説している([[@2026__DiDi__Query Execution Plans and Pipelining]])。DiDi第7回「Vectorized Query Execution」では、テーブル列を2048要素のベクトルに分割しL2キャッシュに収まるdata chunk単位で演算子間を受け渡す実行モデルの詳細、ベクトルの物理表現(FLAT/CONSTANT/DICTIONARY/SEQUENCE)、DuckDB 1.4のC++ソースコード(`ExpressionExecutor`・`VectorOperations`・`BinaryExecutor`)によるunified representationへの変換とテンプレートコード生成、コンパイラによるループ展開・SIMD化、分岐予測ペナルティを解説している([[@2026__DiDi__Vectorized Query Execution]])。 ## 関連 - ソース: [[@2019__SIGMOD__DuckDB - an Embeddable Analytical Database]] / [[@2026__DuckDB__Welcome & Setup (DiDi Course, Lecture 1)]] / [[@2026__DiDi__Query Execution Plans and Pipelining]] / [[@2026__DiDi__Vectorized Query Execution]] - 概念: [[列指向OLAPデータベース]] / [[クエリ実行プラン]] / [[プッシュ型パイプライン実行]] / [[SIMDベクトル処理]] / [[分岐予測]] - エンティティ: [[Mark Raasveldt]] / [[Hannes Mühleisen]] / [[CWI]] / [[MonetDBLite]] / [[Torsten Grust]] / [[DuckDB Labs]]