Re:invent 2021 年に登場予定の Babelfish は、Microsoft SQL Server と互換性のある PostgreSQL のエンドポイントを提供する AWS プロジェクトであり、コードを変更せずにアプリケーションの移植を可能にすることを目的としています。
Babelfish の背景にある考え方は、組織には SQL Server データベースを使用するアプリケーションがあり、これを PostgreSQL に移行したいが、移植に伴う労力とリスクが大きすぎて移行できないというものです。
AWS がこれを提供しているのはなぜでしょうか? その目的は、PostgreSQL 互換の Aurora または PostgreSQL RDS (リレーショナルデータベースサービス) に新規顧客を引き付けることです。
Babelfishは現在、Aurora向けのプライベートプレビュー版です。C言語とPL/pgSQLで記述されており、2021年にApache 2.0ライセンスの下でオープンソースとしてリリースされる予定です。PostgreSQLのどのバージョンでも動作するはずです。この名称は、ダグラス・アダムスの『銀河ヒッチハイク・ガイド』に由来しています。『銀河ヒッチハイク・ガイド』の中で、バベルフィッシュは「おそらく宇宙で最も奇妙な生き物」であり、耳の中に巣を作ることであらゆる言語を理解できるようになるとされています。
Babelfish は、AltaVista/Yahoo !が所有していた、現在は廃止された Bing Translator の前身でもありました。
DB エンジンのランキングによると、SQL Server は Oracle と MySQL に次いで 3 番目に人気のあるデータベース エンジンですが、PostgreSQL のほぼ 2 倍のスコアを獲得しています (Aurora は現在 44 位にランクされています)。
しかし、SQL Server が、SQL Server Express という高機能だがサイズが制限された無料の DBMS として、またライセンス料が高額なエンタープライズ バージョンとして存在していることも、その人気の理由の 1 つです。
Microsoft は開発者向けドキュメントと例のほとんどを SQL Server 向けに作成しているため、多くのプロジェクトが SQL Server を使用して開始されますが、そのうちのいくつかは規模が大きくなり、最終的にライセンスが必要になります。
サーバーレスに最適!Googleがクラウド向けにカスタマイズされたSQLデータベース移植サービスを提供
続きを読む
データの移行は比較的簡単ですが、アプリケーションの移植は、SQL Server固有の機能がどれだけ使用されているか、どのコンポーネントがインストールされているかによって、より複雑になります。SQL Serverは大規模な製品であり、Transact-SQLまたはT-SQLと呼ばれる独自の言語に加え、Analysis Services、Reporting Services、Machine Learning Servicesなどの追加機能を備えています。
Babelfish は、2つの重要な機能を提供することで移植を支援します。1つ目は、SQL Server がクライアントとサーバー間のリクエストとレスポンスに使用する表形式データストリーム (TDS) プロトコルを理解することです。2つ目は、T-SQL と SQL Server の列型を理解し、それらを同等の PostgreSQL コードに変換できることです。
Babelfish を使用すると、SQL Server ドライバーを使って PostgreSQL に接続でき、SQL Server のように動作します(ただし、制限事項があります)。すべてがうまくいくわけではありませんが、Tobias Ternström 氏(Microsoft で 10 年間オープンソースデータベースの開発に携わり、その後 Google に移籍し、現在は AWS で Aurora と RDS のプロダクトマネジメントを率いる)によると、「クエリの結果は Microsoft SQL Server で得られるものと全く同じになるか、エラーになるかのどちらかです。その中間はありません」とのことです。Ternström 氏は、今週から始まった AWS のバーチャルカンファレンス re:Invent で講演しました。
何かがうまく動作しない場合、または開発者が新しい機能を追加したい場合、T-SQLコードを修正または新規作成するか、SQL Serverドライバ経由でPL/pgSQL(手続き型言語/PostgreSQL)を使用するかを選択できます。どちらもサポートされています。「両者のパフォーマンスの違いはごくわずかです」とTernström氏は主張しています。
互換性はどの程度まで及ぶのか?これは重要な疑問ですが、現時点では完全には明らかではありません。「簡単に言えば、おそらく」とターンストローム氏は言い、特定の機能が動作するかどうか自問自答しました。「私たちは、T-SQLの中で最も一般的に使用されている部分、つまり私たちが理解している範囲で、その部分に焦点を当てていました。」
彼は実際に動作するいくつかの機能についても言及しました。ストアドプロシージャ、カーソル、クライアントサイドカーソル、スカラー関数とテーブル値関数、そしてネストされたトランザクション(ネストされたトランザクションはPL/pgSQLの一部ではありませんが)などです。このプロジェクトは、特にオープンソース化後は、時間の経過とともに改善されるでしょう。
Babelfish にとって最適な選択肢は、SQL Server を使用しているものの、その高度な機能をほとんど使用せず、ライセンス料を大幅に節約できるプロジェクトです。SQL Server の機能を深く活用する(したがってコストパフォーマンスが高い)プロジェクトには、Babelfish は適さないかもしれません。
PostgreSQLサポート会社Ongresのアルバロ・エルナンデス氏は、予想通り熱心だ。「リリース時点では互換性が100%になるわけではない」と彼は言う。
「しかし、それが十分に高いレベルであれば」と彼は続けた。「数千、数百万のユーザーが商用のプロプライエタリデータベースからオープンソースのPostgresにシームレスに移行できるようになります。また、正確性を確保するためのアプローチ(機能がサポートされていない場合はエラーが発生するなど)は健全であり、移行の成功に対する信頼を築くものです。」彼は、このプロジェクトが「PostgreSQLのメインコードベースに再び統合される」ことを期待している。
PostgreSQL 企業 EDB の社長兼 CEO、エド・ボヤジャン氏は次のようにコメントしています。「私たちがすでに知っていることを Jassy 氏が肯定してくれたのはうれしいことです。Postgres は、レガシー データベースから解放されたい企業が選ぶ今日のリレーショナル データベースです。」
「彼が見落としているのは、顧客が既存企業にうんざりしているだけではないということです。彼らはベンダーロックインとそれに伴う経済的な悪影響にもっとうんざりしているのです。私たちは以前にもこのような状況を経験してきました。BabelfishとAuroraに関する注意点は次のとおりです。人々は、実際には一つの壁に囲まれた庭園から別の壁に囲まれた庭園へと移行していることを認識すべきです。」
AWSはオープンソース分野でより優れた成果を上げているのでしょうか?おそらくそうでしょう。しかし、PostgreSQLはオープンソースですが、Auroraはそうではないという点に注目すべきです。Auroraはプロプライエタリデータベースで、MySQLと互換性のあるバージョンとPostgreSQLと互換性のあるバージョンの2種類があります。AWSはPostgreSQL自体を別サービスとして提供しています。
「高可用性、スケーラビリティ、そして弾力性が最も重要な場合、Auroraはおそらく最良の選択肢でしょう。PostgreSQLはブロックストレージ上でレイテンシが低く、おそらくより安価でしょう」と、元CERN DBAで現在はDBI Servicesのコンサルタントを務めるFrank Pachot氏は主張します。
とはいえ、「まだ混乱が残っており、Auroraユーザーの中にはPostgreSQLコミュニティに助けを求めている人もいます」と彼は付け加えた。「PostgreSQLコミュニティは、エンジン(非常によくドキュメント化されており、ソースコードとソースコメントにもアクセス可能)をよく理解しているため、ユーザーを大いに支援してくれます。しかし、何が変更されたのかさえわからないため、Auroraに関しては何もできません… また、AmazonがPostgreSQLコードに加えた改善がコミュニティと共有されることは、PostgreSQLコミュニティにとって喜ばしいことだと思います。」
Babelfish のようなオープンソースは AWS にとって簡単な勝利ですが、コミュニティと連携するためにできることはまだまだたくさんあります。®