「一份成本、两种引擎」Babelfish for RDS PostgreSQL发布

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: Babelfish for RDS PostgreSQL 重磅发布,阿里云 RDS 团队通过产品能力的提升,实现一份硬件成本两种引擎,帮助客户降低成本。

重点摘要


Babelfish for RDS PostgreSQL 重磅发布,阿里云 RDS 团队通过产品能力的提升,实现一份硬件成本两种引擎,帮助客户降低成本。


您只需要在购买阿里云 RDS PostgreSQL 实例时开启Babelfish选项,即可获得PostgreSQL和Microsoft SQL Server两种数据库引擎数据查询和处理的能力,使 RDS PostgreSQL 具备解析执行SQL Server T-SQL语句的能力。


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


如果您也有此烦恼?


如果您也有如下的烦恼,那么可以考虑使用Babelfish for RDS PostgreSQL。


  • 期望节省SQL Server的License费用支出,选择迁移到开源数据库PostgreSQL;


  • 政策要求去商业数据库,但又不希望投入大量时间和精力重写应用程序,可以将SQL Server切换为PostgreSQL;


  • 期望使用PostgreSQL强大的开源插件库能力,例如时空引擎PostGIS/Ganos,时序插件TimescaleDB等近100款插件;


  • 期望一份成本享受两种数据库引擎实时在线的数据查询和处理能力。


Babelfish介绍


基于Babelfish for PostgreSQL的开源项目,阿里云RDS PostgreSQL实例生产时开启Babelfish选项后,您可以同时获得PostgreSQL和Microsoft SQL Server两种数据库引擎实时在线数据查询和处理的能力。因此,您无需切换数据库驱动程序或重新编写SQL,只需要在少量代码适配的情况下,将应用程序的数据库从SQL Server迁移至开启了Babelfish的阿里云RDS PostgreSQL实例上来,轻松实现“一份成本,两种引擎”。


Bablefish为什么选择PostgreSQL?


一个实例,两个引擎,实时在线,双引擎双活,为什么是PostgreSQL数据库来实现呢?笔者相信下面都是可能的考虑因素:


  • PostgreSQL 是全球开源数据库排名第二的产品,有着强大的生态和社区力量,且有着最接近商业数据库的企业级特性,有着非常开放的生态和自由的开源协议;


  • 与开源数据库发展良好势头相反,部分商业数据库或原地踏步或一路走低;


  • 根据DB-Engine Ranking评测,PostgreSQL获得2017,2018和2020三次年度“DBMS of the Year”,最受开发者欢迎的数据库。


Babelfish整体架构


Babelfish 通过插件的方式扩展 PostgreSQL 的功能,使得 PostgreSQL 在具备自身所有能力的同时,又具备接受和处理 Microsoft SQL Server 数据库数据查询和处理的能力。


Babelfish整体架构分为三层,至上而下分为:


  • 应用层


  • RDS PostgreSQL引擎层


  • 云原生基础设施层


应用层    


开启了Babelfish选项的RDS PostgreSQL,既可以接收和处理来自SQL Server的应用连接,比如:C/C++类的MSSQL ODBC应用,JAVA类的MSSQL JDBC应用以及微软系使用最为广泛的C# .NET Provider for MSSQL类应用;又可以处理来自PostgreSQL类的应用,比如JAVA类PostgreSQL JDBC类应用。


引擎层


一个 Babelfish for RDS PostgreSQL 实例会监听两个 TCP 端口,一个是接受 SQL Server 协议(TDS)端口 ,默认是 1433,另一个是接受来自 PostgreSQL 协议的端口,默认是 5432。如此,可以实现“一份成本、两种引擎”,使得SQL Server与PostgreSQL双引擎在线。


TDS 协议端口接受和处理来自 SQL Serve应用类的请求,并将 SQL Server 的 T-SQL 经过自定义解析器转为 PostgreSQL 可以识别的执行计划,交由PostgreSQL内核执行,然后返回给SQL Server终端用户。


云原生基础设施层


RDS PostgreSQL数据库引擎,构建于阿里云云原生基础设施之上,采用存储计算分离架构。


迁移模式架构


Babelfish for RDS PostgreSQL 有两种迁移模式可供选择,分别是:single-db 和 multi-db 模式。迁移模式影响 SQL Server数据库的 schema 到 PostgreSQL 中 babelfish_db 库的 schema 名字的映射关系。


Single-DB Mode


在 single-db 模式下,只支持在 Babelfish 中创建一个用户数据库,Babelfish用户数据库的 schema名称和 PostgreSQL 中 babelfish_db 数据库下的 schema 名字相同。例如:在 TDS 端口中创建数据库 DB_A,在 DB_A 下创建 schema_A,则在 PostgreSQL 的 babelfish_db 数据库中看到两个 schema:dbo 和 schema_A,对应于SQL Server中 DB_A 数据库的 dbo 和 schema_A。其中dbo为SQL Server默认创建的系统schema。


