Babelfish のアーキテクチャ
Babelfish を有効にして Aurora PostgreSQL クラスターを作成すると、Aurora は babelfish_db
という名前の PostgreSQL データベースを使用してクラスターをプロビジョンします。このデータベースは、移行されたすべての SQL Server オブジェクトおよび構造が存在する場所です。
注記
Aurora PostgreSQL クラスターでは、babelfish_db
データベース名は Babelfish 用に予約されています。Babelfish DB クラスターの Babelfish に独自の「babelfish_db」データベースを作成すると、Aurora は正常に Babelfish のプロビジョニングができなくなります。
TDS ポートに接続すると、セッションは babelfish_db
データベースに置かれます。T-SQL からは、構造は SQL Server インスタンスに接続されている状態と似た見た目になります。master
、msdb
、および tempdb
データベース、そして sys.databases
カタログが確認できます。USE ステートメントを使用して追加のユーザーデータベースを作成し、データベース間で切り替えることができます。SQL Server ユーザーデータベースを作成すると、そのデータベースは babelfish_db
PostgreSQL データベースにフラット化されます。ユーザーのデータベースは、SQL Server が提供するものと等しい、またはそれに類するクロスデータベース構文およびセマンティクスを保持します。
1 つのデータベースまたは複数のデータベースでの babelfish の使用
Babelfish で使用する Aurora PostgreSQL クラスターを作成する場合は、単独で 1 つの SQL Server データベースを使用するか、複数の SQL Server データベースを一緒に使用するかを選択します。選択した内容は、babelfish_db
データベース内の SQLServer スキーマの名前が Aurora PostgreSQL からどのように表示されるかに影響します。移行モードは migration_mode
パラメータに保存されます。以前に作成したすべての SQL オブジェクトにアクセスできなくなる可能性があるため、クラスターの作成後にこのパラメータを変更しないでください。
シングルデータベースモードでは、SQL Server データベースのスキーマ名は、PostgreSQL の babelfish_db
データベースと同じままです。1 つのデータベースだけを移行する場合には、移行したユーザーデータベースのスキーマ名は、SQL Server で使用されているのと同じ名前の PostgreSQL で参照できます。例えば、dbo
と smith
スキーマは dbA
データベース内に存在します。
TDS 経由で接続すると、SQL Server の場合と同様に、USE dba
を実行して T-SQL から スキーマ dbo
と dev
を表示することができます。変更されていないスキーマ名は PostgreSQL からも確認できます。
マルチデータベースモードでは、PostgreSQL からアクセスされたとき、ユーザーデータベースのスキーマ名は dbname_schemaname
になります。T-SQL からアクセスされたときのスキーマ名は変わりません。
図のように、TDS ポート経由で接続し T-SQL を使用する場合、マルチデータベースモードとシングルデータベースモードは SQL Server と同じです。例えば、USE dbA
はスキーマ dbo
と dev
を SQL Serverの場合と同じように列挙します。dba_dbo
や dba_dev
などのマップされたスキーマ名は、PostgreSQL から確認できます。
各データベースには引き続きスキーマが含まれます。各データベースの名前は、以下の例のようにアンダースコアを区切り文字として、SQL Server スキーマ名に付加されます。
-
dba
がdba_dbo
とdba_dev
を含む。 -
dbb
がdbb_dbo
とdbb_test
を含む。 -
dbc
がdbc_dbo
とdbc_prod
を含む。
babelfish_db
データベース内で、T-SQL ユーザーは引き続き USE
dbname
を実行してデータベースコンテキストを変更する必要があります。そうすることで外観が SQL Server と似たままになります。
移行モードの選択
各移行モードにはメリットとデメリットがあります。使用しているユーザーデータベース数と移行計画に基づいて、移行モードを選択します。Babelfish で使用するクラスターの作成後は、以前に作成したすべての SQL オブジェクトにアクセスできなくなる可能性があるため、移行モードを変更しないでください。移行モードを選択する際は、ユーザーデータベースとクライアントの要件を考慮してください。
Babelfish で使用するクラスターを作成すると、Aurora PostgreSQL はシステムデータベース、master
および tempdb
を作成します。システムデータベース (master
または tempdb
) のオブジェクトを作成または変更した場合、新しいクラスターにこれらのオブジェクトを必ず再作成してください。SQL Server と異なり、Babelfish は クラスターの再起動後、 tempdb
を再初期化しません。
シングルデータベース移行モードは、以下の場合に使用します。
-
単一の SQL Server データベースを移行する場合。シングルデータベースモードでは、PostgreSQL からアクセスされたときの移行されたスキーマ名は、元の SQL Server スキーマ名と同じです。これにより、PostgreSQL 接続で実行するように最適化する場合に、既存の SQL クエリへのコード変更を減らすことができます。
-
最終目標がネイティブ Aurora PostgreSQL への完全移行である場合。移行する前にスキーマを 1 つのスキーマに統合 (
dbo
) し、それから単一のクラスターに移行すると、必要な変更が少なく済みます。
次の場合は、複数のデータベース移行モードを使用します。
-
同じインスタンス内の複数のユーザーデータベースでデフォルトの SQL Server エクスペリエンスを実現する場合。
-
複数のユーザーデータベースを一緒に移行する必要がある場合。