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モード
アーキテクチャ
説明: このモードでは、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モード
アーキテクチャ
説明: このモードでは、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インスタンスは使用できなくなります。