AWSは先日、RDS for PostgreSQLで利用可能なpgactiveの一般提供を発表した。このPostgreSQL用レプリケーション拡張は、データベースインスタンス間のストリーミングデータの非同期アクティブ-アクティブレプリケーションをサポートし、復元性と柔軟性を強化する。
オープンソースの BDRプロジェクトに基づき、pgactiveはノードの同期、レプリケーションの遅延メトリクス、さまざまな自動競合解決策(最終更新の勝ち、最初の更新の勝ち、カスタマイズ可能なルールなど)を提供する。
最大16のライターインスタンスをサポートする非同期アクティブ-アクティブレプリケーションは、最終的な一貫性のために設計されたアプリケーションが2つ以上のRDSインスタンスに書き込むことを可能にし、異なるデータベース操作を通して可用性を維持し、複数のリージョンに分散したワークロードの書き込み待ち時間を短縮する。AWSのプリンシパルプロダクトマネージャーであるJonathan Katz氏は次のように説明している。
アクティブ-アクティブレプリケーションの基本的な構成要素は論理レプリケーションです。論理レプリケーションでは、ターゲットデータベースに適用する前に、外部システムが変更を解釈できるようなデータ形式を使用します。これにより、ターゲットシステムは書き込みの競合を検出して解決したり、ステートメントをターゲットデータベースソフトウェアでサポートされるものに変換したりといった追加アクションの実行が可能になります。
デフォルトでは、拡張機能はすべての競合をログに記録し、最新のタイムスタンプを持つトランザクションからの変更を受け入れる、最終更新の勝ち戦略を使用する。Mydbopsのデータベース管理エンジニアであるAakash Muthuramalingam氏は以下のようにコメントしている。
AWSは、PostgreSQLユーザーにとって画期的な機能を発表しました(…)このイノベーションは、データベースのレプリケーションに画期的なアプローチを導入し、比類ないレベルのパフォーマンス、耐障害性、拡張性を実現します。
非同期のアクティブ-アクティブレプリケーションの展開では、複数のデータベースが変更を受け入れて他のノードに複製できるため、クラスタは単一の信頼できるソースを持たない。そのため、Katz氏はこのように警告している。
pgactiveは、すべてのアプリケーションに対応するソリューションではありません。アクティブ-アクティブデータベースクラスターにpgactiveを使用するアプリケーションは、安全に運用できるように具体的な設計上の決定をしなければいけません。書き込みトラフィックを単一のpgactiveインスタンスにルーティングする場合でも、アプリケーションがアクティブ-アクティブレプリケーショントポロジーをサポートするよう設計されていることを確認する必要があります。
昨年RDS for PostgreSQLは、pgvector、plrust、h3-pg、hypopg、tcn、segを含む他の拡張機能のサポートを導入し、カスタムデータ型を扱うためにpg_tleの新しいアップデートを行った。Amazonは最近、それらのチームのオープンソースデータベースへの貢献を強調したが、コミュニティはもっと説得力を必要としており、一部の開発者はpgactiveがオープンソース化されるかどうかを疑問視している。
この拡張機能は、すべてのAWSリージョンでPostgreSQL 15.4-R2以降を実行しているデータベースインスタンスで利用可能だ。この機能を有効にするには、DBパラメータグループでrds.enable_pgactiveパラメータを1に設定する必要がある。データベースに拡張機能を作成すると、自動的にrds.logical_replicationと track_commit_timestampが有効になり、wal_levelがlogicalに設定される。