Amazon AuroraがPostgreSQL 13.5をサポートしたので、Babelfishに対応しているか確認してみた

2022.03.01

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

いわさです。

AuroraでPostgreSQL 13.5が利用出来るようになりました。

Aurora PostgreSQL 13.5のリリースノートはこちらをご参照ください。
Amazon Aurora PostgreSQL releases and engine versions - Amazon Aurora

最新版でBabelfishは使えるのか

Aurora PostgreSQLではBabelfishという機能を使うことが出来ます。

これまでは13.4のみ利用可能でしたが、今回のアップデートでどうなったのかを確認してみました。

コンソールから確認

コンソールでは「Babelfishをオンにする」が非活性になるかで確認することが出来ます。
未対応のエンジンバージョンの場合は非活性になります。

13.5でも利用出来ますね。

AWS CLIから確認

実は半月ほど前に、AWS CLI(v2.4.19以降)で RDSのdescribe-db-engine-versionsコマンドで全エンジンのBabelfish対応状況を取得出来るようになりました。

$ aws rds describe-db-engine-versions
{
    "DBEngineVersions": [
        {
            "Engine": "aurora-mysql",
            "EngineVersion": "5.7.12",
            "DBParameterGroupFamily": "aurora-mysql5.7",
            "DBEngineDescription": "Aurora MySQL",
            "DBEngineVersionDescription": "Aurora (MySQL)-5.7.12",
            "ValidUpgradeTarget": [
                {
                    "Engine": "aurora-mysql",
                    "EngineVersion": "5.7.mysql_aurora.2.03.2",
                    "Description": "RDS Aurora (MySQL)",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false,
                    "SupportedEngineModes": [
                        "provisioned"
                    ],
                    "SupportsParallelQuery": false,
                    "SupportsGlobalDatabases": false,
                    "SupportsBabelfish": false
                },
                ...
                {
                    "Engine": "aurora-mysql",
                    "EngineVersion": "8.0.mysql_aurora.3.01.0",
                    "Description": "Aurora MySQL 3.01.0 (compatible with MySQL 8.0.23)",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": true,
                    "SupportedEngineModes": [
                        "provisioned"
                    ],
                    "SupportsParallelQuery": true,
                    "SupportsGlobalDatabases": true,
                    "SupportsBabelfish": false
                }
            ],
            "ExportableLogTypes": [
                "audit",
                "error",
                "general",
                "slowquery"
            ],
            "SupportsLogExportsToCloudwatchLogs": true,
            "SupportsReadReplica": false,
            "SupportedEngineModes": [
                "provisioned"
            ],
            "SupportedFeatureNames": [],
            "Status": "available",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "MajorEngineVersion": "5.7",
            "SupportsBabelfish": false
        },
        {
            "Engine": "aurora-mysql",
            "EngineVersion": "5.7.mysql_aurora.2.03.2",
            "DBParameterGroupFamily": "aurora-mysql5.7",
        ...

SupportsBabelfishの値を確認し、対象のエンジンバージョンがBabelfishをサポートしているかを確認することが出来ます。
何に使うんだ...。

Babelfishの対応しているエンジンを取得する場合は、以下のような感じでしょうか。jq使いましたがqueryオプションでも良いと思います。

$ aws rds describe-db-engine-versions | jq -r '.DBEngineVersions[] | select(.SupportsBabelfish?==true) | [.Engine, .EngineVersion] | @csv' 
"aurora-postgresql","13.4"
"aurora-postgresql","13.5"

最新の13.5で利用出来そうですね。また、13.4でも引き続き利用できるようです。

Babelfishのバージョンを確認

BabelfishはPostgreSQLの拡張機能です。
PostgreSQLのマイナーバージョンでBabelfishのバージョンなどは変わるのでしょうか。

Which Babelfish versions are available?
Babelfish version 1.0.0 works with PostgreSQL 13.4; version 1.1.0 works with PostgreSQL version 13.5.

https://babelfishpg.org/docs/faq/ より

公式ドキュメントによるとPostgreSQL 13.4と13.5でBabelfishのバージョンが違うみたいですね。
Auroraでも確認してみたいと思います。

Babelfish拡張の情報を確認したい場合はTDSポートに接続した状態でクエリで情報を取得することが出来ます。
※PostgreSQLポートに接続してbabelfish_dbから取得することも可能

Babelfish をクエリして Babelfish の詳細を見つける - Amazon Aurora

SELECT aurora_version() AS aurora_version;
13.4.1

SELECT CAST(serverproperty('babelfishversion') AS VARCHAR);
1.0.0

SELECT @@VERSION AS version;
Babelfish for Aurora Postgres with SQL Server Compatibility - 12.0.2000.8 Feb  2 2022 23:19:05 Copyright (c) Amazon Web Services PostgreSQL 13.4 on x86_64-pc-linux-gnu
SELECT aurora_version() AS aurora_version;
13.5.1

SELECT CAST(serverproperty('babelfishversion') AS VARCHAR);
1.1.0

SELECT @@VERSION AS version;
Babelfish for Aurora Postgres with SQL Server Compatibility - 12.0.2000.8 Feb 15 2022 18:14:58 Copyright (c) Amazon Web Services PostgreSQL 13.5 on x86_64-pc-linux-gnu

13.4と13.5でBabelfishのバージョンが違いました。
しかし、互換性のあるSQL Serverのバージョンについては12.0.2000.8とのことで、変わらないですね。

一応1.0.0と1.1.0のバージョン差分があるということだけ意識しておくと、トラブルシューティングの際に役立つかもしれません。

Babelfishサポートのフラグ

何のための機能なのかなと最初わからなかったのですが、マネジメントコンソールでBabelfishサポートバージョンのみ絞り込むことが出来るようになっていました。
どうやら、このために追加されたフラグのようですね。

さいごに

本日はAurora PostgreSQL 13.5が利用出来るようになったので、Babelfish対応状況を確認してみました。
PostgreSQL 13.5のリリースノートを見るとパフォーマンス改善やバグ修正に関するマイナーアップデートが多いので、早めにアップデート適用したいところですが、Babelfishを使っている場合でもマイナーアップデートは出来そうですね。
互換性のあるSQL Serverバージョンも同じとのことでアップデートできそうです。しかし、Babelfishのマイナーバージョンが違っているのでその点は注意したうえで評価を進めましょう。