Babelfish 架构 - Amazon Aurora

Babelfish 架构

当您在打开 Babelfish 的情况下创建 Aurora PostgreSQL 集群时,Aurora 会为该集群预置名为 babelfish_db 的 PostgreSQL 数据库。此数据库是所有迁移的 SQL Server 对象和结构所在的位置。

注意

在 Aurora PostgreSQL 集群中,系统会为 Babelfish 预留 babelfish_db 数据库名称。在 Babelfish 数据库集群上自行创建“babelfish_db”数据库会阻止 Aurora 成功预调配 Babelfish。

当您连接到 TDS 端口时,会话将被放置在 babelfish_db 数据库中。从 T-SQL 来看,该结构看起来类似于连接到 SQL Server 实例。您可以看到 mastermsdbtempdb 数据库以及 sys.databases 目录。您可以创建其他用户数据库并使用 USE 语句在数据库之间切换。当您创建 SQL Server 用户数据库时,该数据库将被展平到 babelfish_db PostgreSQL 数据库中。数据库保留的跨数据库语法和语义等于或类似于 SQL Server 提供的语法和语义。

将 Babelfish 与单个数据库或多个数据库结合使用

当您创建 Aurora PostgreSQL 集群以与 Babelfish 一起使用时,您可以选择单独使用单个 SQL Server 数据库或者将多个 SQL Server 数据库一起使用。您的选择会影响 babelfish_db 数据库内的 SQL Server 架构的名称显示在 Aurora PostgreSQL 中的方式。迁移模式存储在 migration_mode 参数中。创建集群后不得更改此参数,因为您可能会丢失对所有先前创建的 SQL 对象的访问权限。

在单数据库模式下,SQL Server 数据库的模式名称与 PostgreSQL 的 babelfish_db 数据库中保持一致。如果您选择仅迁移单个数据库,则可以在 PostgreSQL 中引用迁移的用户数据库的模式名称,其名称与 SQL Server 中使用的名称相同。例如,dbosmith 架构驻留在 dbA 数据库内

迁移单个数据库。

通过 TDS 进行连接时,您可以运行 USE dba 以查看来自 T-SQL 的架构 dbodev,就像在 SQL Server 中一样。不变的架构名称也可以从 PostgreSQL 中看到。

在多数据库模式下,当从 PostgreSQL 中访问时,用户数据库的模式名称变为 dbname_schemaname。从 T-SQL 中访问时,模式名称保持不变。

迁移多个数据库。

如图中所示,当通过 TDS 端口连接并使用 T-SQL 时,多数据库模式和单数据库模式与 SQL Server 相同。例如,USE dbA 列出架构 dbodev,就像在 SQL Server 中一样。映射的架构名称,例如 dba_dbo  和 dba_dev,在 PostgreSQL 中可见。

每个数据库仍包含您的架构。每个数据库的名称都加在 SQL Server 架构的名称之前,使用下划线作为分隔符,例如:

  • dba 包含 dba_dbodba_dev

  • dbb 包含 dbb_dbodbb_test

  • dbc 包含 dbc_dbodbc_prod

babelfish_db 数据库内,T-SQL 用户仍然需要运行 USE dbname 以更改数据库上下文,因此外观和感觉与 SQL Server 相似。

选择迁移模式

每种迁移模式都有优点和缺点。根据您拥有的用户数据库数量和迁移计划选择迁移模式。创建用于 Babelfish 的集群后,您不得更改迁移模式,因为您可能无法访问之前创建的所有 SQL 对象。选择迁移模式时,请考虑用户数据库和客户端的要求。

当您创建用于 Babelfish 的集群时,Aurora PostgreSQL 会创建系统数据库 mastertempdb。如果您在系统数据库中创建或修改了对象(mastertempdb),请确保在新集群中重新创建这些对象。与 SQL Server 不同,Babelfish 不会在集群重启后重新初始化 tempdb

在以下情况下使用单个数据库迁移模式:

  • 如果您要迁移单个 SQL Server 数据库。在单个数据库模式下,当从 PostgreSQL 访问时迁移的模式名称与原始的 SQL Server 模式名称相同。如果您想优化现有 SQL 查询以通过 PostgreSQL 连接运行,则这可以减少对现有 SQL 查询的代码更改。

  • 如果您的最终目标是完全迁移到原生 Aurora PostgreSQL。在迁移之前,将您的架构整合到单个架构中 (dbo),然后迁移到单个集群中以减少所需的更改。

在以下情况下使用多数据库迁移模式:

  • 如果您想在同一个实例中使用多个用户数据库获得原定设置 SQL Server 体验。

  • 如果需要一起迁移多个用户数据库。