Amazon RDS のデータベースプレビュー環境で PostgreSQL 15 RC2 を評価出来るようになりました

2022.10.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

今朝のアップデートで Amazon RDS のデータベースプレビュー環境で PostgreSQL 15 RC2 がついに選択出来るようになりました。

早速試してみましょう。

RDS のメジャーバージョンリリースのタイミング

まず Amazon RDS のメジャーバージョンのリリースポリシーですがこれは以下の FAQ に方針が記載されています。

Amazon RDS では、新しいバージョンの DB エンジンのサポートガイドラインが提供されますか?
Amazon RDS では、メジャーとマイナーのデータベースエンジンの新しいバージョンが徐々に追加されます。サポートされる新しいバージョンの数は、エンジンのベンダーや開発組織からのリリースやパッチの頻度とその内容、および AWS のデータベースエンジニアリングチームのリリースおよびパッチの診断結果により異なります。ただし、一般的なガイダンスとして、AWS では、一般公開から 5 か月以内に新しいバージョンのエンジンをサポートできるよう取り組んでいます。

データベースエンジンの新しいバージョンが出てから 5 ヶ月以内に対応するように頑張りますというガイダンスとされています。
実際に過去では以下のようなスケジュールでリリースされています。

メジャバージョン 初期リリース RDS でのサポート開始
PostgreSQL 14 2021 年 9 月 30 日 2022 年 1 月 27 日
PostgreSQL 13 20220 年 9 月 24 日 2021 年 2 月 24 日

PostgreSQL 14 で 4 ヶ月、PostgreSQL 13 が 5 ヶ月ほどかかっていますね。
そして PostgreSQL 15 は 2022 年 10 月 13 日 にリリースされています。今までの傾向から予想する RDS for PostgreSQL として正式に利用出来るようになるのは 2023 年 2 ~ 3 月 でしょうか。楽しみですね。

RDS データベースプレビュー環境

そして Amazon RDS では 一部データベースエンジンのプレビュー環境がオハイオリージョンでのみ提供されています。
PostgreSQL 14 の時も提供されていました。

東京リージョンの RDS コンソールから以下の操作でプレビューモードに遷移されます。

プレビューなので当然 SLA の対象外になりますので、同意の上利用を開始します。

上部にプレビュー環境である旨表示されます。
よく見ると URL が通常の Amazon RDS のコンソールと異なっていてプレビュー用のものになっています。

https://us-east-2.console.aws.amazon.com/rds-preview/home?region=us-east-2

このプレビュー環境を使って開発やテストを行うことが可能です。
選択出来る PostgreSQL バージョンは RC(リリース候補)なので今後の変更を理解する必要はありますが、Amazon RDS で正式版がリリースされる前に並行してメジャーバージョンアップ時に影響点や修正対応を進めることが出来ます。

データベースプレビュー環境では通常のオハイオリージョンの Amazon RDS と同等の料金が発生します。
マルチ AZ や KMS 暗号化など様々な RDS 機能も同様に利用可能です。

ただしプレビュー環境のスナップショットを本番環境で利用することは出来ません。
また、プレビュー環境のデータベースインスタンスは最大 60 日間保持され、期間がすぎると自動的に削除されるようです。

使ってみる

本日時点でプレビュー環境で選択出来るデータベースエンジンは PostgreSQL 14 と 15、そして RDS Custom for Oracle です。
PostgreSQL 15 を選択して早速使ってみます。

本日は以下を参考にさせて頂き PostgreSQL 15 で使えるようになった MERGE を試してみましょう。

まずは RDS インスタンス作成後に接続してバージョンを確認してみましょう。

% psql -h hoge1019postgresql.ca0mg86saazc.us-east-2.rds-preview.amazonaws.com -U postgres 
Password for user postgres: 
psql (14.5 (Homebrew), server 15rc2)
WARNING: psql major version 14, server major version 15.
         Some psql features might not work.
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=> select version();
                                                 version                                                  
----------------------------------------------------------------------------------------------------------
 PostgreSQL 15rc2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit
(1 row)

15rc2 ですね!
先程のブログを参考に新規テーブルの作成から MERGE でレコードの作成と更新を行います。

postgres=> CREATE TABLE target (
    id int8 generated always as identity,
    tid int4 not null unique,
    balance int4 not null default 0,
    primary key (id)
);
CREATE TABLE
postgres=> SELECT * FROM target;
 id | tid | balance 
----+-----+---------
(0 rows)

postgres=> MERGE INTO target AS t
USING (values (123, 10)) AS i(tid, balance)
ON t.tid = i.tid
WHEN MATCHED THEN
    UPDATE SET balance = i.balance
WHEN NOT MATCHED THEN
    INSERT (tid, balance) VALUES (i.tid, i.balance);
MERGE 1
postgres=> SELECT * FROM target;
 id | tid | balance 
----+-----+---------
  1 | 123 |      10
(1 row)

postgres=> MERGE INTO target AS t
USING (VALUES (123, 30)) AS i(tid, balance)
ON t.tid = i.tid
WHEN MATCHED THEN
    UPDATE SET balance = i.balance
WHEN NOT MATCHED THEN
    INSERT (tid, balance) VALUES (i.tid, i.balance);
MERGE 1
postgres=> SELECT * FROM target;
 id | tid | balance 
----+-----+---------
  1 | 123 |      30
(1 row)

使えていますね。

さいごに

本日は Amazon RDS のデータベースプレビュー環境で PostgreSQL 15 RC2 をついに使えるようになったので試してみました。

ワークロードを早めに PostgreSQL 15 対応させる必要があって RDS での対応スケジュールが気になっていた方も多いのではと思っていますが、いち早くプレビュー環境で検証と修正対応を進めることが出来るようになったので利用にあたっての諸注意点に気をつけながらご利用をご検討ください。