全5291文字
PR

データベースをクラウドに移行する際、DBMS(データベース管理システム)の変更が検討に挙がる。クラウド事業者はDBMSの変更を容易にする機能を備えたデータベースサービスを提供している。「Babelfish for Aurora PostgreSQL」はSQL Serverからの移行に適したサービスである。

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

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

 SQL Server固有のSQL Server Management Studio(SSMS)などのクライアントツールも利用できます。一部動作しない機能はあるものの、Babelfishのバージョンアップのたびに互換性は向上しています。クライアントツールやユーティリティーを利用できることは、運用スタイルやノウハウをそのまま生かせるメリットにつながります。データを一括してエクスポート/インポートするツールであるSQL Server Integration Services(SSIS)、bcp(bulk copy programユーティリティー)も利用できるため、これらのツールを使っているデータ連係処理の修正も最小限に済ませられます。データベースをクラウドに移行する際のデータ移行にも利用できます。Babelfishは互換性を高めるのもさることながら、SQL Serverアプリケーションを最小限の変更でそのまま利用できる機能といった側面があります。

 通常のAurora PostgreSQLを利用し始めて、途中からBabelfishの機能を使うこともできます。不要になった際はBabelfishの利用を停止すればよく、通常のAurora PostgreSQLのPostgreSQLインターフェースのみを利用する形態にします。

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