時系列データやイベントデータを高性能にリアルタイム分析するためのPostgreSQL拡張機能。
pgcentralfoundation/pgrx
PostgreSQL拡張をRustで開発するためのフレームワーク。Postgresの複数バージョンに対応したセットアップ、実行、テスト、パッケージ化のツールを備えています。
- スター
- 4,823
- フォーク
- 342
- 未解決の Issue
- 343
- 最終コミット
- 8 日前
これは何?
pgrxは、RustでPostgreSQL拡張を開発するためのフレームワークです。Rustの関数、型、列挙型をPostgresのオブジェクトに対応付け、それらのSQLスキーマを自動生成します。そのため、拡張機能をすべてRustで実装しながら、関数やカスタム型をSQLから利用できるようにします。
cargo-pgrxサブコマンドが開発ワークフローを管理します。新しい拡張プロジェクトの作成、Postgresの各バージョンのダウンロードとビルド、拡張機能を読み込んだ対話型psqlセッションの起動、複数バージョンのPostgresを対象にしたテスト、インストール用パッケージの作成が可能です。単一のコードベースでPostgres 13〜18と19のベータ版をサポートしています。
このフレームワークは安全性を重視しています。Rustのパニックはプロセスではなくトランザクションを中断するPostgresエラーに変換され、メモリ管理にはRustのdropセマンティクスが適用されます。また、SPI、メモリコンテキスト、フック、低レベルの処理向けの生のpg_sysバインディングにもアクセスできます。
主な機能
- 01cargo-pgrxコマンドで拡張機能のひな形作成、実行、テスト、パッケージ化が可能
- 02単一のコードベースでPostgres 13〜18をサポート
- 03#[pg_extern]などのRustアノテーションからSQLスキーマを自動生成
- 04deriveマクロでカスタムPostgres型や列挙型を定義
- 05パニックを、トランザクションだけを中断するPostgresエラーに変換
- 06SPI、メモリコンテキスト、フック、生のpg_sys内部機能にアクセス
ユースケース
- RustでカスタムPostgresデータ型やインデックス関連の関数を作成する
- SQLクエリから使えるよう、RustライブラリをラップするPostgreSQL拡張を開発する
- CIで複数のPostgresメジャーバージョンを対象に拡張機能をテストする
クイックスタート
- 1
cargo-pgrx サブコマンドをインストールする
cargo install --locked cargo-pgrx - 2
PGRX のホームディレクトリを初期化する(対応する PostgreSQL のバージョンをダウンロードしてコンパイルします)
cargo pgrx init - 3
新しい拡張機能プロジェクトを作成する
cargo pgrx new my_extension - 4
psql でサンプル拡張機能を実行する
cargo pgrx run
使う前に知っておきたいこと
- プロジェクトのメタデータでライセンスが明確に指定されていないため、使用前にリポジトリのライセンスを確認してください。
- 初期化の手順では複数の PostgreSQL バージョンをダウンロードしてコンパイルするため、時間とディスク容量が必要です。
- クロスコンパイルは nix 環境でのみ実演されており、他の環境では手動で設定する必要があります。
収録されている特集
トピック
よくある質問
- pgrx とは?
- PostgreSQL拡張をRustで開発するためのフレームワーク。Postgresの複数バージョンに対応したセットアップ、実行、テスト、パッケージ化のツールを備えています。 pgrxは、RustでPostgreSQL拡張を開発するためのフレームワークです。Rustの関数、型、列挙型をPostgresのオブジェクトに対応付け、それらのSQLスキーマを自動生成します。そのため、拡張機能をすべてRustで実装しながら、関数やカスタム型をSQLから利用できるようにします。
- pgrx は無料で使えますか?ライセンスは?
- pgrx は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pgrx は今もメンテナンスされていますか?
- 活発にメンテナンス中。pgrx の最終コミットは 2026年10月30日 です。
- pgrx は何に使えますか?
- RustでカスタムPostgresデータ型やインデックス関連の関数を作成する SQLクエリから使えるよう、RustライブラリをラップするPostgreSQL拡張を開発する CIで複数のPostgresメジャーバージョンを対象に拡張機能をテストする
- pgrx のインストール方法は?
- cargo-pgrx サブコマンドをインストールする: cargo install --locked cargo-pgrx PGRX のホームディレクトリを初期化する(対応する PostgreSQL のバージョンをダウンロードしてコンパイルします): cargo pgrx init 新しい拡張機能プロジェクトを作成する: cargo pgrx new my_extension psql でサンプル拡張機能を実行する: cargo pgrx run
- pgrx はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/pgcentralfoundation/pgrx
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Node.js向けのノンブロッキングなPostgreSQLクライアント。純粋なJavaScript製ドライバーと、オプションのネイティブlibpqバインディングを提供します。
自動補完とシンタックスハイライトを備えたPostgres用コマンドラインクライアント。標準のpsqlシェルに代わる選択肢です。
PostgreSQL関連のソフトウェア、ライブラリ、ツール、拡張機能、学習リソースをまとめた、コミュニティ運営の厳選リスト。
Rust製のインプロセスSQLデータベース。SQLiteの方言、ファイル形式、C APIと互換性があり、実験的なPostgresフロントエンドも備えています。
データベースのレプリケーションストリームを使ってクエリ結果を同期し、MySQLやPostgresの前段に配置する透過的なキャッシュ。