Using extensions with PGD
=========================

PGDおよびその他のPostgreSQL拡張機能
-----------------------------------

PGDは、PostgreSQL拡張機能として実装されています
 
`Supported Postgres database servers <https://www.enterprisedb.com/docs/pgd/latest/overview/compatibility/>`_ を参照してください。
PostgreSQLの拡張性と柔軟性を利用して、低レベルのシステムの動作を変更して、マルチマスターレプリケーションを提供します。

原則として、コミュニティPostgreSQL、 EDB Postgres Advanced
Serverが提供する拡張機能、およびサードパーティの拡張機能はPGDで使用できます。ただし、
PGDの分散的な性質は、選択してインストールする拡張機能を注意深く検討および計画する必要があることを意味します。

論理デコーディングを提供する拡張機能
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

`wal2json <https://github.com/eulerto/wal2json>`_ などの論理デコードを提供する拡張機能は、理論的にはPGDで動作すると考えられます。ただし、フェイルオーバーはサポートされていないため、このような拡張機能から読み取られるWALストリームが中断される可能性があることを意味します。

レプリケーションまたはHA機能を提供する拡張機能
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

レプリケーションまたはHA
/フェールオーバーに関連する機能でPostgreSQLを拡張する拡張機能は、PGDでうまく動作する可能性が低く、
PGDクラスターの状態に悪影響を与える可能性があります。これらは避けることをお勧めします。

サポートされている拡張機能
--------------------------

これらの拡張機能はPGDによって明示的にサポートされています。

EDB Advanced Storageテーブルのアクセス方法
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

:ref:`EDB Advanced Storage Pack <Using extensions with PGD>` は、拡張機能として実装されるテーブルアクセス方法TAMの選択を提供します。次のTAMは、PGDでの使用が認定されています。

- :ref:`Autocluster <Using extensions with PGD>` 

- :ref:`Refdata <Using extensions with PGD>` 

詳細については、 :ref:`Use of table access methods (TAMs) in PGD <Use of table access methods (TAMs) in PGD>` を参照してください。

pgaudit
^^^^^^^

PGDは、 `pgaudit <https://www.pgaudit.org/>`_ 拡張機能との互換性を確保するために変更されました。構成情報については、
:ref:`Postgres設定 <Postgres設定>` を参照してください。

拡張機能のインストール
----------------------

PostgreSQL拡張機能は、ファンクション、データ型、およびオプションで1つ以上の共有ライブラリなどのSQLオブジェクトを提供します。拡張機能をインストールして使用する前に、これらをPostgreSQLバックエンドにロードする必要があります。

..  Warning::
   関連する拡張機能パッケージは、クラスター内のすべてのノードで利用できる必要があります。そうしないと、拡張機能のインストールが失敗し、クラスターの安定性に影響を与える可能性があります。

`Trusted Postgres Architect <https://www.enterprisedb.com/docs/tpa/latest/>`_ を使用してPGDが展開されている場合、そのツールを使用して拡張機能を構成します。詳細については、
`Adding Postgres extensions <https://www.enterprisedb.com/docs/tpa/latest/reference/postgres_extension_configuration>`_ を参照してください。

以下は、手動で構成されたPGDインストールに関連します。

shared_preload_librariesの構成
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

拡張機能が共有ライブラリを提供する場合、拡張機能をインストールする前にこのライブラリを `shared_preload_libraries <https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SHARED-PRELOAD-LIBRARIES>`_ 構成パラメーターに含めます。

``shared_preload_libraries``
は、拡張機能名のコンマ区切りのリストで構成されます。 ``bdr``
を含める必要があります。通常、他の拡張機能を指定する順序は重要ではありません。

``CREATE EXTENSION``
で拡張機能をインストールする前に、クラスター内のすべてのノードで\ ``shared_preload_libraries``
を構成します。新しい構成をアクティブにするには、PostgreSQLを再起動する必要があります。

:ref:`Postgres設定 <Postgres設定>`  も参照してください。

.. _拡張機能のインストール-1:

拡張機能のインストール
^^^^^^^^^^^^^^^^^^^^^^

``CREATE EXTENSION``
コマンドを使用して拡張機能をインストールします。これは、クラスター内の1つのノードでのみ行う必要があります。
PGDのDDLレプリケーションは、他のすべてのノードに伝播します。

..  Warning::
   `CREATE EXTENSION` を実行する前にDDLレプリケーションを無効にするなど、各ノードに拡張機能を手動でインストールしようとしないでください。

``bdr.replicate_ddl_command()``
などのコマンドを使用して\ ``CREATE EXTENSION`` を実行しないでください。
