このトピックでは、Babelfish for ApsaraDB RDS for PostgreSQLインスタンスの機能、アーキテクチャ、シナリオ、および使用上の注意事項について説明します。

定義

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プラグインを使用します。
  • PostgreSQLデータベースとSQL Serverデータベースの両方からデータを処理するために、単一のRDSインスタンスを使用してコストを削減したいとします。

アーキテクチャ

バベルフィッシュ建築
アーキテクチャの説明:
  • Babelfishが有効になっているRDSインスタンスは、次のリスナーを使用して、TCPポートを介したSQL ServerクライアントおよびPostgreSQLクライアントからのリクエストを監視します。
    • TDSリスナー: SQL ServerのTDSポートを介してリクエストを受信します。 デフォルトのポート番号は 1433 です。
      説明 バベルフィッシュはTDS 7.1以降をサポートしています。 Microsoft SQL Server 2000以降のバージョンがサポートされています。
    • PostgreSQLリスナー: PostgreSQLのポートを介してリクエストを受信します。 既定のポート番号は 5432 です。
      説明 PostgreSQL 13または14を実行する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モード

  • アーキテクチャマルチ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購入ページをご参照ください。

使用上の注意

  • RDSインスタンスのBabelfishを有効にするには、インスタンスを作成した場合のみ有効にします。 RDSインスタンスを作成するには、次のパラメーター設定を使用する必要があります。
  • PostgreSQL 13または14を実行し、新しい汎用インスタンスタイプを使用する既存のRDSインスタンスでは、Babelfishを有効にすることはできません。
  • Babelfishを有効にすると、無効にすることはできません。

参考資料