本文从产品特性、架构、适用场景以及使用方法等维度介绍Babelfish for RDS PostgreSQL实例,帮助您快速了解并上手使用。

Babelfish是什么

基于Babelfish for PostgreSQL的开源项目,阿里云RDS PostgreSQL实例购买时开启Babelfish选项后,可以同时获得Microsoft SQL Server和PostgreSQL两种数据库引擎数据查询和处理的能力,从而使RDS PostgreSQL具备解析执行SQL Server T-SQL语句的能力。

Babelfish支持SQL Server Tabular Data Stream (TDS) wire protocolT-SQL(Microsoft SQL Server 查询语言),因此您无需切换数据库驱动程序或重新编写SQL,只需要在适配少量代码的情况下,将应用程序的数据库从SQL Server迁移至开启了Babelfish的阿里云RDS PostgreSQL实例上。

适用场景

  • 如果您期望节省SQL Server的License费用支出。
  • 如果您计划将SQL Server数据库切换为PostgreSQL,又不希望投入大量的时间和精力重写应用程序。
  • 如果您期望使用PostgreSQL强大的开源插件库能力,例如时空定位插件PostGIS,时序插件TimescaleDB等。
  • 如果您期望一份成本享受两种数据库引擎的数据处理能力。

Babelfish for RDS PostgreSQL架构图

Babelfish架构图
架构说明:
  • Babelfish for RDS PostgreSQL实例具备两个TCP端口,分别监听来自SQL Server和PostgreSQL客户端的SQL请求。
    • TDS Listener:接收SQL Server协议端口(TDS)的SQL请求,默认端口号为1433。
      说明 Babelfish支持TDS协议7.1及更高版本,即支持Microsoft SQL Server 2000及以上版本。
    • PostgreSQL Listener:接收PostgreSQL协议端口的SQL请求,默认端口号为5432。
      说明 当前支持RDS PostgreSQL 13和14。
  • Babelfish for RDS PostgreSQL实例接收来自TDS Listener端口的SQL请求时,该请求被转发到T-SQL解析器,将SQL Server的T-SQL转换为PostgreSQL可识别的执行计划。
  • Babelfish for RDS PostgreSQL实例接收来自PostgreSQL Listener端口的SQL请求时,该请求被转发到PostgreSQL解析器,生成执行计划。
  • PostgreSQL内部的SQL执行器统一处理,执行所有计划。

开启了Babelfish功能的RDS PostgreSQL实例,使您同时具备了两个数据库引擎(PostgreSQL和SQL Server)的能力,既可以处理来自SQL Server的请求,又可以处理来自PostgreSQL的请求,在降低成本的同时获得更多的能力支持。

迁移模式简介

Babelfish for RDS PostgreSQL实例会预置一个名为babelfish_db的PostgreSQL数据库,所有迁移的SQL Server对象和结构都会放置在该数据库下。

说明 如果您通过TDS端口连接实例,babelfish_db数据库不可见。

您可以选择Single-DB模式(单数据库模式)或Multi-DB模式(多数据库模式)。不同模式下,babelfish_db内的SQL Server数据库模式及名称不同。

Single-DB模式

  • 架构图single-db
  • 说明:该模式下,babelfish_db数据库中用户数据库的Schema名称与SQL Server中的相同。
    例如:通过TDS端口创建数据库DB_A,然后在DB_A下创建schema_A。
    • 在PostgreSQL的babelfish_db数据库中,Schema名称为:dbo和schema_A。
    • 在SQL Server的DB_A数据库中,Schema名称为:dbo和schema_A。

Multi-DB模式

  • 架构图Multi-DB
  • 说明:该模式下,在PostgreSQL中,用户数据库的schema名称为dbname_schemaname。在SQL Server中,Schema名称保持不变。
    例如:通过TDS端口创建数据库DB_A,然后在DB_A下创建schema_A。
    • 在PostgreSQL的babelfish_db数据库中,Schema名称为:DB_A_dbo和DB_A_schema_A。
    • 在SQL Server的DB_A数据库中,Schema名称为:dbo和schema_A。

计费

Babelfish for RDS PostgreSQL实例与通用RDS PostgreSQL实例售价相同,不会收取任何额外费用,价格与所选地域、规格、存储等配置相关,请前往购买页面查看。

注意事项

  • 当前仅支持在购买实例时开通Babelfish,且实例需满足以下条件:
  • 已购买的RDS PostgreSQL 13或14新通用规格实例,暂不支持开通Babelfish。
  • 开通Babelfish后,暂不支持关闭。

使用方法