Todos os produtos
Search
Central de documentação

:Babelfish for ApsaraDB RDS for PostgreSQL

Última atualização: Jun 26, 2026

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.

Funções integradas do T-SQL compatíveis com o Babelfish

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

image

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.

      Nota

      O 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.

      Nota

      Atualmente, 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.

Nota

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: single-db

  • 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: Multi-DB

  • 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.

Primeiros passos