single-db 模式应用场景:


  • 迁移单个 SQL Server 数据库到 Babelfish for RDS PostgreSQL,迁移之后的 schema 名字和 SQL Server 中被迁移数据库下的 schema 名字保持一致,使得应用服务可以在改动尽可能小的情况下切换到RDS PostgreSQL。
  • 整合多个 SQL Server 数据库到一个 Babelfish 数据库,最终目标是完全迁移到 RDS PostgreSQL。


Multi-DB Mode



在 multi-db 模式下,Babelfish 中用户数据库的 schema 名字映射到 PostgreSQL 的 babelfish_db 数据库中之后会变成:<数据库名>_。例如:在 TDS 端口中创建数据库 DB_A 和 DB_B,在 DB_A 和 DB_B 下分别创建 schema_A 和 schema_B,则在 PostgreSQL 的 babelfish_db 数据库中看到 DB_A 的 schema 为: DB_A_dbo 和 DB_A_schema_A;DB_B 的 schema 为: DB_B_dbo 和 DB_B_schema_B。


multi-db 模式应用场景:


  • SQL Server SAAS使用场景,按数据库划分多租户,每个库一个租户。


  • SQL Server中有多个用户数据库,需要RDS PostgreSQL需要一一对应。


  • 未来可能有迁移多个用户数据库到 RDS PostgreSQL 的需求。


  • 多个 SQL Server 用户数据库需要一起迁移,最终目标是使用 Babelfish 替代 SQL Server。


最佳实践


创建Babelfish for RDS PostgreSQL实例


新购RDS PostgreSQL 13版本时(当前只有PG 13支持Babelfish),勾选 启用 Babelfish即可创建出Babelfish for RDS PostgreSQL:



创建用户


RDS PostgreSQL控制台创建高权限账号



然后连接实例的 PostgreSQL 端口,执行命令:


call sys.babel_initialize_logins('babelfish_user');即可。


连接Babelfish TDS端口


您可以使用以下任何一款客户端连接工具来连接Babelfish for RDS PostgreSQL的TDS端口。


  • tsql (freetds)


  • sqlcmd (SQL Server Command Line)


  • SSMS (SQL Server Management Studio)


  • Azure Data Studio



简单操作范例


具体数据库DDL,DML等操作范例由于篇幅有限,请参考阿里云官方帮助文档:https://help.aliyun.com/document_detail/428620.htmlail/428620.html


应用程序


Babelfish for RDS PostgreSQLTDS协议,支持主流开发技术语言,诸如C#JavaPythonC/C++Go等。详情应用程序Demo,请参考阿里云官方帮助文档:https://help.aliyun.com/document_detail/428618.htmldetail/428618.html


注意事项


Babelfish 目前还没有完全兼容 Microsoft SQL Server T-SQL,详细的语法限制参见:https://babelfishpg.org/docs/usage/limitations-of-babelfishlimitations-of-babelfish

重点摘要


众所周知,Microsoft SQL Server是一款简单易用、有着非常多企业级特性、功能强大的商业数据库,兼容SQL Server语法,不断减少Limitations是Babelfish未来的发展方向。RDS PostgreSQL数据库内核团队已经和社区建立合作关系,会不断关注相关社区变化;同时也会把阿里云相关Babelfish经验、代码建设反哺社区。


作者介绍


谢桂起,PostgreSQL数据库爱好者,当前主要参与RDS PostgreSQL管控产品建设,欢迎有志之士加盟RDS产品部,邮箱:jianming.wjm@alibaba-inc.com

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
SQL 存储 关系型数据库
MySQL内存引擎:Memory存储引擎的适用场景
MySQL Memory存储引擎将数据存储在内存中,提供极速读写性能,适用于会话存储、临时数据处理、高速缓存和实时统计等场景。但其数据在服务器重启后会丢失,不适合持久化存储、大容量数据及高并发写入场景。本文深入解析其特性、原理、适用场景与限制,并提供性能优化技巧及替代方案比较,助你合理利用这一“内存闪电”。
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
3月前
|
存储 关系型数据库 MySQL
介绍MySQL的InnoDB引擎特性
总结而言 , Inno DB 引搞 是 MySQL 中 高 性 能 , 高 可靠 的 存 储选项 , 宽泛 应用于要求强 复杂交易处理场景 。
125 15
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
6月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
720 2
|
关系型数据库 分布式数据库 数据库
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
557 0
|
存储 缓存 关系型数据库
|
存储 SQL 并行计算
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(中)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
653 0

相关产品

  • 云数据库 RDS
  • 云数据库 RDS PostgreSQL 版
  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多