オープンソースプロジェクト
facebookincubator/velox avatar
facebookincubator/velox

Velox:構成可能なC++実行エンジン

データ管理システム用の、構成可能で完全に拡張可能な C++ 実行エンジン ライブラリ。

スター 4,210フォーク 1,607C++Apache-2.0

ひと目でわかる

これは何?
Velox実行エンジンライブラリの概要、そのコンポーネント、拡張性、ビルドプロセスについて。
誰に向いている?
Veloxは、最適化されたクエリプランを実行するためのライブラリであり、再利用可能で拡張可能な一連のコンポーネントを提供します。Apache 2.0ライセンスは広範な利用を許可し、プロジェクトはガバナンスとコミュニティチャネルを文書化しています。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

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

オープンソース詳細解説

構成可能なC++実行エンジン

Veloxは、オープンソースのC++ライブラリとして配布される構成可能な実行エンジンです。バッチ、インタラクティブ、ストリーム処理、AI/MLなどの分析ワークロードに焦点を当てたデータ管理システムを構築するために使用できる、再利用可能で拡張可能な高性能データ処理コンポーネントを提供します。VeloxはMetaによって作成され、現在はIBM/Ahana、Intel、Voltron Data、Microsoft、ByteDanceなどの多くの企業と共同で開発されています。一般的な使用シナリオでは、Veloxは完全に最適化されたクエリプランを入力として受け取り、記述された計算を実行します。SQLパーサー、データフレームレイヤー、クエリオプティマイザーを提供しないため、通常はエンドユーザーが直接使用することを意図していません。むしろ、計算エンジンを統合および最適化する開発者によって主に使用されます。

コアコンポーネント

Veloxは、スカラー、複合、ネストされた型(構造体、マップ、配列など)をサポートする汎用型システムを提供します。Vectorモジュールは、Arrow互換の列指向メモリレイアウトであり、Flat、Dictionary、Constant、Sequence/RLEなどのエンコーディングに加え、遅延マテリアライゼーションパターンと順序外書き込みのサポートを備えています。式評価エンジンは完全にベクトル化されており、Vector/Arrowエンコードされたデータ上で効率的に実行されます。PrestoおよびSparkのセマンティクスに従うベクトル化されたスカラー、集約、ウィンドウ関数のセットが含まれています。リレーショナル演算子は、スキャン、書き込み、射影、フィルタリング、グループ化、順序付け、シャッフル/交換、ハッシュ結合、マージ結合、入れ子ループ結合、unnestなどをカバーしています。I/Oレイヤーは、拡張可能なデータソースとシンクのためのコネクタインターフェースを定義し、ORC/DWRF、Parquet、Nimble形式、およびS3、HDFS、GCS、ABFS、ローカルファイルなどのストレージアダプタをサポートしています。ネットワークシリアライザは、PrestoPageやSparkのUnsafeRowなどのワイヤプロトコルを実装します。リソース管理プリミティブは、メモリアリーナ、バッファ管理、タスク、ドライバ、スレッドプール、スピル、キャッシュを処理します。

拡張性

Veloxは拡張可能であり、開発者はエンジン固有の特殊化を定義できます。カスタム型、単純およびベクトル化関数、集約関数、ウィンドウ関数、演算子、ファイル形式、ストレージアダプタ、ネットワークシリアライザをすべて追加できます。さまざまなコンポーネントAPIとの拡張性と統合の例は、velox/examplesディレクトリにあります。READMEは各拡張ポイントの正確なAPIを詳述していないため、それらのインターフェースを検証するには、ソースコードとドキュメントにリンクされている開発者ガイドを確認する必要があります。この拡張性こそが、Veloxを固定システムではなくライブラリにしている理由であり、さまざまな計算エンジンに適応するように設計されています。

はじめに

READMEでは、リポジトリのクローンと依存関係のインストールについて説明しています。macOS、Ubuntu 20.04以降、CentOS 9 Stream向けのセットアップスクリプトが提供されています。スクリプトは、DEPENDENCY_DIR環境変数を使用してダウンロードおよびビルドの場所を設定し、デフォルトは現在の作業ディレクトリのdeps-downloadです。INSTALL_PREFIXはインストール場所を設定します。macOSではデフォルトのインストール場所はdeps-installですが、Linuxではシステムの場所がデフォルトです。サポートされているコンパイラの最小バージョンは、LinuxではGCC 11またはClang 15、macOSではClang 15です。READMEには推奨バージョンと代替の組み合わせも記載されています。x86 CPUの場合、最小はSSE4.2で、デフォルトはAVXです。Armの場合、Apple SiliconとLinux AArch64がサポートされています。正確なコマンドはREADMEに示されていますが、ここでは再現しません。READMEはまた、セットアップスクリプトがS3、GCS、Azure Blobファイルシステムなどのアダプタをインストールできることにも言及しています。

ビルドとテスト

ルートディレクトリでmakeを実行するとソースがコンパイルされます。開発用には、make debugで最適化されていないデバッグバージョンが、make releaseで最適化されたバージョンがビルドされます。make unittestはテストをビルドして実行します。Linux CIでは4つのテストスイートがグループ化されたバイナリを使用してリンク時間を短縮していますが、他のスイートは個別のバイナリを使用します。macOSではグループ化はデフォルトでオフになっており、LinuxではCMakeフラグ-DVELOX_ENABLE_GROUPED_TESTS=OFFで無効にできます。システム依存関係をインストールしたくない場合は、docker-composeファイルが提供されており、コンテナ内でビルドおよびテストを実行できます。コマンドはdocker-compose build ubuntu-cppやdocker-compose run --rm ubuntu-cppなどです。NUM_THREADS環境変数でビルドに使用するスレッド数を上書きできます。Veloxのビルドメトリクスは、READMEにリンクされているサイトで公開されています。

コミュニティとガバナンス

Veloxは、個人の貢献者と組織のコミュニティによってサポートされているオープンソースプロジェクトです。技術的なガバナンスの仕組みは、プロジェクトサイトのドキュメントに記載されています。メンテナーは同じサイトにリストされています。主要なコミュニケーションチャネルはVelox-OSS Slackワークスペースであり、GitHubのissueやDiscussionも使用されます。Slackワークスペースにアクセスするには、特定のGitHub Discussionにコメントを追加する必要があります。貢献ガイドはリポジトリにあります。READMEには最近のブログ記事へのリンクもあり、アロケータの比較や結合パフォーマンスなどのトピックが取り上げられています。READMEはまた、ライブラリの多くの側面を詳述する開発者ガイドを指しています。

ライセンス

VeloxはApache 2.0ライセンスの下でリリースされており、ライセンスのコピーはリポジトリに含まれています。このライセンスは、作品を複製、派生作品を作成、公に表示、実行、サブライセンス、配布するための、永続的、世界的、非独占的、無償、ロイヤリティフリー、取消不能の著作権ライセンスを付与します。また、特定の条件下での特許ライセンスも含まれています。ライセンス文書には、保証、サポート、セキュリティ保証については言及されていません。これらはライセンス自体の対象外です。READMEはVeloxがApache 2.0の下でライセンスされていると述べており、完全なテキストはLICENSEファイルにあります。

編集部の結論

Veloxは、最適化されたクエリプランを実行するためのライブラリであり、再利用可能で拡張可能な一連のコンポーネントを提供します。Apache 2.0ライセンスは広範な利用を許可し、プロジェクトはガバナンスとコミュニティチャネルを文書化しています。詳細については、リポジトリ内の開発者ガイドと例が次のステップです。

公式情報源

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

コミュニティノート