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

ApsaraDB RDS:バベルフィッシュの紹介

最終更新日:Mar 19, 2024

ApsaraDB RDS for PostgreSQLインスタンスでMicrosoft SQL ServerデータベースとPostgreSQLデータベースの両方からデータをクエリおよび処理する場合、またはアプリケーションのデータをSQL ServerインスタンスからRDSインスタンスに移行してコストを削減する場合は、RDSインスタンスのBabelfishを有効にできます。 Babelfishは、Transact-SQL (T-SQL) ステートメントと表形式データストリーム (TDS) をサポートしています。 このトピックでは、Babelfish for ApsaraDB RDS for PostgreSQLインスタンスの機能、アーキテクチャ、シナリオ、および使用上の注意事項について説明します。

重要

ApsaraDB RDS for PostgreSQLインスタンスのBabelfish機能は、ホワイトリストのユーザーが利用できます。 機能を使用したい場合は、お問い合わせください。

定義

ApsaraDB RDS for PostgreSQLは、Babelfish for PostgreSQLオープンソースプロジェクトに基づいて開発されたBabelfish機能を提供します。 PostgreSQLインスタンス用のApsaraDB RDSを作成するときに、Babelfishを有効にできます。 Babelfishを有効にすると、RDSインスタンスはMicrosoft SQL ServerデータベースとPostgreSQLデータベースの両方からデータを照会および処理できます。 これにより、RDSインスタンスはTransact-SQL (T-SQL) ステートメントを解析して実行できます。

Babelfishは、テーブルデータストリーム (TDS) 、SQL Serverワイヤプロトコル、およびT-SQL、Microsoft SQL Serverクエリ言語をサポートしています。 数行のコードを変更するだけで、アプリケーションのデータベースをSQL ServerインスタンスからBabelfishが有効になっているRDSインスタンスに移行できます。 データベースドライバーの切り替えやSQL文の書き換えは必要ありません。

シナリオ

  • SQL Serverのライセンスコストを削減したい場合。

  • SQL ServerデータベースをPostgreSQLデータベースに移行する場合。 ただし、アプリケーションコードの変更に長い時間や労力を費やす必要はありません。

  • PostgreSQLのオープンソース拡張ライブラリ (時空間データ分析にはPostGIS拡張、時系列データ分析にはTimescaleDB拡張など) を使用します。

  • 単一のRDSインスタンスを使用してPostgreSQLデータベースとSQL Serverデータベースの両方からのデータを処理することで、コストを削減したい場合。

アーキテクチャ

アーキテクチャの説明:

  • Babelfishが有効になっているRDSインスタンスは、次のリスナーを使用して、TCPポートを介したSQL ServerクライアントおよびPostgreSQLクライアントからのリクエストを監視します。

    • TDSリスナー: SQL ServerのTDSポートを介してリクエストを受信します。 デフォルトのポート番号は 1433 です。

      説明

      バベルフィッシュはTDS 7.1以降をサポートしています。 Microsoft SQL Server 2000以降のバージョンがサポートされています。

    • PostgreSQLリスナー: PostgreSQLのポートを介してリクエストを受信します。 既定のポート番号は 5432 です。

      説明

      PostgreSQL 13、PostgreSQL 14、およびPostgreSQL 15を実行するRDSインスタンスがサポートされています。

  • Babelfishが有効になっているRDSインスタンスがTDSリスナーからリクエストを受信すると、RDSインスタンスはそのリクエストをT-SQLパーサーに転送します。 次に、T-SQLパーサーは、SQL ServerのT-SQLステートメントをPostgreSQLで処理できる実行プランに変換します。

  • Babelfishが有効になっているRDSインスタンスがPostgreSQLリスナーからリクエストを受信すると、RDSインスタンスはリクエストをPostgreSQLパーサーに転送して実行プランを生成します。

  • PostgreSQLのSQLエグゼキュータは、すべてのプランを処理して実行します。

RDSインスタンスに対してBabelfishを有効にすると、RDSインスタンスにPostgreSQLデータベースエンジンとSQL Serverデータベースエンジンの両方の機能が組み込まれます。 RDSインスタンスは、SQL ServerクライアントおよびPostgreSQLクライアントからのリクエストを処理できます。 これは、コストの削減と処理能力の向上に役立ちます。

移行モード

babelfishが有効になっているRDSインスタンスに対して、babelfish_dbという名前のPostgreSQLデータベースがプロビジョニングされます。 移行されたすべてのSQL Serverオブジェクトとスキーマは、このPostgreSQLデータベースに格納されます。

説明

TDSポートを介してアプリケーションをRDSインスタンスに接続すると、babelfish_dbデータベースは表示されません。

Single-DBモードまたはMulti-DBモードを使用できます。 使用するモードは、SQL Serverデータベースのスキーマ名とbabelfish_dbデータベースのスキーマ名に影響します。

シングルDBモード

  • アーキテクチャ single-db

  • 説明: このモードでは、babelfish_dbデータベースのユーザーデータベースのスキーマ名は、SQL Serverデータベースのスキーマ名と同じです。

    たとえば、TDSポートでDB_Aという名前のデータベースを作成し、DB_Aデータベースにschema_Aという名前のスキーマを作成します。

    • dboとschema_Aという名前のスキーマは、PostgreSQLのbabelfish_dbデータベースにあります。

    • dboおよびschema_Aという名前のスキーマは、SQL ServerのDB_Aデータベースに存在します。

マルチDBモード

  • アーキテクチャ Multi-DB

  • 説明: このモードでは、PostgreSQLのユーザーデータベースのスキーマの名前はdbname_schemanameの形式で指定されます。 SQL Serverでは、スキーマ名は変更されません。

    たとえば、TDSポートでDB_Aという名前のデータベースを作成し、DB_Aデータベースにschema_Aという名前のスキーマを作成します。

    • DB_A_dboおよびDB_A_schema_Aという名前のスキーマは、PostgreSQLのbabelfish_dbデータベースにあります。

    • dboおよびschema_Aという名前のスキーマは、SQL ServerのDB_Aデータベースに存在します。

課金ルール

Babelfishが有効になっているRDSインスタンスの料金は、通常のRDSインスタンスの料金と同じです。 追加料金はかかりません。 料金は、リージョン、インスタンスタイプ、ストレージタイプなどのインスタンス設定によって異なります。 詳細については、ApsaraDB RDS 購入ページをご参照ください。

使用上の注意

重要

ApsaraDB RDS for PostgreSQLインスタンスのBabelfish機能は、ホワイトリストのユーザーのみが利用できます。 この機能を使用する場合は、Alibaba Cloudにお問い合わせください

  • ApsaraDB RDS for PostgreSQLインスタンスのBabelfishを有効にするには、RDSインスタンスを作成した場合にのみ有効にできます。 RDSインスタンスは、次のパラメーター設定を使用する必要があります。

    • データベースエンジン: PostgreSQL 13、14、または15。

    • 製品タイプ: 標準。

  • 既存のRDSインスタンスに対してBabelfishを有効にすることはできません。

  • Babelfishを有効にすると無効にすることはできません。

  • RDSインスタンスが作成されると、babelfish_dbデータベースが作成されます。 babelfish_dbデータベースは、Babelfishが有効になっているRDSインスタンスのキーデータベースです。 データベースを削除しないことを推奨します。 データベースを削除すると、RDSインスタンスは使用できなくなります。

参考資料