全5143文字

 データベースをクラウドに移行する際、DBMS(データベース管理システム)の変更を伴うケースがあります。DX(デジタルトランスフォーメーション)やエンジニア不足を背景として、クラウドネーティブなデータベースサービスに替えてアジリティー(俊敏性)を獲得することや、運用管理の負担を軽くすること、低価格なDBMSに変えてコストを削減することが求められているからです。

 データベースの移行をスムーズに実現したいといったニーズに呼応するように、クラウド事業者各社はDBMSの変更についての負担を少なくするように工夫されたデータベースサービスを提供しています。今回は米マイクロソフトのDBMSである「SQL Server」からの移行性を高めた機能を備える米アマゾン・ウェブ・サービス(AWS)の「Babelfish for Aurora PostgreSQL」を取り上げます。

SQL Serverの固有機能を実行

 Babelfish for Aurora PostgreSQLは、「Amazon Aurora PostgreSQL」にSQL Server固有の機能やSQL Server文法のSQLをPostgreSQLで実行できるようにする拡張機能「Babelfish for PostgreSQL」を組み込んだサービスです。PostgreSQLベースのデータベースサービスでありながら、SQL Serverアプリケーションを実行できます。「Babelfish」はSF小説に出てくる万能翻訳を可能にする魚の名称であり、SQLの「方言」を翻訳してくれる製品との意味を込めたと考えられます。

 Babelfish for PostgreSQLはApache 2.0とPostgreSQLライセンスの条件下で利用できるオープンソースソフトウエア(OSS)です。AWS以外でもPostgreSQLにインストールして利用できます。2022年からAWSが商標権を保有しています。

 Amazon Aurora PostgreSQLのバージョン13.4以降のリリースからは、組み込み済みの利用可能なオプションになりました。「Amazon Aurora Serverless PostgreSQL」でもサポートされていますが、「Amazon Relational Database Service(RDS) for PostgreSQL」ではサポートされていません。以下ではBabelfish for Aurora PostgreSQLを単にBabelfishと記載します。

2つのインターフェースを備える

 Babelfishの新規性の1つはSQL Serverとの互換性を持たせている点です。これまでOracle Databaseとの互換性を備え、移行性を高めている拡張機能や製品は存在しましたが、SQL ServerをターゲットとするものはBabelfish登場以前はありませんでした。もう1つはクライアントツールの利用をサポートしている点です。SQL Serverの通信プロトコルであるTDS(表形式データストリーム)をサポートし、既存の接続ドライバーを変える必要はありません。

2つのインターフェースが共存
2つのインターフェースが共存
図 Babelfish for Aurora PostgreSQLのインターフェース
[画像のクリックで拡大表示]

 これらはBabelfishのユニークな特徴であり、DBMSの変更の際、大きな意味を持ちます。DBMS間の非互換はSQLやストアドプロシージャの文法の違いだけではないからです。接続インターフェースや利用するAPI(アプリケーション・プログラミング・インターフェース)の違いがDBアクセス層のアプリケーションコードに非互換を発生させる場合があります。インターフェースをそのまま利用できるとソースコードを変更せずに使える可能性が上がり、多くのアプリケーションの移行性を高める効果が得られます。