さようなら Microsoft SQL Server、こんにちは Babelfish
2021年11月2日、AWSのブログにこのように衝撃的な見出しが踊りました。それは2021年10月28日、「Babelfish for Aurora PostgreSQL」のサービス一般利用開始の見出しです。
参考:AWS ブログ さようなら Microsoft SQL Server、こんにちは Babelfish
今からおよそ1年前、2020年12月の「AWS re:Invent 2020」の基調講演で表明された「Babelfish for Aurora PostgreSQL」はデータベースの新しいサービス機能です。Microsoft SQL Server用に作成されたアプリケーションの移行促進のために、T-SQLコマンドを通信レイヤを介して翻訳処理しSQL Serverライセンスに無駄な費用を払う必要はない、という表明でした。
Babelfish for Aurora PostgreSQL概要
Babelfish for Aurora PostgreSQLは、Amazon AuroraのPostgreSQL互換エディションで提供される新機能です。 Microsoft SQL Server用コマンドを翻訳し実行します。
参考:Babelfish for Aurora PostgreSQL
メリットはT-SQLコマンドと通信レイヤを翻訳実行しますので、データベース移行の工数が削減できることです。さらにこれまでのMicrosoft SQL Server資産を活かしながら、順次PostgreSQLのAPIへの移行を進めることができるため移行リスク低減が図られます。
Babelfishはオープンソース化され、オープンソースライセンスに基づき利用することができます。Apach License Version2.0とPostgreSQL Licenseに基づきコードが公開され、AWSがサポートすると公表しています。GitHubでソースコードやドキュメントが公開されており、必要な修正やバージョンアップが計画されています。
Amazon Auroraとは?
Amazon Auroraとはクラウド向けリレーショナルデータベースで、Amazon Relational Database Service(RDS)によるフルマネージドサービスです。
MySQL・PostgreSQLと互換性があり、公式サイトによると標準的な MySQL データベースと比較し最大5 倍、PostgreSQL データベースと比較し最大3 倍のスループットを実現していることを利点に挙げています。MySQL・PostgreSQLとは完全互換で新しいリリースのサポートが順次追加されています。
Amazon Relational Database Service(RDS)概要
Amazon RDSはAmazon Aurora・PostgreSQL・MySQL・MariaDB・Oracle データベース・SQL Serverの6種類のデータベースエンジンから選択することができます。最適なデータベースエンジンを選択し、必要な管理タスクを自動化することで運用負担を低減しアプリケーション作業に注力することができます。
Amazon Auroraの提供リリースとサポートバージョン
Amazon AuroraのPostgreSQLデータベースは、Aurora PostgreSQL リリース 13.3が最新リリースのバージョンです。
参考:Amazon Aurora PostgreSQL リリースとエンジンのバージョン
Aurora PostgreSQLでは順次マイナーバージョンのサポートを終了しています。2022 3月16 日には、10.11、10.12、11.6、11.7がサポート終了期限を迎えます。引き続き10.14以降、11.9以降がサポートされます。
参考:Amazon Aurora PostgreSQL バージョン10.11、10.12、11.6、11.7のサポート終了のお知らせ
長期サポートが必要でしたらAurora PostgreSQL 長期サポート(LTS)バージョンを選択したいところです。現在のLTSリリースは、「PostgreSQL 11.9、Aurora PostgreSQL リリース 3.4」となります。
現行LTSリリースがBabelfishサポートとなるか明記されていませんが、Babelfish公式サイトではPostgreSQL リリース 13以降がサポート対象とされています。Babelfish対応バージョンのLTSリリースが待たれます。
参考:Aurora PostgreSQL 長期サポート (LTS) リリース
参考:Babelfish: Frequently asked questions Which Babelfish versions are available?
Babelfish for Aurora PostgreSQLの料金
Babelfish for Aurora PostgreSQLはAmazon Auroraに搭載されている機能のため、追加の費用負担なく利用できます。ベースとなるAmazon Auroraの料金はデータベースインスタンス・データベースストレージとI/O消費量・バックアップストレージ・バックトラック・Snapshot Export・データ転送により、決定します。
Babelfish for Aurora PostgreSQLの基本動作
Amazon Aurora PostgreSQLの通信レイヤでは「T-SQL over TDS」「PL/pgSQL」の2種類のプロトコルで通信処理を行います。
・SQL Serverアプリケーション
アプリケーションの「SQL Server Client Driver」が「T-SQL over TDS」を通じて「Babelfish」によりセマンティック解釈され、Amazon Auroraと通信します。
・PostgreSQLアプリケーション
アプリケーションの「PostgreSQL Driver」が「PL/pgSQL」を通じて「PostgreSQL」によりセマンティック解釈され、Amazon Auroraと通信します。
Babelfish for Aurora PostgreSQLの利用方法
Babelfish for Aurora PostgreSQLを利用するには、TDS(Tabular Data Stream)を通じてクライアントとの通信を行います。TDS 7.1 以降がサポートされています。さらに並行してPostgreSQLとのネイティブ接続を行うことも可能です。
参考:Working with Babelfish for Aurora PostgreSQL
Babelfishを用いてPostgreSQLに資産移行することもできます。この場合Babelfishを有効化しSQL ServerのT-SQLを解釈できるように、Aurora PostgreSQL DBクラスタを作成します。そしてBabelfishアセスメントツールであるBabelfish Compass toolを用いて変更点を確認します。
参考:Using Babelfish to migrate to PostgreSQL
Babelfish for Aurora PostgreSQLの制限
Microsoft SQL Serverは登場してから30年以上の技術蓄積があり、BabelfishのT-SQLとの互換性は100%とはいきません。Babelfish for Aurora PostgreSQLで実装されているBabelfishの仕様はドキュメントとして公式オープンソースサイトに掲載されています。
今現在、未実装の機能やシンタックスが多数あり、一部機能のみのサポートのもの多くあります。詳細は以下のリンクでご確認ください。
参考:Babelfish for PostgreSQL T-SQL limitations
参考:Differences between Aurora PostgreSQL with Babelfish and SQL Server
互換性100%とはいかないことはすでに表明されており、どのように違いを吸収するか検討する必要があります。公式サイトのドキュメントではデータベース環境から言語体系・バックアップ方式等多岐に渡る差分と回避策が調査掲載されています。詳細は以下のドキュメントに掲載されていますので、ご興味がありましたらご確認ください。
参考:Managing differences in behavior
Babelfishはまずは情報収集から始めましょう
Babelfish for Aurora PostgreSQLは新しく追加されたサービス機能です。実装されているBabelfishはT-SQLを100%実装できていないことを自ら公表しています。
AWSのブログのような「さようなら Microsoft SQL Server、こんにちは Babelfish」というほど、Microsoft SQL Serverに別れを告げるのはむしろリスクがあります。当面は他のユーザの事例を待つか果敢に挑戦してみるかのいずれかになります。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから