第9回では、Azure Database for PostgreSQL (シングル サーバー、フレキシブル サーバー) に対して、Azure 仮想マシン上のスクリプト (PowerShell) から Azure AD 認証によりセッションを確立するための方法に関する内容をまとめてみました。
今回は、Azure Database for PostgreSQL の シングルサーバー、フレキシブル サーバーの比較を、自分の整理も兼ねて、まとめてみようと思います。
Azure Database for PostgreSQL のデプロイ モデルについて
Azure Database for PostgreSQL では、次の 3つのデプロイ モードで利用することができます。
- シングル サーバー
- フレキシブル サーバー )
- ハイパースケール (Citus)
今回は、Azure Database for PostgreSQL シングル サーバーとフレキシブル サーバーについて比較してみようと思いますが、簡単に ハイパースケール (Citus) について紹介します。
Azure Database for PostgreSQL ハイパースケール (Citus)
シャーディングを使用して複数のマシン間でクエリを水平にスケーリングし、複数のマシン上で一つのクエリを並列で実行することが可能なデプロイ モードになります。
複数のマシン上で一つのクエリを並列で実行することが可能となるため、大規模なデータ セット (数十テラバイト以上) に対して高スループットを必要とするようなアプリケーションに最適なデプロイ モードになります。
しかしながら、現在 (2022年7月時点)、同一Azure可用性ゾーン内による高可用性 (HA) 構成を組むことはできますが、Azure可用性ゾーンを跨ぐゾーン冗長構成、リージョン間を跨ぐDR構成を組むことが現時点ではできないため、単一ゾーン障害が発生したとしても業務を継続させる必要がある場合は、別リージョンに新しい Azure Database for PostgreSQL ハイパースケール をデプロイし、別途データを同期するような仕組みを検討する必要があるかもしれません。
シングル サーバー、フレキシブル サーバー 比較
2021年11月時点の情報より、Azure Database for PostgreSQL シングル サーバーとフレキシブル サーバーの比較表を作成してみました。
※ 今後、機能拡張などがあった場合は、以下の比較表を更新していこうと思います。
機能 (全般)
機能 (全般) | シングル サーバー | フレキシブル サーバー |
---|---|---|
一般公開 | 〇 |
〇 |
基盤OS | Windows Server | Linux |
選択可能な バージョン |
10, 11 | 11, 12, 13, 14 |
高可用性 (ゾーン冗長) |
× | 〇 |
サーバーの停止/起動 | × | 〇 |
メンテナンス ウィンドウ |
× |
〇 ※ 特定の曜日で開始時刻を 1時間の範囲で指定可能 |
読み取りレプリカ | 〇 |
× ※ 論理レプリケーション機能 を利用可能 |
接続プール | × |
〇 ※組み込み PgBouncer を利用可能 |
メジャーバージョンのアップグレード | × |
× ※ 新しいメジャーバージョンの フレキシブル サーバーをデプロイし、Azure Database Migration Service (DMS)、pg_dump などでデータ移行を実施 |
マイナーバージョンのアップグレード | 〇 |
〇 |
機能 (接続)
Azure Database for PostgreSQL フレキシブル サーバーでは、組み込みの接続プール (PgBouncer) を使用することが可能 (TCP 6432 ポート利用) であり、最大接続数も シングル サーバーよりも多く、最大接続数をパラメータ max_connections により制御も可能となっている。
機能 (接続) | シングル サーバー | フレキシブル サーバー |
---|---|---|
接続ポート | 5432 (TCP) |
5432 (TCP: DB) 6432 (TCP: PgBouncer) |
最大接続数 |
1982 | 5000 |
最大接続数の制限 |
× |
〇 ※ max_connections パラメータ使用 |
機能 (レプリケーション)
Azure Database for PostgreSQL フレキシブル サーバーでは、PostgreSQL ネイティブのレプリケーション (ロジカル レプリケーション、ストリーミング レプリケーション) を使用することが可能となっており、他のリージョン上の PostgreSQL などに対して、レプリケーション設定することが可能となっている。
・ ロジカル レプリケーション : データベース、テーブル単位のレプリケーションが可能であり、異なるOS 間、異なるメジャーバージョン間のレプリケーションが可能。 (SQL Server で言えば、レプリケーションのような機能でしょうか。)
・ ストリーミング レプリケーション : データベース クラスタ単位のレプリケーションが可能であり、同一OS間、同一メジャーバージョン間でのみ利用可能。(SQL Server で言えば、ミラーリング、可用性グループのような機能でしょうか。)
機能 (レプリケーション) | シングル サーバー | フレキシブル サーバー |
---|---|---|
論理デコード | 〇 |
〇 |
ネイティブ ロジカル レプリケーション |
× | 〇 |
PgLogical 拡張機能 (ストリーミング レプリケーション) |
× | 〇 |
機能 (コンピューティング/ストレージ)
機能 (コンピューティング /ストレージ) |
シングル サーバー | フレキシブル サーバー |
---|---|---|
コンピューティング レベル |
Basic General Purpose Memory Optimized |
Burstable General Purpose Memory Optimized |
最大ストレージサイズ |
1 TB (Basic) 4 TB or 16 TB (GP, MO) |
16 TB |
最大IOPS |
最大 20K (GP, MO) | 最大 20K |
まとめ
今回は、Azure Database for PostgreSQL の シングルサーバー、フレキシブル サーバーの比較を、自分の整理も兼ねて、まとめてみました。
Azure Database for PostgreSQL フレキシブル サーバーが一般公開 (GA) されたため、Amazon RDS for PostgreSQL のマルチAZ 構成と同様に、Azure ゾーンを跨ぐ高可用性構成 (ゾーン冗長) を実現することができるようになりました。
また、同一ゾーン内に同期スタンバイを配置することができるようなったため、ゾーン間のデータ同期によるレイテンシーを軽減したい場合、可用性ゾーンが1つしかないリージョンにおいても高可用性構成を実現したい場合などに対応できるようになったのは嬉しいですね。
※ 2022年7月現在