LinuCレベル4 システムアーキテクト 可用性の設計 問25
可用性の設計/データレプリケーションと災害対策本番のPostgreSQLデータベースに含まれる売上・在庫・請求の3テーブルのデータを、リアルタイムに分析用の別DBサーバーへ複製する仕組みを設計している。ストリーミングレプリケーションではなくロジカルレプリケーションを採用する主な理由として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)
- Aストリーミングレプリケーションは同期モードでしか動作せず、ネットワーク遅延が大きい遠隔地の分析DBへのデータ配信には使えない
- Bロジカルレプリケーションでは分析DBからの更新が本番DBへ自動的に反映されるため、双方向のデータ同期が自動で確立される
- CロジカルレプリケーションはWALのSQL変換オーバーヘッドがなく、ストリーミングレプリケーションより本番DBへのCPU負荷が低い
- Dロジカルレプリケーションは複製するテーブルをパブリケーションで選択でき、分析DB側に追加したインデックスや集計テーブルが本番DBに影響しない
正解:D
解説
ストリーミングレプリケーションはWALをブロックレベルでクラスタ全体に適用するため、特定のテーブルだけを選んで複製したり、サブスクライバー側に本番とは異なるスキーマ構造を持たせたりすることはできません。ロジカルレプリケーションはパブリケーションで複製対象テーブルを指定でき、サブスクライバーは独立した書き込みやインデックス追加が可能です。なお、ストリーミングレプリケーションは非同期モードも使用でき、ロジカルレプリケーションのWALデコードは追加のCPUオーバーヘッドを伴い、双方向同期は自動では行われません。
選択肢ごとの解説
- A誤り。ストリーミングレプリケーションは非同期モードでも動作し、遠隔地への非同期配信に使えます。
- B誤り。PostgreSQLのロジカルレプリケーションは一方向が基本です。サブスクライバーへの書き込みは自動的に本番DBへ反映されません。
- C誤り。ロジカルレプリケーションはWALをSQL相当の変更イベントにデコードするため、ストリーミングより本番DBのCPUオーバーヘッドが大きくなります。
- D正しい。ロジカルレプリケーションはテーブルを選んで複製でき、分析DB側で独自のインデックス追加や集計テーブルの作成も本番DBに影響しません。