Azure Database for PostgreSQL - Single Server の PostgreSQL 拡張機能

適用対象: Azure Database for PostgreSQL - 単一サーバー

PostgreSQL では拡張機能を使用してデータベースの機能を拡張することができます。 拡張機能により、関連する複数の SQL オブジェクトを単一のパッケージにまとめて、単一のコマンドでデータベースに対する読み込みや削除を行うことができます。 データベースに読み込まれた後、拡張機能は組み込み機能と同じように機能します。

PostgreSQL 拡張機能の使用方法

PostgreSQL 拡張機能を使用するには、その拡張機能がデータベースにインストールされている必要があります。 特定の拡張機能をインストールするには、psql ツールから CREATE EXTENSION コマンドを実行して、パッケージ化されたオブジェクトをデータベースに読み込みます。

Azure Database for PostgreSQL でサポートされる主要な拡張機能のサブセットを次に示します。 この情報は、SELECT * FROM pg_available_extensions;を実行して確認することもできます。 ここに示した以外の拡張機能はサポートされていません。 Azure Database for PostgreSQL で独自の拡張機能を作成することはできません。

Postgres 11 の拡張機能

Postgres バージョン 11 を搭載した Azure Database for PostgreSQL サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 2.5.1 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 2.5.1 Address Standardizer US データセットの例
btree_gin 1.3 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.5 GiST で一般的なデータ型のインデックスを作成するためのサポート
citext 1.5 大文字と小文字を区別しない文字列のデータ型
cube 1.4 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hstore 1.5 (キー、値) ペアのセットを格納するためのデータ型
hypopg 1.1.2 PostgreSQL の仮定のインデックス
intarray 1.2 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.2 国際対応の製品番号規格のデータ型
ltree 1.1 階層ツリー状の構造体のデータ型
orafce 3.7 商用 RDBMS から関数とパッケージのサブセットをエミュレートする関数と演算子
pgaudit 1.3.1 監査機能を提供する
pgcrypto 1.3 暗号化関数
pgrouting 2.6.2 pgRouting の拡張機能
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.5 タプルレベルの統計情報を表示する
pg_buffercache 1.3 共有バッファー キャッシュを確認する
pg_partman 4.0.0 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.2 関係データをプレウォームする
pg_stat_statements 1.6 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.4 trigram に基づくテキストの類似性の測定とインデックス検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 2.3.11 PL/JavaScript (v8) の信頼された手続き型言語
postgis 2.5.1 PostGIS ジオメトリ、地理、およびラスターの空間型と関数
postgis_sfcgal 2.5.1 PostGIS SFCGAL 関数
postgis_tiger_geocoder 2.5.1 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 2.5.1 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 1.7.4 時系列データに対するスケーラブルな挿入と複雑なクエリを可能にします
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

Postgres 10 の拡張機能

Postgres バージョン 10 を搭載した Azure Database for PostgreSQL サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 2.5.1 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 2.5.1 Address Standardizer US データセットの例
btree_gin 1.3 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.5 GiST で一般的なデータ型のインデックスを作成するためのサポート
chkpass 1.0 自動暗号化パスワードのデータ型
citext 1.4 大文字と小文字を区別しない文字列のデータ型
cube 1.2 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hstore 1.4 (キー、値) ペアのセットを格納するためのデータ型
hypopg 1.1.1 PostgreSQL の仮定のインデックス
intarray 1.2 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.1 国際対応の製品番号規格のデータ型
ltree 1.1 階層ツリー状の構造体のデータ型
orafce 3.7 商用 RDBMS から関数とパッケージのサブセットをエミュレートする関数と演算子
pgaudit 1.2 監査機能を提供する
pgcrypto 1.3 暗号化関数
pgrouting 2.5.2 pgRouting の拡張機能
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.5 タプルレベルの統計情報を表示する
pg_buffercache 1.3 共有バッファー キャッシュを確認する
pg_partman 2.6.3 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.1 関係データをプレウォームする
pg_stat_statements 1.6 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.3 trigram に基づくテキストの類似性の測定とインデックス検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 2.1.0 PL/JavaScript (v8) の信頼された手続き型言語
postgis 2.4.3 PostGIS ジオメトリ、地理、およびラスターの空間型と関数
postgis_sfcgal 2.4.3 PostGIS SFCGAL 関数
postgis_tiger_geocoder 2.4.3 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 2.4.3 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 1.7.4 時系列データに対するスケーラブルな挿入と複雑なクエリを可能にします
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

