Arquitectura de Babelfish
Al crear un clúster de Aurora PostgreSQL con Babelfish activado, Aurora aprovisiona el clúster con una base de datos PostgreSQL denominada babelfish_db
. Esta base de datos es donde residen todos los objetos y estructuras de SQL Server migrados.
nota
En un clúster Aurora PostgreSQL, el nombre de la base de datos babelfish_db
está reservado para Babelfish. La creación de su propia base de datos "babelfish_db" en un clúster de base de datos de Babelfish impide que Aurora aprovisione correctamente Babelfish.
Al conectarse al puerto TDS, la sesión se coloca en la base de datos babelfish_db
. En T-SQL, la estructura tiene un aspecto similar a estar conectado a una instancia de SQL Server. Puede ver las bases de datos master
, msdb
y tempdb
, y el catálogo sys.databases
. Puede crear bases de datos de usuario adicionales y cambiar entre bases de datos con la instrucción USE. Cuando se crea una base de datos de usuario de SQL Server, se aplana en la base de datos babelfish_db
de PostgreSQL. La base de datos retiene la sintaxis y la semántica entre bases de datos iguales o similares a las proporcionadas por SQL Server.
Uso de Babelfish con una base de datos única o varias bases de datos
Al crear un clúster de Aurora PostgreSQL para usarlo con Babelfish, elija entre utilizar una sola base de datos de SQL Server por sí sola o varias bases de datos de SQL Server juntas. Su elección afecta a la manera en la que aparecen los nombres de los esquemas de SQL Server dentro de la base de datos babelfish_db
en Aurora PostgreSQL. El modo de migración se almacena en el parámetro migration_mode
. No debe cambiar este parámetro después de crear el clúster, ya que podría perder el acceso a todos los objetos SQL creados anteriormente.
En el modo de una sola base de datos, los nombres de los esquemas de la base de datos de SQL Server siguen siendo los mismos en la base de datos babelfish_db
de PostgreSQL. Si decide migrar solo una base de datos, se puede hacer referencia a los nombres de esquema de la base de datos de usuario migrada en PostgreSQL con los mismos nombres que se utilizan en SQL Server. Por ejemplo, los esquemas dbo
y smith
residen dentro de la base de datos dbA
.
Al conectarse a través de TDS, puede ejecutar USE dba
para ver los esquemas dbo
y dev
de T-SQL, como lo haría en SQL Server. Los nombres de esquema sin cambios también están visibles en PostgreSQL.
En el modo de varias bases de datos, los nombres de esquema de las bases de datos de usuario se convierten en dbname_schemaname
cuando se accede a ellas desde PostgreSQL. Los nombres de esquema siguen siendo los mismos cuando se accede a ellos desde T-SQL.
Como se muestra en la imagen, el modo de base de datos múltiple y el modo de base de datos única son iguales a los de SQL Server cuando se conectan a través del puerto TDS y utilizan T-SQL. Por ejemplo, USE dbA
enumera los esquemas dbo
y dev
tal como se hace en SQL Server. Los nombres de esquema asignados, tales como dba_dbo
y dba_dev
, están visibles en PostgreSQL.
Cada base de datos sigue conteniendo sus esquemas. El nombre de cada base de datos se antepone al nombre del esquema de SQL Server, y se utiliza un guion bajo como delimitador, por ejemplo:
-
dba
contienedba_dbo
ydba_dev
. -
dbb
contienedbb_dbo
ydbb_test
. -
dbc
contienedbc_dbo
ydbc_prod
.
Dentro de la base de datos babelfish_db
, el usuario de T-SQL aún necesita ejecutar USE
dbname
para cambiar el contexto de la base de datos, de modo que la apariencia se mantenga similar a SQL Server.
Elección de un modo de migración
Cada modo de migración tiene ventajas y desventajas. Elija el modo de migración en función del número de bases de datos de usuario que tenga y de sus planes de migración. Después de crear un clúster para usarlo con Babelfish, no se puede cambiar el modo de migración, ya que se puede perder el acceso a todos los objetos de SQL que se han creado anteriormente. Al elegir un modo de migración, tenga en cuenta los requisitos de las bases de datos de usuario y los clientes.
Al crear un clúster para usarlo con Babelfish, Aurora PostgreSQL crea las bases de datos del sistema, master
y tempdb
. Si ha creado o modificado objetos en las bases de datos del sistema (master
o tempdb
), asegúrese de volver a crear esos objetos en el nuevo clúster. A diferencia de SQL Server, Babelfish no reinicializa tempdb
después de reiniciar el clúster.
Utilice el modo de migración de base de datos única en los siguientes casos:
-
Si va a migrar una sola base de datos de SQL Server. En el modo de base de datos única, los nombres de esquema migrados a los que se accede desde PostgreSQL son idénticos a los nombres de esquema de SQL Server originales. Esto reduce los cambios de código en las consultas SQL existentes si desea optimizarlas para que se ejecuten con una conexión de PostgreSQL.
-
Si su objetivo final es una migración completa de forma nativa a Aurora PostgreSQL. Antes de migrar, consolide los esquemas en un solo esquema (
dbo
) y, a continuación, migre a un solo clúster para reducir los cambios necesarios.
Utilice el modo de migración de varias bases de datos en los siguientes casos:
-
Si desea disfrutar de la experiencia predeterminada de SQL Server con varias bases de datos de usuarios en la misma instancia.
-
Si es necesario migrar varias bases de datos de usuarios juntas.