すべてのプロダクト
Search
ドキュメントセンター

:Babelfish for ApsaraDB RDS for PostgreSQL

最終更新日:Jun 03, 2026

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 に移行できます。

Babelfish でサポートされている T-SQL 組み込み関数

シナリオ

  • SQL Server のライセンスコストを削減。

  • アプリケーション変更を最小限に抑え、SQL Server から PostgreSQL へ移行。

  • 空間分析向けの PostGIS や時系列データ向けの TimescaleDB など、PostgreSQL の拡張機能へアクセス。

  • 単一インスタンスのコストで、デュアルエンジン (SQL Server と PostgreSQL) の機能を利用。

アーキテクチャ

image

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 モード

  • アーキテクチャsingle-db

  • 説明babelfish_db 内のスキーマ名は、元の SQL Server のスキーマ名と直接一致します。

    例:TDS ポート経由で接続し、CREATE SCHEMA schema_A を実行して schema_A という名前のスキーマを作成したとします。

    • PostgreSQL 側では、babelfish_db データベース内に dboschema_A というスキーマが作成されます。

    • SQL Server クライアント側では、現在のデータベースコンテキスト内に dboschema_A というスキーマが表示されます。

Multi-DB モード

  • アーキテクチャMulti-DB

  • 説明:PostgreSQL 側のスキーマ名は dbname_schemaname 形式になります。SQL Server のスキーマ名は変更されません。

    例:TDS ポート経由で、スキーマ schema_A を含むデータベース DB_A を作成したとします。

    • PostgreSQL の babelfish_db データベースでは、スキーマ名は DB_A_dboDB_A_schema_A です。

    • SQL Server の DB_A データベースでは、スキーマ名は dboschema_A です。

課金

Babelfish の利用による追加費用は発生しません。料金はリージョン、仕様、ストレージによって異なります。詳細は ApsaraDB RDS の購入ページをご参照ください。

使用上の注意

  • 既存の ApsaraDB RDS for PostgreSQL インスタンスでは Babelfish を有効にできません。

  • Babelfish は有効にした後、無効にすることはできません。

  • RDS インスタンスが作成されると、babelfish_db データベースが作成されます。このデータベースは Babelfish 機能にとって重要です。このデータベースは削除しないでください。削除すると、インスタンスが利用できなくなります。

はじめに