目次
PostgreSQLは、SQLによって実行された更新結果を外部のコンシューマにストリーミングする基盤を提供しています。
更新結果はロジカルレプリケーションスロット(logical replication slots)で識別され、ストリームに送出されます。 各々のストリームは、厳密に一度だけそれぞれの更新を送出します。
ストリームに送出される更新データのフォーマットは、使用するプラグインで決まります。
サンプルプラグインがPostgreSQLの配布物に含まれています。
追加のプラグインを書くことにより、PostgreSQLのコア部分のコードを一切変更することなく、利用可能なフォーマットの選択肢を増やすことができます。
すべてのプラグインから、
INSERT
によって作成された個々の新しい行と、UPDATE
によって作成された新しい個々の行のバージョンにアクセスできます。
UPDATE
とDELETE
によって古いバージョンの行へのアクセスが可能かどうかは、
レプリカエンティティ(replica entity)の設定によって決まります(REPLICA IDENTITY
参照)。
変更データの消費は、ストリーミングレプリケーションのプロトコル(「ストリーミングレプリケーションプロトコル」と 「ストリームレプリケーションプロトコルインターフェイス」を参照)を使うか、SQL関数(「ロジカルデコーディングSQLインタフェース」)を使って行います。 また、コア部分に手を入れなくても、レプリケーションスロットの出力を消費する別の方法を実装することもできます (「ロジカルデコーディング出力ライター」参照)。