【レポート】Introducing Babelfish for Aurora PostgreSQL #reinvent #emb009
こんにちは、崔です。
AWS re:Invent 2020 で行われた 「Introducing Babelfish for Aurora PostgreSQL」 のセッションを視聴しましたのでレポートします。
Balelfish for Aurora PostgreSQL は、SQL Server向けのアプリケーションをそのまま Aurora PostgreSQL に対して実行できるようにする機能となります。
関連ブログはこちら。
セッション概要
- タイトル
- Introducing Babelfish for Aurora PostgreSQL
- EMB009
- スピーカー
- Tobias Ternstrom (Director, Product Management, Amazon Aurora and Amazon RDS)
アプリケーションをSQL Serverからオープンソース互換のデータベースに移行するのは、時間とリソースを必要とすることがあります。
AWS Database Migration Service (AWS DMS) などのソリューションは、データやデータベーススキーマの移行を自動化してくれますが、アプリケーションコードの移行には、より多くの作業が必要になることがよくあります。
このセッションでは、Microsoft SQL Server上で動作するように設計されたアプリケーションからのコマンドをAmazon Auroraが理解できるようにする、Amazon Aurora PostgreSQL用の新しい翻訳レイヤーであるBabelfish for Aurora PostgreSQLを紹介します。
Microsoft SQL Server ベースのアプリケーションを Aurora に移行する際の時間、リスク、労力を削減するために、Babelfish for Aurora PostgreSQL がどのように機能するかを学び、それを可能にする機能のいくつかをご覧ください。
レポート
Databases:Moving to the cloud
350,000以上のデータベースがAWSに移行されているが、その際に商用DBからOSS DBへの移行も実施されている。
商用データベースからの移行の原因として、高額なライセンス費用や、複雑なライセンス体系が考えられる。
Challenges in migrating from commercial to open source
商用DBからOSS DBへするために、例えば、TDS Endpoint や T-SQL を利用している SQL Server から、PL/pgSQL を利用している PostgreSQL に移行するには、次の3つのことを行わなければならない。
- AWS Schema Conversion Tool を利用してスキーマを移行する
- AWS Database Migration Service を利用してデータを移行する
- アプリケーションを移行する。T-SQL やアプリケーションコードを修正する必要がある
Application basics
例えば、MONEYデータ型を持つテーブルに、小数点以下4桁のデータが入っている場合は、SQL Server と PostgreSQL で違う結果が返ってくる。
- SQL Serverの場合、小数点以下4桁
- PostgreSQLの場合、小数点以下2桁になる
これは、数多くある2つのデータベースの相違点のうちの一つに過ぎない。
データベースを移行する場合は、アプリケーションの実行結果を等しく同じにするために、コードを修正し、テスト結果が正しく返ってくることを確認するなど、膨大な時間が必要になる。
Imagine if you could
Aurora PostgreSQL が、TDS EndpointとT-SQLを利用できることを想像してほしい。
- SQL Server向けのレガシーアプリケーションコードをそのまま利用できる
- ドライバーも変える必要がない
- 新しいアプリケーションコードは直接PostgreSQLに実行される
これを可能にするのが、Babelfish for Aurora PostgreSQL である。
Introducing Babelfish for Aurora PostgreSQL
スキーマとデータを移行したあとに、SQL Server向けのコードを変更することなく実行できる。
アプリケーションをPostgreSQL向けに完全に移行してから、システムをリリースするのではなく、自分たちのペースで移行しながら、PostgreSQL上で SQL Server 向けのアプリケーションを稼働することができる。
これにより、何ヶ月、何年もの移行フェーズを待たずに、すぐにPostgreSQLを使い始めることができる。
Babelfish for PostgreSQL design tenets
Babelfish for PostgreSQLは、オープンソースプロジェクトとして開発される。
Amazon Auroraだけでなく、EC2、RDS、もしくはオンプレのPostgreSQLでも実行できるようになる。
Babelfish for PostgreSQLの設計思想としては、3つのキーがある。
- 正しさに妥協なし
- アプリケーションはデータベースドライバーを変えることなく動作すること
- T-SQLからPostgreSQLの機能を利用したり、PostgreSQLからT-SQLの機能を利用できる
Development model for Babelfish
移行したアプリケーションにどうやって新しい機能を追加すればよいか
- SQL Serverデータベースドライバを使用してT-SQLで新しい機能を開発する
- PostgreSQLデータベースドライバを使用して、PostgreSQLで新しい機能を開発する
- PostgreSQLで新しい機能を開発し、SQL Serverデータベースドライバを使用してT-SQLから呼び出す
所感
SQL ServerからPostgreSQLへ移行するには、アプリケーションの移行が欠かせません。
しかしながら、アプリケーション移行には、すべてのテストをもれなく実施することを考えると、数ヶ月から規模によっては数年かかることも考えられます。
Babelfish for Aurora PostgreSQL を利用することで、既存のSQL Server向けアプリケーションを利用したまま、PostgreSQLを利用することができます。
PostgreSQLを利用しながら、SQL Server向けアプリケーションの改修・移行を行うことで、早期にライセンス費用からの脱却が可能になります。
まだまだ、プレビュー段階ですが、早く試してみたいですね。
AWS re:Invent 2020 Wave 2 は 2021/01/12 から
前半戦(Wave 1)のセッション・資料にもアクセスが可能です。
参加がまだの方は、この機会に是非こちらのリンクからレジストレーションして豊富なコンテンツを楽しみましょう!