Postgres 9.6 の拡張機能

Postgres バージョン 9.6 を搭載した Azure Database for PostgreSQL サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 2.3.2 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 2.3.2 Address Standardizer US データセットの例
btree_gin 1.0 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.2 GiST で一般的なデータ型のインデックスを作成するためのサポート
chkpass 1.0 自動暗号化パスワードのデータ型
citext 1.3 大文字と小文字を区別しない文字列のデータ型
cube 1.2 多次元キューブのデータ型
dblink 1.2 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
earthdistance 1.1 地表面上の大圏距離を計算する
fuzzystrmatch 1.1 文字列間の類似点と相違点を特定する
hstore 1.4 (キー、値) ペアのセットを格納するためのデータ型
hypopg 1.1.1 PostgreSQL の仮定のインデックス
intarray 1.2 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.1 国際対応の製品番号規格のデータ型
ltree 1.1 階層ツリー状の構造体のデータ型
orafce 3.7 商用 RDBMS から関数とパッケージのサブセットをエミュレートする関数と演算子
pgaudit 1.1.2 監査機能を提供する
pgcrypto 1.3 暗号化関数
pgrouting 2.3.2 pgRouting の拡張機能
pgrowlocks 1.2 行レベルのロック情報を表示する
pgstattuple 1.4 タプルレベルの統計情報を表示する
pg_buffercache 1.2 共有バッファー キャッシュを確認する
pg_partman 2.6.3 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.1 関係データをプレウォームする
pg_stat_statements 1.4 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.3 trigram に基づくテキストの類似性の測定とインデックス検索
plpgsql 1.0 PL/pgSQL 手続き型言語
plv8 2.1.0 PL/JavaScript (v8) の信頼された手続き型言語
postgis 2.3.2 PostGIS ジオメトリ、地理、およびラスターの空間型と関数
postgis_sfcgal 2.3.2 PostGIS SFCGAL 関数
postgis_tiger_geocoder 2.3.2 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 2.3.2 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
timescaledb 1.7.4 時系列データに対するスケーラブルな挿入と複雑なクエリを可能にします
unaccent 1.1 アクセントを削除するテキスト検索辞書
uuid-ossp 1.1 汎用一意識別子 (UUID) を生成する

Postgres 9.5 の拡張機能

Note

PostgreSQL バージョン 9.5 は廃止されました。

Postgres バージョン 9.5 を搭載した Azure Database for PostgreSQL サーバーでは、次の拡張機能を使用できます。

拡張子 拡張機能のバージョン 説明
address_standardizer 2.3.0 構成要素へのアドレスの解析に使用されます。
address_standardizer_data_us 2.3.0 Address Standardizer US データセットの例
btree_gin 1.0 GIN で一般的なデータ型のインデックスを作成するためのサポート
btree_gist 1.1 GiST で一般的なデータ型のインデックスを作成するためのサポート
chkpass 1.0 自動暗号化パスワードのデータ型
citext 1.1 大文字と小文字を区別しない文字列のデータ型
cube 1.0 多次元キューブのデータ型
dblink 1.1 データベース内から他の PostgreSQL データベースに接続する
dict_int 1.0 整数のテキスト検索辞書テンプレート
earthdistance 1.0 地表面上の大圏距離を計算する
fuzzystrmatch 1.0 文字列間の類似点と相違点を特定する
hstore 1.3 (キー、値) ペアのセットを格納するためのデータ型
hypopg 1.1.1 PostgreSQL の仮定のインデックス
intarray 1.0 整数の 1 次元配列に対する関数、演算子、およびインデックスのサポート
isn 1.0 国際対応の製品番号規格のデータ型
ltree 1.0 階層ツリー状の構造体のデータ型
orafce 3.7 商用 RDBMS から関数とパッケージのサブセットをエミュレートする関数と演算子
pgaudit 1.0.7 監査機能を提供する
pgcrypto 1.2 暗号化関数
pgrouting 2.3.0 pgRouting の拡張機能
pgrowlocks 1.1 行レベルのロック情報を表示する
pgstattuple 1.3 タプルレベルの統計情報を表示する
pg_buffercache 1.1 共有バッファー キャッシュを確認する
pg_partman 2.6.3 時刻または ID によってパーティション テーブルを管理するための拡張機能
pg_prewarm 1.0 関係データをプレウォームする
pg_stat_statements 1.3 実行されたすべての SQL ステートメントの実行統計情報を追跡する
pg_trgm 1.1 trigram に基づくテキストの類似性の測定とインデックス検索
plpgsql 1.0 PL/pgSQL 手続き型言語
postgis 2.3.0 PostGIS ジオメトリ、地理、およびラスターの空間型と関数
postgis_sfcgal 2.3.0 PostGIS SFCGAL 関数
postgis_tiger_geocoder 2.3.0 PostGIS Tiger ジオコーダとリバース ジオコーダ
postgis_topology 2.3.0 PostGIS トポロジの空間型と関数
postgres_fdw 1.0 リモート PostgreSQL サーバー用の外部データ ラッパー
tablefunc 1.0 クロス集計を含む、テーブル全体を操作する関数
unaccent 1.0 アクセントを削除するテキスト検索辞書
uuid-ossp 1.0 汎用一意識別子 (UUID) を生成する

