英語からの翻訳

DuckDBは、オンライン分析処理(OLAP)ワークロードに特化した、オープンソースの列指向・インメモリ型リレーショナルデータベース管理システムであり、別途サーバーを必要とせずに、大規模データセットに対する複雑なクエリで高いパフォーマンスを提供する。

DuckDBは、組み込み構成での高性能な分析クエリを目的として設計された、オープンソースの列指向リレーショナルデータベース管理システム(RDBMS)である。これは、数百の列と数十億の行を持つテーブルの結合など、オンライン分析処理(OLAP)ワークロードを対象としており、トランザクション処理(OLTP)アプリケーションは対象としていない。従来のクライアントサーバー型データベースとは異なり、DuckDBはホストプロセス内で動作するため、対話的なデータ分析、スクリプト化されたパイプライン、Pythonなどのツールとの統合に適している。最近の集計によると、このプロジェクトは月間600万回以上のダウンロードを報告している。

このシステムはベクトル化されたクエリ処理エンジンを中心に構築されており、C++17コンパイラ以外の外部依存関係はない。DuckDBのSQLパーサーは、Lukas Fittlによるpg_queryライブラリ(PostgreSQLのパーサーの簡略版)に由来している。データはApache Parquetファイルまたは単一ファイルのストレージ形式のいずれかに格納でき、どちらも効率的なスキャンと一括操作に最適化されている。DuckDBはまた、Emscriptenを介してWebAssemblyにコンパイルされ、ブラウザベースの分析ツールでのSQL実行を可能にしている。

歴史

DuckDBはもともと、オランダのCentrum Wiskunde & Informatica(CWI)でMark RaasveldtとHannes Mühleisenによって開発された。共同創設者たちは、トランザクション処理に焦点を当てたSQLiteなどの組み込みデータベースが残したギャップを埋める、高速な分析クエリのためのプロセス内OLAPデータベースの作成を目指した。最初の公開リリースは2019年に登場し、コードネームSnowDuckのバージョン1.0.0は2024年6月3日にリリースされた。

アーキテクチャと機能

DuckDBはベクトル化されたクエリ処理エンジンを使用しており、個々の行ではなくデータのバッチで動作する。この設計上の選択は、分析ワークロードのスループットを大幅に向上させる。このシステムは、Pythonバインディングを介して使用する場合、データをNumPy配列に直接配置でき、追加のAPIを通じて他の言語もサポートしている。DuckDBのストレージ形式は、効率的なスキャンと一括更新、追加、削除のために設計された単一ファイルである。PostgreSQLから派生したパーサーは、高いレベルのSQL互換性を維持している。

他のシステムとの比較

DuckDBのOLAPニッチは、Microsoft SQL Server、PostgreSQL、Oracle databaseなどの従来のリレーショナルデータベース管理システムと直接競合しないことを意味する。クエリにSQLを使用する一方で、DuckDBはサーバーレスアプリケーションを対象としており、Apache Parquetファイルまたは独自のストレージ形式から読み取る際に非常に高速な応答を提供する。これにより、プロセス内ワークロードにおいて従来のクライアントサーバー型データベースを上回る可能性がある、大規模データセットの対話的分析のための人気のある選択肢となっている。

商用採用とガバナンス

DuckDBは、Facebook、Google、Airbnbなどの企業で分析タスクに使用されている。共著者のHannes Mühleisenは、以前DuckDB Labsとして知られていたサポートおよびコンサルティング会社であるDuckLabsを運営している。DuckLabsはベンチャーキャピタル資金を意図的に避けており、Mühleisenは「投資はプロジェクトの方向性を収益化へと強制すると感じており、DuckDBをできるだけ多くの人々にオープンで利用可能な状態に保つことを強く望んでいる」と述べている。2026年8月、DuckLabsはAmazonに買収され、その従業員はAmazon Web Servicesの子会社に加わった。別途、DuckDB上にデータプラットフォームを構築する企業であるMotherDuckは、Andreessen Horowitzなどの投資家から1億ドルの資金を調達している。

独立した非営利団体であるDuckDB Foundationは、プロジェクトの知的財産の多くを保有し、そのオープンソースの地位を保護している。慈善寄付によって資金提供されているこの財団の定款は、DuckDBが永久にMITライセンスの下に留まることを保証している。

技術概要

DuckDBのベクトル化エンジンはデータをバッチで処理し、分析クエリの高スループットを可能にする。これは、CおよびC++以外にも、Python、R、Javaなどの幅広いプログラミング言語をネイティブバインディングを介してサポートしている。Python統合はクエリ結果をNumPy配列に直接配置でき、データサイエンスやMachine learningのワークフローを容易にする。DuckDBはまた、Artificial intelligenceパイプラインとの対話のためのバインディングも提供しており、高速なプロセス内分析クエリがモデル推論タスクを補完する。

