Arquitetura do Babelfish - Amazon Aurora

Arquitetura do Babelfish

Quando você cria um cluster do Aurora PostgreSQL com o Babelfish habilitado, o Aurora provisiona o cluster com um banco de dados PostgreSQL denominado babelfish_db. Esse banco de dados é o local onde residem todos os objetos e estruturas do SQL Server migrados.

nota

Em um cluster do Aurora PostgreSQL, o nome do banco de dados babelfish_db é reservado para Babelfish. A criação de seu próprio banco de dados “babelfish_db” em um cluster de banco de dados do Babelfish impede o Aurora de provisionar com êxito o Babelfish.

Quando você se conecta à porta do TDS, a sessão é colocada no banco de dados babelfish_db. No T-SQL, a estrutura parece semelhante a uma conexão com uma instância do SQL Server. É possível ver os bancos de dados master, msdb e tempdb e o catálogo sys.databases. É possível criar bancos de dados de usuário adicionais e alternar entre eles com a instrução USE. Quando você cria um banco de dados de usuários do SQL Server, ele é nivelado no banco de dados PostgreSQL babelfish_db. Seu banco de dados retém a sintaxe entre bancos de dados e uma semântica igual ou semelhante àquelas fornecidas pelo SQL Server.

Utilizar o Babelfish com um único banco de dados ou vários bancos de dados

Ao criar um cluster do Aurora PostgreSQL para uso com o Babelfish, você escolhe entre utilizar um único banco de dados SQL Server em seus próprios bancos de dados SQL Server ou em vários bancos de dados SQL Server juntos. Sua escolha afeta como os nomes dos esquemas do SQL Server dentro do banco de dados babelfish_db aparecem no Aurora PostgreSQL. O modo de migração é armazenado no parâmetro migration_mode. Você não deve alterar esse parâmetro depois de criar seu cluster, pois pode perder o acesso a todos os objetos SQL criados anteriormente.

No modo single-db, os nomes do esquema do banco de dados SQL Server permanecem os mesmos no banco de dados babelfish_db do PostgreSQL. Se você optar por migrar somente um único banco de dados, os nomes dos esquemas do banco de dados de usuário migrado poderão ser referenciados no PostgreSQL com os mesmos nomes usados no SQL Server. Por exemplo, os esquemas smith e dbo e residem no banco de dados dbA .


					Migrando um único banco de dados.

Ao se conectar via TDS, é possível executar USE dbA para ver esquemas dbo e smith do T-SQL, como você faria no SQL Server. Os nomes de esquema inalterados também são visíveis no PostgreSQL.

No modo de vários bancos de dados, os nomes dos esquemas dos bancos de dados de usuários se tornam dbname_schemaname quando acessados do PostgreSQL. Os nomes dos esquemas permanecem os mesmos quando acessados do T-SQL.


					Migrar vários bancos de dados.

Como mostrado na imagem, o modo de vários bancos de dados e o modo de banco de dados único são os mesmos que do SQL Server ao se conectar pela porta TDS e usar o T-SQL. Por exemplo, USE dbA lista os esquemas dbo e smith assim como acontece no SQL Server. Os nomes dos esquemas mapeados, como dbA_dbo e dbA_smith, são visíveis a partir do PostgreSQL.

Cada banco de dados ainda contém seus esquemas. O nome de cada banco de dados é anexado ao nome do esquema do SQL Server utilizando um sublinhado como delimitador, por exemplo:

  • dbA contém dbA_dbo e dbA_smith.

  • dbB contém dbB_dbo e dbB_jones.

  • dbC contém dbC_dbo e dbC_miller.

No interior do banco de dados babelfish_db, o usuário T-SQL ainda precisa executar USE dbname para alterar o contexto do banco de dados e, portanto, a aparência permanece semelhante à do SQL Server.

Escolher um modo de migração

Cada modo de migração tem vantagens e desvantagens. Escolha o modo de migração com base no número de bancos de dados de usuários que você possui e seus planos de migração. Depois de criar um cluster para uso com o Babelfish, você não deve alterar o modo de migração, pois pode perder o acesso a todos os objetos SQL criados anteriormente. Ao escolher um modo de migração, considere os requisitos dos seus bancos de dados de usuários e clientes.

Quando você cria um cluster para uso com o Babelfish, o Aurora PostgreSQL cria os bancos de dados do sistema, master e tempdb. Se você tiver criado ou modificado objetos nos bancos de dados do sistema (master ou tempdb), certifique-se de recriar esses objetos no novo cluster. Ao contrário do SQL Server, o Babelfish não reinicializa tempdb após uma reinicialização do cluster.

Utilize o modo de migração de banco de dados único nos seguintes casos:

  • Se estiver migrando um único banco de dados do SQL Server. No modo de banco de dados único, os nomes de esquemas migrados, quando acessados do PostgreSQL, são idênticos aos nomes de esquemas originais do SQL Server. Isso reduzirá as alterações de código nas consultas SQL existentes se você quiser otimizá-las para execução com uma conexão PostgreSQL.

  • Se o seu objetivo final for uma migração completa para o Aurora PostgreSQL nativo. Antes de migrar, consolide seus esquemas em um único esquema (dbo) e depois migre para um único cluster para reduzir as alterações necessárias.

Utilize o modo de migração de vários bancos de dados nos seguintes casos:

  • Se você quiser a experiência padrão do SQL Server com vários bancos de dados de usuários na mesma instância.

  • Se vários bancos de dados de usuários precisarem ser migrados juntos.