他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

第49章 ロジカルデコーディング

目次

49.1. ロジカルデコーディングの例
49.2. ロジカルデコーディングのコンセプト
49.2.1. ロジカルデコーディング
49.2.2. レプリケーションスロット
49.2.3. 出力プラグイン
49.2.4. スナップショットのエクスポート
49.3. ストリーミングレプリケーションプロトコルインタフェース
49.4. ロジカルデコーディングSQLインタフェース
49.5. ロジカルデコーディング関連のシステムカタログ
49.6. ロジカルデコーディングの出力プラグイン
49.6.1. 初期化関数
49.6.2. 機能
49.6.3. 出力モード
49.6.4. 出力プラグインコールバック
49.6.5. 出力生成関数
49.7. ロジカルデコーディング出力ライタ
49.8. ロジカルデコーディングにおける同期レプリケーションのサポート
49.8.1. 概要
49.8.2. 警告
49.9. ロジカルデコーディングための大規模トランザクションのストリーミング
49.10. ロジカルデコーディングための2相コミット

PostgreSQLは、SQLによって実行された更新結果を外部のコンシューマにストリーミングする基盤を提供しています。 この機能は、レプリケーションソリューションや監査など、さまざまな目的に使用できます。

更新結果は、ロジカルレプリケーションスロット(logical replication slots)で識別されるストリームに送出されます。

ストリームに送出される更新データのフォーマットは、使用する出力プラグインで決まります。 サンプルプラグインがPostgreSQLの配布物に含まれています。 追加のプラグインを書くことにより、PostgreSQLのコア部分のコードを一切変更することなく、利用可能なフォーマットの選択肢を増やすことができます。 すべての出力プラグインから、INSERTによって作成された個々の新しい行と、UPDATEによって作成された新しいバージョンの行にアクセスできます。 UPDATEDELETEによって生じた古いバージョンの行へのアクセスが可能かどうかは、レプリカアイデンティティ(replica identity)の設定によって決まります(REPLICA IDENTITY参照)。

変更データの消費は、ストリーミングレプリケーションのプロトコル(55.449.3を参照)を使うか、SQLを使って関数を呼び出します(49.4を参照)。 また、コア部分に手を入れなくても、レプリケーションスロットの出力を消費する別の方法を実装することもできます(49.7参照)。