Azure Database for PostgreSQL - Single Server の PostgreSQL 拡張機能
適用対象: Azure Database for PostgreSQL - 単一サーバー
重要
Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for 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 つの追跡レベルはnone
とall
です。 この設定は、Azure portalまたはAzure CLIを通じてサーバーのパラメーターとして構成可能です。
各 SQL ステートメントをログに記録する時はPg_stat_statements が提供するクエリの実行情報とサーバーのパフォーマンスに与える影響にトレードオフがあります。 pg_stat_statements 拡張機能を使用していない場合、pg_stat_statements.track
をnone
に設定することをお勧めします。 一部のサード パーティ監視サービスがクエリ パフォーマンスの分析情報を実行するために Pg_stat_statements に依存することがありますので、そのようなケースに該当するかどうかを確認してください。
dblink および postgres_fdw
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 portal、CLI、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 を使用して以下を実行します。
Azure Database for PostgreSQL サーバーを選択します。
サイドバーから、 [サーバー パラメーター] を選択します。
shared_preload_libraries
パラメーターを検索します。[TimescaleDB] を選択します。
[保存] を選択して変更を保存します。 変更が保存されると通知を受け取ります。
通知後、サーバーを再起動してこれらの変更を適用します。 サーバーを再起動する方法については、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 データベースをダンプおよび復元するためのプログラムであり、よりシンプルで、エラーが発生しにくく、よりパフォーマンスが向上します。
これを行うには、次の手順を実行します
- ツールをインストールする (詳細はこちら)
- ターゲットの Azure Database for PostgreSQL サーバーとデータベースを作成する
- 上記のように、タイムスケール拡張機能を有効にする
- azure_pg_admin ロールを、ts-restore によって使用されるユーザーに付与する
- ts-restore を実行してデータベースを復元する
これらのユーティリティの詳細については、こちらを参照してください。
Note
timescale-backup
ユーティリティを使用して Azure に復元する場合、柔軟性のない Azure Database For PostgresQL のデータベース ユーザー名は <user@db-name>
形式を使用する必要があるため、@
を %40
文字エンコードに置き換える必要があります。
次のステップ
使用する拡張機能が見つからない場合は、お知らせください。 フィードバック フォーラムで、既存のリクエストに投票することや、新しいフィードバック リクエストを作成することができます。