Azure Database for PostgreSQL フレキシブル サーバーの拡張機能とモジュール

PostgreSQL の拡張機能とモジュールは、データベース システムの機能を拡張するために使用できる強力なツールです。 単純な SQL オブジェクトから複雑なバイナリ ライブラリまで、PostgreSQL のコアディストリビューションでは使用できない追加の機能を提供します。

拡張機能

拡張機能を定義するには、拡張機能によって配布されるオブジェクトを作成するための SQL コマンドを含むスクリプト ファイル と、拡張機能自体の基本プロパティを指定する コントロール ファイル が少なくとも 1 つ必要です。

データベースに拡張機能を作成、インストール、または読み込むと、エンジンの機能を拡張することを目的としたバンドル オブジェクトのセットがデプロイされます。 これらのオブジェクトは、関数、演算子、ロール、データ型、アクセス メソッド、その他のデータベース オブジェクト型という形をとることができます。

データベースから拡張機能を削除、アンインストール、またはアンロードすると、拡張機能によって作成されたすべてのオブジェクトが削除されます。 この例外は、拡張機能によって定義されたオブジェクトのいずれかに依存関係を持つ他のオブジェクトがデータベースに存在する場合です。

SQL または PL/pgSQL の拡張機能によって配布されるオブジェクトによって提供される機能の実装を記述できます。 ただし、別の共有ライブラリ (バイナリ) ファイルに実装することもできます。これは、機能を実装するソース コード (通常は C または Rust で記述) をコンパイルした結果です。

PostgreSQL では、 CREATE EXTENSIONALTER EXTENSIONDROP EXTENSION、および COMMENT ON EXTENSION コマンドを使用して拡張機能を管理します。

  • CREATE EXTENSION は、コマンドを実行するデータベースに拡張機能を作成、インストール、または読み込みます。
  • ALTER EXTENSION は、拡張機能を新しいバージョンに更新します。
  • DROP EXTENSION コマンドを実行するデータベースから拡張機能を削除、アンインストール、またはアンロードします。
  • COMMENT ON EXTENSION は、拡張機能に関するコメントをデータベース オブジェクトとして格納します。

サーバーが起動すると、すべてのバックエンド プロセスがアクセスできるメモリ領域が定義され、ワークロードが協調的に実行されます。 PostgreSQL の専門用語では、そのメモリ領域は共有メモリと呼ばれます。

共有ライブラリを使用して機能を実装するいくつかの拡張機能では、それらのライブラリに組み込まれているコードからその共有メモリ領域にアクセスする必要があります。 これらの拡張機能にはもう 1 つの要件があります。これは、サーバーが起動するとすぐに、メイン エンジン プロセスによって共有ライブラリ ファイルを読み込む必要があるということです。 これらのライブラリの場合は、 ライブラリの読み込みの手順に従います。

モジュール

バンドルされた SQL オブジェクトをデータベースにデプロイするための コントロール ファイルスクリプト ファイル がないため、拡張機能とは見なされませんが、PostgreSQL の機能拡張の別の形式は、スタンドアロンの共有バイナリ ライブラリ ファイルに機能を実装することです。

これらのファイルは、サーバーの起動時にメモリに読み込むことができます。 通常、PostgreSQL の自然な実行パスを迂回して、エンジンの既定の機能を変更するコードを実装できます。 このような動作の変更は、通常、エンジンのいくつかの制限された機能を増幅することを目的としています。

Azure Database for PostgreSQL では、次のモジュールがサポートされています。

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json