pg_stat_statements

pg_stat_statements 拡張機能は、すべての Azure Database for PostgreSQL サーバーにプリロードされ、SQL ステートメントの実行統計情報を追跡する手段が提供されています。 ステートメントをコントロールする設定pg_stat_statements.trackは、拡張機能と既定値によってtopにカウントされ、クライアントが直接発行したすべてのステートメントがすべて追跡されます。 その他の 2 つの追跡レベルはnoneallです。 この設定は、Azure portalまたはAzure CLIを通じてサーバーのパラメーターとして構成可能です。

各 SQL ステートメントをログに記録する時はPg_stat_statements が提供するクエリの実行情報とサーバーのパフォーマンスに与える影響にトレードオフがあります。 pg_stat_statements 拡張機能を使用していない場合、pg_stat_statements.tracknoneに設定することをお勧めします。 一部のサード パーティ監視サービスがクエリ パフォーマンスの分析情報を実行するために Pg_stat_statements に依存することがありますので、そのようなケースに該当するかどうかを確認してください。

dblink および postgres_fdw を使用して、1 つの PostgreSQL サーバーから別のサーバーに、または同一サーバー内の別のデータベースに接続できます。 受信側サーバーでは、ファイアウォールを経由した送信元サーバーからの接続を許可している必要があります。 これらの拡張機能を使用して Azure Database for PostgreSQL サーバー間を接続する場合、[Azure サービスへのアクセスを許可] を [オン] に設定することで実現できます。 拡張機能を使用して同じサーバーにループバックする場合にも、これは必要になります。 [Azure サービスへのアクセスを許可] 設定は、Postgres サーバー向けの Azure portal ページ内の [接続のセキュリティ ] の下にあります。 [Azure サービスへのアクセスを許可] を [オン] にすると、すべての Azure IP が許可リストに設定されます。

注意

現在、postgres_fdwなどの外部データ ラッパー拡張機能を使用した Azure Database for PostgreSQLからの送信接続は、同じ Azure リージョン内の Azure Database for PostgreSQLの接続を除き、サポートされていません。

uuid

uuid-ossp 拡張機能uuid_generate_v4() を使用する予定の場合、パフォーマンス上の利点について、pgcrypto 拡張機能gen_random_uuid() と比較することを検討してください。

pgAudit

pgAudit 拡張機能では、セッションとオブジェクトの監査ログが提供されます。 Azure Database for PostgreSQL でこの拡張機能を使用する方法については、監査の概念に関する記事を参照してください。

pg_prewarm

pg_prewarm 拡張機能により、リレーショナル データがキャッシュに読み込まれます。 キャッシュをプレウォームすると、再起動後に最初に実行したときのクエリの応答時間が向上します。 Postgres 10 以降では、プレウォームは prewarm 関数を使用して手動で実行されます。

