他のバージョンの文書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

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

目次

47.1. ロジカルデコーディングの例
47.2. ロジカルデコーディングのコンセプト
47.2.1. ロジカルデコーディング
47.2.2. レプリケーションスロット
47.2.3. 出力プラグイン
47.2.4. スナップショットのエクスポート
47.3. ストリームレプリケーションプロトコルインターフェイス
47.4. ロジカルデコーディングSQLインタフェース
47.5. ロジカルデコーディング関連のシステムカタログ
47.6. ロジカルデコーディングの出力プラグイン
47.6.1. 初期化関数
47.6.2. 機能
47.6.3. 出力モード
47.6.4. 出力プラグインコールバック
47.6.5. 出力生成関数
47.7. ロジカルデコーディング出力ライター
47.8. ロジカルデコーディングにおける同期レプリケーションのサポート

PostgreSQLは、SQLによって実行された更新結果を外部のコンシューマにストリーミングする基盤を提供しています。

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

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

変更データの消費は、ストリーミングレプリケーションのプロトコル(51.3. ストリーミングレプリケーションプロトコル47.3. ストリームレプリケーションプロトコルインターフェイスを参照)を使うか、SQL関数(47.4. ロジカルデコーディングSQLインタフェース)を使って行います。 また、コア部分に手を入れなくても、レプリケーションスロットの出力を消費する別の方法を実装することもできます (47.7. ロジカルデコーディング出力ライター参照)。