【レポート】Introducing Babelfish for Aurora PostgreSQL #reinvent #emb009

2020.12.28

こんにちは、崔です。

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)のセッション・資料にもアクセスが可能です。
参加がまだの方は、この機会に是非こちらのリンクからレジストレーションして豊富なコンテンツを楽しみましょう!

AWS re:Invent | Amazon Web Services