Postgres 11 以降では、プレウォームが自動的に発生するように構成することができます。 shared_preload_libraries パラメーターの一覧に pg_prewarm を含め、サーバーを再起動して変更を適用する必要があります。 パラメーターは、Azure portalCLI、REST API、または ARM テンプレートから設定できます。

TimescaleDB

TimescaleDB は、PostgreSQL の拡張機能としてパッケージされた時系列データベースです。 TimescaleDB は、時間指向の分析関数、最適化を提供し、時系列ワークロードに合わせて PostgreSQL を拡大縮小します。

Timescale, Inc.の登録商標であるTimescaleDBの詳細をご覧ください。 Azure Database for PostgreSQL には、TimescaleDB Apache-2 エディションが用意されています。

TimescaleDB をインストールする

TimescaleDB をインストールするには、それをサーバーの共有プリロード ライブラリに含める必要があります。 Postgres の shared_preload_libraries パラメーターへの変更を有効にするには、shared_preload_librariesが必要です。 Azure portal または Azure CLI を使用してパラメーターを変更できます。

Azure portal を使用して以下を実行します。

  1. Azure Database for PostgreSQL サーバーを選択します。

  2. サイドバーから、 [サーバー パラメーター] を選択します。

  3. shared_preload_libraries パラメーターを検索します。

  4. [TimescaleDB] を選択します。

  5. [保存] を選択して変更を保存します。 変更が保存されると通知を受け取ります。

  6. 通知後、サーバーを再起動してこれらの変更を適用します。 サーバーを再起動する方法については、Azure Database for PostgreSQL サーバーの再起動に関するページを参照してください。

次に、Postgres データベースで TimescaleDB を有効にすることができます。 データベースに接続して、以下のコマンドを実行します。

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

ヒント

エラーが表示される場合は、shared_preload_libraries を保存した後にサーバーを再起動したことを確認します。

次に、一から TimescaleDB ハイパーテーブルを作成するか、PostgreSQL 内の既存の時系列データを移行することができます。

pg_dump と pg_restore を使用したタイムスケール データベースの復元

Pg_dump と pg_restore を使用してタイムスケールデータベースを復元するには、次の2つのヘルパープロシージャをデータベースで実行する必要があります:timescaledb_pre_restore()timescaledb_post restore()

まず、コピー先データベースを指定します:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database 
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

これで、元のデータベースで pg_dump を実行し、pg_restore を実行することができます。 復元後、復元されたデータベースで、必ず次のコマンドを実行します:

SELECT timescaledb_post_restore();

タイムスケールが有効なデータベースを使った復元方法の詳細については、タイムスケールのドキュメントを参照してください

timescaledb-backup を使用したタイムスケール データベースの復元

上記のSELECT timescaledb_post_restore()手順の実行中、timescaledb.restoring フラグを更新するときに、アクセス許可の拒否エラーを受け取ることがあります。 これは、Cloud PaaS データベース サービスの ALTER DATABASE 権限が限られているためです。 この場合は、timescaledb-backup ツールを使用して、タイムスケール データベースをバックアップおよび復元する別の方法を実行できます。 Timescaledb-backup は、TimescaleDB データベースをダンプおよび復元するためのプログラムであり、よりシンプルで、エラーが発生しにくく、よりパフォーマンスが向上します。 これを行うには、次の手順を実行します

  1. ツールをインストールする (詳細はこちら)
  2. ターゲットの Azure Database for PostgreSQL サーバーとデータベースを作成する
  3. 上記のように、タイムスケール拡張機能を有効にする
  4. azure_pg_admin ロールを、ts-restore によって使用されるユーザーに付与する
  5. ts-restore を実行してデータベースを復元する

これらのユーティリティの詳細については、こちらを参照してください。

Note

timescale-backup ユーティリティを使用して Azure に復元する場合、柔軟性のない Azure Database For PostgresQL のデータベース ユーザー名は <user@db-name> 形式を使用する必要があるため、@%40 文字エンコードに置き換える必要があります。

次のステップ

使用する拡張機能が見つからない場合は、お知らせください。 フィードバック フォーラムで、既存のリクエストに投票することや、新しいフィードバック リクエストを作成することができます。