O Babelfish permite que sua instância do ApsaraDB RDS for PostgreSQL interprete instruções T-SQL e aceite conexões TDS. Assim, você executa cargas de trabalho do SQL Server no PostgreSQL com alterações mínimas no código.
O que é o Babelfish
O Babelfish for ApsaraDB RDS for PostgreSQL baseia-se no projeto open source Babelfish for PostgreSQL. Ative o Babelfish ao criar uma instância do RDS PostgreSQL para analisar e executar instruções T-SQL do SQL Server juntamente com consultas nativas do PostgreSQL.
O Babelfish oferece suporte ao SQL Server Tabular Data Stream (TDS) wire protocol e à T-SQL, the Microsoft SQL Server query language. Migre aplicações do SQL Server para o RDS PostgreSQL com poucas alterações de código, sem trocar drivers de banco de dados ou reescrever instruções SQL.
Cenários
Reduzir custos com licenças do SQL Server.
Migrar do SQL Server para o PostgreSQL com alterações mínimas na aplicação.
Acessar extensões do PostgreSQL, como PostGIS para análise espacial e TimescaleDB para dados de séries temporais.
Obter capacidades de mecanismo duplo (SQL Server e PostgreSQL) pelo custo de uma única instância.
Arquitetura
Como o Babelfish processa solicitações SQL:
-
A instância escuta em duas portas TCP para receber solicitações SQL:
-
TDS Listener: recebe solicitações SQL na porta TDS. Porta padrão: 1433.
NotaO Babelfish oferece suporte ao protocolo TDS versão 7.1 e posteriores (SQL Server 2000+).
-
PostgreSQL Listener: recebe solicitações SQL na porta do PostgreSQL. Porta padrão: 5432.
NotaAtualmente, o ApsaraDB RDS for PostgreSQL 15 tem suporte.
-
As solicitações da porta TDS vão para o analisador T-SQL, que converte o T-SQL em um plano de execução do PostgreSQL.
As solicitações da porta do PostgreSQL passam pelo analisador nativo do PostgreSQL.
O executor do PostgreSQL processa todos os planos de execução.
Com o Babelfish, uma única instância do RDS PostgreSQL atende clientes SQL Server e PostgreSQL simultaneamente. Isso reduz custos e amplia as capacidades.
Modos de migração
O Babelfish armazena todos os objetos e estruturas migrados do SQL Server em um banco de dados PostgreSQL chamado babelfish_db.
Se você se conectar à instância pela porta TDS, o banco de dados babelfish_db não ficará visível.
Escolha o modo Single-DB ou Multi-DB. Essa escolha afeta o esquema e o nome do banco de dados SQL Server dentro do babelfish_db.
Modo Single-DB
Architecture:

-
Description: Os nomes dos esquemas no babelfish_db correspondem diretamente aos nomes originais dos esquemas do SQL Server.
Exemplo: você cria o banco de dados DB_A pela porta TDS com o esquema schema_A.
No banco de dados babelfish_db do PostgreSQL, os nomes dos esquemas são dbo e schema_A.
No banco de dados DB_A do SQL Server, os nomes dos esquemas são dbo e schema_A.
Modo Multi-DB
Architecture:

-
Description: Os esquemas do PostgreSQL usam o formato
dbname_schemaname. Os nomes dos esquemas do SQL Server permanecem inalterados.Exemplo: você cria o banco de dados DB_A pela porta TDS com o esquema schema_A.
No banco de dados babelfish_db do PostgreSQL, os nomes dos esquemas são DB_A_dbo e DB_A_schema_A.
No banco de dados DB_A do SQL Server, os nomes dos esquemas são dbo e schema_A.
Faturamento
O Babelfish não adiciona custos extras à sua instância do RDS PostgreSQL. Os preços variam conforme a região, as especificações e o armazenamento, conforme listado na página de compra do ApsaraDB RDS.
Observações de uso
Não é possível ativar o Babelfish em uma instância existente do ApsaraDB RDS for PostgreSQL.
Após ativar o Babelfish, não é possível desativá-lo.
Depois que a instância é criada, um banco de dados chamado
babelfish_dbé inicializado automaticamente. Trata-se de um banco de dados crítico para o recurso Babelfish. Não exclua esse banco de dados. Caso contrário, a instância ficará indisponível.