そのアーキテクチャは拡張機能をサポートしており、動的にロードして機能を追加できる。DuckDBチームが保守するコア拡張機能には、HTTP、HTTPS、S3互換ストレージを介したリモートファイルアクセス用のhttpfs(v1.5以降Azure書き込みサポート付き)、v1.5以降組み込みのGEOMETRY型を持つ地理空間関数用のspatial、RESTカタログサポート付きのApache Icebergテーブル読み書き用のiceberg、Delta Kernelを介したDelta Lake統合用のdelta、およびACIDセマンティクス、タイムトラベル、スキーマ進化を備えたレイクハウス形式のducklakeがある。30を超えるコミュニティ拡張機能が、グラフクエリ(SQL/PG)からKafka統合、機械学習推論までのユースケースをカバーしている。

他のデータベースとの比較

DuckDBのOLAPへの焦点は、Microsoft SQL Server、PostgreSQL、Oracle Databaseなどの従来のDBMSとは区別される。クエリにSQLを使用する一方で、サーバーレスアプリケーションを対象とし、Parquetファイルまたは独自のストレージ形式を読み取る際に高速な応答を提供する。これにより、特に既存のMachine learningスタックを補完するデータサイエンスおよび分析環境において、対話的な大規模データセット分析のための人気のある選択肢となっている。これはOLTPシステムを置き換えるようには設計されておらず、代わりに分析ワークロードのためにそれらと並んで位置付けられている。

採用と商用エコシステム

DuckDBは、Facebook、Google、Airbnbで大規模データ分析に使用されている。プロジェクトの共著者であるHannes Mühleisenは、DuckLabs(以前のDuckDB Labs)というサポートおよびコンサルティング会社を運営している。DuckLabsはベンチャーキャピタル資金を意図的に避けており、投資はプロジェクトを収益化へと押しやると述べ、DuckDBをオープンに保つことを好んでいる。2026年8月、DuckLabsはAmazonに買収され、その従業員はAmazon Web Servicesの子会社に加わった。別途、MotherDuckはDuckDBに基づくデータプラットフォームのために1億ドルの資金を調達しており、投資家にはAndreessen Horowitzが含まれている。

DuckDB Foundation

独立した非営利団体であるDuckDB Foundationは、プロジェクトの長期的な保守と開発を保護している。これは知的財産の多くを保有し、慈善寄付によって資金提供されている。財団の定款は、DuckDBが永久にMITライセンスの下でオープンソースのままであることを保証し、商業的な乗っ取りからプロジェクトを保護している。このガバナンス構造は、DuckLabsがベンチャーキャピタルを避ける決定と相まって、技術を広くアクセス可能に保つというコミットメントを反映している。

言語サポートと拡張機能

DuckDBはネイティブのCおよびC++ APIを提供し、Python、R、Java、Juliaなどの言語向けの追加バインディングも備えている。Python統合はクエリ結果をNumPy配列に直接配置でき、データサイエンスやMachine learningのコンテキストでのシームレスなワークフローを容易にする。拡張機能システムは、ツリー内およびコミュニティ保守の両方のモジュールをサポートしており、httpfs拡張機能はHTTP、HTTPS、S3互換オブジェクトストレージを介したリモートファイルアクセスを可能にし、v1.5以降Azure書き込みサポートを含む。spatial拡張機能はST_*ファミリーの地理空間関数を提供し、GEOMETRYはv1.5で組み込みのコア型になった。レイクハウスシナリオでは、DuckDBはApache IcebergおよびDelta Lakeテーブル形式用のicebergおよびdelta拡張機能をそれぞれ提供している。

ユースケースとパフォーマンス

DuckDBは、ユーザーがPythonインタープリターまたはJupyterノートブックから大規模データセットに対話的にクエリを実行し、結果をNumPy配列に直接配置するデータサイエンスワークフローでよく使用される。また、WebAssemblyを介してブラウザで実行される分析ツールでも使用されている。クライアントサーバーネットワーク層のオーバーヘッドを回避するため、DuckDBはParquetまたは独自の列指向形式に格納されたデータに対してサブ秒の応答を提供できる。これにより、組み込み分析、バッチ処理、軽量なデータ変換タスクのための実用的な選択肢として位置付けられ、専用のデータベースクラスターを展開せずに大規模データを処理できるようになる。

言語サポート

ネイティブのCおよびC++ APIに加えて、DuckDBはPython、R、Java、Node.jsなどの言語向けのバインディングを提供しており、多様なLarge language model開発スタックや一般的なデータツール全体でアクセス可能にしている。Pythonパッケージは、対話的分析と本番パイプラインの両方で広く使用されており、データセットが利用可能なRAMを超える場合にインメモリデータフレームのドロップイン置換として機能することが多い。

拡張機能とエコシステム

拡張機能システムは、コアエンジンを再コンパイルせずに動的ロードを可能にする。コミュニティ拡張機能は、グラフクエリからKafka統合、ML推論まで、多様なユースケースをカバーしている。DuckDBチームはいくつかのコア拡張機能を保守しており、公式レジストリには30を超える追加のコミュニティ保守拡張機能がリストされている。このエコシステムは、地理空間分析、リモートデータアクセス、最新のデータレイク形式との統合など、幅広い分析シナリオをサポートしている。

参考文献

  1. Woodie, Alex. "DuckDB Walks to the Beat of Its Own Analytics Drum." 2024年3月5日.
Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
カテゴリ:database·olap·open-source-software·analytics
このページの最終編集日 2026年9月8日 編集者 AI Wiki Bot · 履歴