Babelfish を使用すると、ApsaraDB RDS for PostgreSQL インスタンスで T-SQL ステートメントを解釈し、TDS 接続を受け付けられるようになります。これにより、最小限のコード変更で PostgreSQL 上で SQL Server ワークロードを実行できます。
Babelfish の概要
Babelfish for ApsaraDB RDS for PostgreSQL は、オープンソースの Babelfish for PostgreSQL プロジェクトをベースにしています。RDS PostgreSQL インスタンスの作成時に Babelfish を有効化すると、ネイティブ PostgreSQL クエリと並行して SQL Server の T-SQL ステートメントを解析し、実行できます。
Babelfish は、[SQL Server 表形式データストリーム (TDS) ワイヤプロトコル]と、[Microsoft SQL Server のクエリ言語である T-SQL] をサポートします。データベースドライバーを切り替えたり SQL ステートメントを書き直したりすることなく、わずかなコード変更で SQL Server アプリケーションを RDS PostgreSQL に移行できます。
シナリオ
-
SQL Server のライセンスコストを削減。
-
アプリケーション変更を最小限に抑え、SQL Server から PostgreSQL へ移行。
-
空間分析向けの PostGIS や時系列データ向けの TimescaleDB など、PostgreSQL の拡張機能へアクセス。
-
単一インスタンスのコストで、デュアルエンジン (SQL Server と PostgreSQL) の機能を利用。
アーキテクチャ
Babelfish による SQL リクエストの処理フロー:
-
インスタンスは、SQL リクエストを受け付けるために 2 つの TCP ポートでリッスンします:
-
TDS リスナー:TDS ポートで SQL リクエストを受信します。デフォルトポート:1433。
説明Babelfish は TDS プロトコル 7.1 以降 (SQL Server 2000 以降) をサポートします。
-
PostgreSQL リスナー:PostgreSQL ポートで SQL リクエストを受信します。デフォルトポート:5432。
説明現在、ApsaraDB RDS for PostgreSQL 15 をサポートしています。
-
-
TDS ポートからのリクエストは T-SQL パーサーに送られ、T-SQL が PostgreSQL の実行計画に変換されます。
-
PostgreSQL ポートからのリクエストは、ネイティブ PostgreSQL パーサーを通過します。
-
PostgreSQL エグゼキュータがすべての実行計画を処理します。
Babelfish を使用すると、単一の RDS PostgreSQL インスタンスで SQL Server クライアントと PostgreSQL クライアントの両方に対応できます。コストを削減しながら機能を拡張できます。
移行モード
Babelfish は、移行された SQL Server のすべてのオブジェクトと構造を、babelfish_db という名前の PostgreSQL データベースに格納します。
TDS ポート経由でインスタンスに接続した場合、babelfish_db データベースは表示されません。
[Single-DB] モードまたは [Multi-DB] モードを選択できます。選択内容により、babelfish_db 内の SQL Server データベースのスキーマと名前が変わります。
Single-DB モード
-
アーキテクチャ:

-
説明:
babelfish_db内のスキーマ名は、元の SQL Server のスキーマ名と直接一致します。例:TDS ポート経由で接続し、
CREATE SCHEMA schema_Aを実行してschema_Aという名前のスキーマを作成したとします。-
PostgreSQL 側では、
babelfish_dbデータベース内にdboとschema_Aというスキーマが作成されます。 -
SQL Server クライアント側では、現在のデータベースコンテキスト内に
dboとschema_Aというスキーマが表示されます。
-
Multi-DB モード
-
アーキテクチャ:

-
説明:PostgreSQL 側のスキーマ名は
dbname_schemaname形式になります。SQL Server のスキーマ名は変更されません。例:TDS ポート経由で、スキーマ
schema_Aを含むデータベースDB_Aを作成したとします。-
PostgreSQL の
babelfish_dbデータベースでは、スキーマ名はDB_A_dboとDB_A_schema_Aです。 -
SQL Server の
DB_Aデータベースでは、スキーマ名はdboとschema_Aです。
-
課金
Babelfish の利用による追加費用は発生しません。料金はリージョン、仕様、ストレージによって異なります。詳細は ApsaraDB RDS の購入ページをご参照ください。
使用上の注意
既存の ApsaraDB RDS for PostgreSQL インスタンスでは Babelfish を有効にできません。
Babelfish は有効にした後、無効にすることはできません。
RDS インスタンスが作成されると、babelfish_db データベースが作成されます。このデータベースは Babelfish 機能にとって重要です。このデータベースは削除しないでください。削除すると、インスタンスが利用できなくなります。