目次
PostgreSQL provides infrastructure to stream the modifications performed via SQL to external consumers. This functionality can be used for a variety of purposes, including replication solutions and auditing. PostgreSQLは、SQLによって実行された更新結果を外部の消費者にストリーミングする基盤を提供しています。 この機能は、レプリケーションソリューションや監査など、さまざまな目的に使用できます。
Changes are sent out in streams identified by logical replication slots. 更新結果は、ロジカルレプリケーションスロット(logical replication slots)で識別されるストリームに送出されます。
The format in which those changes are streamed is determined by the output
plugin used. An example plugin is provided in the PostgreSQL distribution.
Additional plugins can be
written to extend the choice of available formats without modifying any
core code.
Every output plugin has access to each individual new row produced
by <command>INSERT</command> and the new row version created
by <command>UPDATE</command>. Availability of old row versions for
<command>UPDATE</command> and <command>DELETE</command> depends on
the configured replica identity (see <xref linkend="sql-altertable-replica-identity"/>).
ストリームに送出される更新データのフォーマットは、使用する出力プラグインで決まります。
サンプルプラグインがPostgreSQLの配布物に含まれています。
追加のプラグインを書くことにより、PostgreSQLのコア部分のコードを一切変更することなく、利用可能なフォーマットの選択肢を増やすことができます。
すべての出力プラグインから、INSERT
によって作成された個々の新しい行と、UPDATE
によって作成された新しいバージョンの行にアクセスできます。
UPDATE
とDELETE
によって生じた古いバージョンの行へのアクセスが可能かどうかは、レプリカアイデンティティ(replica identity)の設定によって決まります(REPLICA IDENTITY
参照)。
Changes can be consumed either using the streaming replication protocol (see <xref linkend="protocol-replication"/> and <xref linkend="logicaldecoding-walsender"/>), or by calling functions via SQL (see <xref linkend="logicaldecoding-sql"/>). It is also possible to write additional methods of consuming the output of a replication slot without modifying core code (see <xref linkend="logicaldecoding-writer"/>). 変更データの消費は、ストリーミングレプリケーションのプロトコル(53.4と47.3を参照)を使うか、SQLを使って関数を呼び出します(47.4を参照)。 また、コア部分に手を入れなくても、レプリケーションスロットの出力を消費する別の方法を実装することもできます(47.7参照)。