オープンソースプロジェクト
apache/datafusion avatar
apache/datafusion

Apache DataFusion:Arrow上のRustクエリエンジン

Apache DataFusion SQL クエリ エンジン。すぐに使える」DataFusion は、SQL および DataFrame API、優れたパフォーマンス、CSV、Parquet、JSON、Avro の組み込みサポート、広範なカスタマイズ、優れたコミュニティを提供します。

スター 9,316フォーク 2,406RustApache-2.0

ひと目でわかる

これは何?
Rust製拡張可能クエリエンジン。SQL/DataFrame API、11種デフォルトCargo feature、Ballista/Cometサブプロジェクト、issue #22882を整理。
誰に向いている?
ドメイン特化クエリエンジンやデータパイプラインをRustで組む開発者向け。datafusion-examplesとCargo.tomlデフォルトfeatureで自ワークロードを試し、性能主張はbenchmark.clickhouse.com外部リンクのため自計測必須。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に Rust です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

ArrowインメモリのRustクエリエンジンcrate

README 冒頭は DataFusion を Rust 製拡張可能クエリエンジンで Apache Arrow をインメモリ形式とするものと説明します。この crate は特定ワークロード向けデータベースや分析システム構築者向けにライブラリとバイナリを提供します。What can you do with this crate 節は、ドメイン特化クエリエンジン、新データベースプラットフォーム、データパイプライン、クエリ言語などの構築に適すると述べ、完全動作エンジンから始めて必要機能だけカスタマイズできると説明します。known users リスト(datafusion.apache.org/user-guide/introduction.html#known-users) へのリンクもこの節にあります。エンドユーザー向け関連サブプロジェクトを 4 つ挙げます。DataFusion Python は SQL/DataFrame 用 Python インターフェース、DataFusion Java は Java 版、DataFusion Comet は DataFusion 基盤の Spark アクセラレータ、DataFusion Ballista はクラスタ分散実行です。use cases ページ(datafusion.apache.org/user-guide/introduction.html#use-cases)へリンクしますが、ユースケース自体は README 内に列挙していません。

プランナー/ベクトル実行/SQL+DataFrame

README によると DataFusion は完全クエリプランナー、カラム型ストリーミング、マルチスレッド、ベクトル化実行エンジン、分割データソースを備えます。追加データソース、クエリ言語、関数、カスタム演算子などほぼ全箇所でカスタマイズ可能で、詳細は datafusion.apache.org/contributor-guide/architecture.html です。Out of the box で SQL(datafusion.apache.org/user-guide/sql/index.html) と DataFrame(datafusion.apache.org/user-guide/dataframe.html) API を提供し、CSV、Parquet、JSON、Avro を組み込みサポートします。README の excellent performance 表現は benchmark.clickhouse.com 外部ベンチマークへのリンクで、数値は README 内にありません。Architecture 節は docs.rs/datafusion/latest/datafusion/index.html#architecture もリンク先として示しています。partitioned data sources 対応は README 本文に明記されています。extensive customization という表現も README にあります。

Python/Java/Comet/Ballista 4サブプロジェクト

README はライブラリ利用者とエンドユーザーを区別し、後者向けに 4 サブプロジェクトをリンクします。github.com/apache/datafusion-python/ は Python SQL/DataFrame、datafusion-java は Java 版、datafusion-comet は Spark アクセラレータ、datafusion-ballista は分散実行です。crate 本体だけで CLI や分散を完結させるのではなく、用途に応じサブプロジェクト選択が README 構造から読み取れます。Python DataFrame API は arrow.apache.org/datafusion-python/ も README リンク先です。Rust Getting Started は datafusion.apache.org/user-guide/example-usage.html、Rust Examples は github.com/apache/datafusion/tree/main/datafusion-examples です。CLI インストールは datafusion.apache.org/user-guide/cli/installation.html に委ねられています。Comet は Spark ワークロード加速用途、Ballista は DataFusion 単機上限超えの分散用途と README 説明から用途分担が読み取れます。各サブプロジェクト README は別リポジトリで管理されます。

11種デフォルトCargo feature

README Crate features 節は Cargo.toml で指定する feature を列挙します。デフォルト feature: nested_expressions(array_to_string 等ネスト型関数)、compression(xz2/bzip2/flate2/zstd 圧縮読取)、crypto_expressions(md5/sha256 等暗号関数)、datetime_expressions(to_timestamp 等日時関数)、encoding_expressions(encode/decode)、parquet(Apache Parquet 形式)、sql(SQL 解析とプランニング)、regex_expressions(regexp_match 等)、unicode_expressions(character_length 等 Unicode 関数)、unparser(LogicalPlan を SQL 逆変換)、recursive_protection(recursive crate によるスタックオーバーフロー保護)です。オプション feature: avro(Apache Avro)、backtrace(エラーメッセージにバックトレース)、parquet_encryption(Parquet モジュラー暗号化)、serde(arrow-schema serde 有効化)です。feature 無効化でバイナリサイズ削減可能ですが、README は各 feature 削除時の機能欠落詳細を本文に書いていません。doc.rust-lang.org/cargo/reference/features.html へのリンクも README にあります。

非推奨方針とCargo.lock

README は公開メソッドは時間とともに変化すると述べ、安定 API 維持しつつ改善を続け、通常は削除前に非推奨化すると説明します。指針は deprecation ガイドページにリンクされます。プロジェクトは Cargo.lock をコミットし、Rust ロックファイルコミット指針に従います。CI はコミット済みロックファイルを使用し、依存関係は Dependabot PR で定期更新されます。API 変更追従は docs.rs/datafusion/latest/datafusion と非推奨ガイド併読が README 想定です。Crates.io バッジ(README 上部)は crates.io/crates/datafusion へのリンクで、Min Rust Version バッジも README に表示されています。Open Issues バッジと Pending PRs バッジも README 上部にあり、開発活発度の参考リンクとして機能します。Dependabot による依存更新も README に明記されています。以上です。確認推奨。

issue #22882ロードマップ議論

README Contributing 節は contributor-guide(datafusion.apache.org/contributor-guide) と communication(datafusion.apache.org/contributor-guide/communication.html) を貢献入口とします。ロードマップ議論は GitHub issue で行い、現在の議論は DataFusion 2026 Q3-Q4 Roadmap Discussion(github.com/apache/datafusion/issues/22882) です。roadmap ページ(datafusion.apache.org/contributor-guide/roadmap.html) も README リンク先です。GitHub メタデータ(README 取得時): スター 9214、フォーク 2352、未解決 issue 2116、ライセンス Apache-2.0、defaultBranch main。数値は README 本文外です。Discord(discord.com/invite/Qw5gKqHxUM) と LinkedIn(README バッジ) もコミュニティ入口として示されています。Build Status バッジは github.com/apache/datafusion/actions/workflows/rust.yml を指します。Commit Activity バッジも README 上部に表示されています。

Apache-2.0とREADME外の主張

README バッジは Apache v2 を表示し LICENSE.txt(github.com/apache/datafusion/blob/main/LICENSE.txt) にリンク、メタデータ SPDX は Apache-2.0 です。README はセキュリティ保証、サポート約束、本番実績を示していません。known users 主張は datafusion.apache.org/user-guide/introduction.html#known-users 外部ページリンクのみで、README 内に企業名は列挙していません。性能数値も README 内にはなく benchmark.clickhouse.com 参照です。Codecov バッジ(app.codecov.io/github/apache/datafusion) はカバレッジ可視化へのリンクですが、数値保証は README 本文にありません。ライセンス条文の具体引用は LICENSE.txt 確認が必要です。README 単体では許諾範囲の詳細判断はできません。

datafusion-examples評価手順

DataFusion 評価は github.com/apache/datafusion/tree/main/datafusion-examples を Cargo.toml デフォルト feature 有効で cargo run し、自ワークロード CSV/Parquet を ctx.register_csv または register_parquet で登録して SQL/DataFrame API を試す順です。datafusion.apache.org/user-guide/example-usage.html の Getting Started 例も併用可能です。性能比較は README がリンクする benchmark.clickhouse.com を参照するが数値は README 外のため自計測必須。ロードマップ追従は issue #22882 をウォッチ。分散評価が必要なら datafusion-ballista サブプロジェクトへ切替。Python だけ欲しい場合は datafusion-python を先に clone して API 互換を確認。Rust API 参照は docs.rs/datafusion/latest/datafusion です。評価ログに使用 commit、Cargo feature 一覧、実行した example 名を残してください。

編集部の結論

ドメイン特化クエリエンジンやデータパイプラインをRustで組む開発者向け。datafusion-examplesとCargo.tomlデフォルトfeatureで自ワークロードを試し、性能主張はbenchmark.clickhouse.com外部リンクのため自計測必須。Python/Javaバインディングだけ欲しい場合はdatafusion-python/javaを先に検討。分散実行はBallistaサブプロジェクト側の判断になる。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
コミュニティノート

コミュニティノート