Babelfish のアーキテクチャ - Amazon Aurora

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 インスタンスに接続されている状態と似た見た目になります。mastermsdb、および 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 で参照できます。例えば、dbosmith スキーマは dbAデータベース内に存在します

単一のデータベースを移行する。

TDS 経由で接続すると、SQL Server の場合と同様に、USE dba を実行して T-SQL から スキーマ dbodev を表示することができます。変更されていないスキーマ名は PostgreSQL からも確認できます。

マルチデータベースモードでは、PostgreSQL からアクセスされたとき、ユーザーデータベースのスキーマ名は dbname_schemaname になります。T-SQL からアクセスされたときのスキーマ名は変わりません。

複数のデータベースを移行する。

図のように、TDS ポート経由で接続し T-SQL を使用する場合、マルチデータベースモードとシングルデータベースモードは SQL Server と同じです。例えば、USE dbA はスキーマ dbodev を SQL Serverの場合と同じように列挙します。dba_dbo  や dba_dev などのマップされたスキーマ名は、PostgreSQL から確認できます。

各データベースには引き続きスキーマが含まれます。各データベースの名前は、以下の例のようにアンダースコアを区切り文字として、SQL Server スキーマ名に付加されます。

  • dbadba_dbodba_dev を含む。

  • dbbdbb_dbodbb_test を含む。

  • dbcdbc_dbodbc_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 エクスペリエンスを実現する場合。

  • 複数のユーザーデータベースを一緒に移行する必要がある場合。