Microsoft SQL Server 迁移到 PostgreSQL 利器:Babelfish

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: Babelfish for PostgreSQL 加速了将 Microsoft SQL Server 应用程序迁移到 PostgreSQL 的旅程。Babelfish for PostgreSQL 是一个开源项目,可在 Apache 2.0 和 PostgreSQL 许可下使用。它使 PostgreSQL 能够理解来自 Microsoft SQL Server 编写的应用程序的查询。Babelfish 了解 SQL Server 有线协议和 Microsoft SQL Server 查询语言 T-SQL,此您不必切换数据库驱动程序或重新编写所有应用程序查询。

Babelfish for PostgreSQL

Babelfish for PostgreSQL 是一个开源项目,可在 Apache 2.0 和 PostgreSQL 许可下使用。它使 PostgreSQL 能够理解来自 Microsoft SQL Server 编写的应用程序的查询。Babelfish 了解 SQL Server 有线协议和 Microsoft SQL Server 查询语言 T-SQL,因此您不必切换数据库驱动程序或重新编写所有应用程序查询。借助 Babelfish,当前在 SQL Server 上运行的应用程序现在可以直接在 PostgreSQL 上运行,只需更改更少的代码。

Babelfish for PostgreSQL(Babelfish) 是一个工具,让 PostgreSQL 能够理解为Microsoft SQL Server 编写的应用程序的查询。Babelfish 是一组扩展,作为对PostgreSQL 的增强,提供了 T-SQL 功能和一个 Tabular Data Stream(TDS)监听端口。它支持 SQL ServerT-SQL,以及包括保存点、存储过程、嵌套事务等在内的显著功能。

Babelfish 采用开源的 Apache 2.0PostgreSQL 许可证,并构建在现有的PostgreSQL 之上。这种许可证允许您自由使用、修改、分发和销售包含Apache 2.0PostgreSQL 许可证软件的产品。

Babelfish for PostgreSQL 的组成

Babelfish for PostgreSQL 的组成包括以下几个主要部分:

1) Babelfish 核心补丁(Core Patch)

这是针对社区版 PostgreSQL 的补丁,通过对 PostgreSQL 进行修改,使其能够理解 SQL ServerT-SQL 语言和传输协议。这个核心补丁将被提交以纳入未来版本的 PostgreSQL 中。

2) Babelfish 扩展(Extensions)

构建在核心补丁之上的扩展,为 PostgreSQL 增加了 T-SQL 功能和 Tabular Data Stream(TDS) 监听端口。这些扩展是 Babelfish 的关键组成部分,使得 PostgreSQL 能够更好地处理 SQL Server 应用程序的查询和语法。

3) Babelfish Compass 工具

这是一个评估工具,用于分析 Microsoft SQL ServerSQL/DDL 代码,确定Babelfish 的支持水平,并生成一份报告。该报告可帮助用户在从 SQL Server 迁移到 PostgreSQL 的过程中做出决策,提供了对 Babelfish 支持的清晰了解。

这些组成部分协同工作,使得 PostgreSQL 能够更好地与 SQL Server 应用程序进行交互,加速了从 SQL ServerPostgreSQL 的迁移过程。这一体系结构的开放性和可扩展性使得用户能够更轻松地进行数据库迁移,并在需要时扩展功能。

Babelfish 的优势

Babelfish 通过使 SQL Server 应用程序更轻松地迁移到 PostgreSQL,帮助消除昂贵的许可费用。使用Babelfish,最初为 SQL Server 构建的应用程序可以直接在 PostgreSQL 上运行,而只需进行较少的代码更改,无需更改数据库驱动程序。

数据迁移-Migrations

工作原理

SQL

SQL:虽然 SQL 是一种 ANSI 标准,关系数据库因实现规范的支持程度不同以及具有特定的语言扩展而而出名。因此,在 SQL Server 中有效的查询可能不能直接在 PostgreSQL 中运行。为解决这个问题,Babelfish 有自己的解析器,创建适当的查询节点,使得 SQL Server 代码能够在 PostgreSQL 中本地执行。Babelfish 还为 SQL Server 提供了特定的数据类型、函数和运算符,这些在 PostgreSQL 中不存在或在 SQL ServerPostgreSQL 中的工作方式不同。

T-SQL

T-SQLT-SQLSQL Server 的语言,包括 SQL 标准的扩展。具体而言,T-SQL 包括用于存储过程的构造,如变量、异常、控制流等。Babelfish 将对这些构造的支持添加到 PostgreSQL 中。Babelfish 还支持 T-SQL 语义。例如,在传统的 PostgreSQL 中,某些错误会导致回滚,而在 SQL Server 中不会。通过 TDS 端口使用时,Babelfish 确保 PostgreSQL 遵循 SQL Server 的行为,确保正确性。

TDS

TDSSQL Server 的传输协议):Babelfish 还为 SQL Server 的传输协议TDS 添加了支持,该协议默认在端口 1433 上运行。这意味着 Babelfish 使用相同的网络协议、端口和连接驱动程序。这是通过协议挂钩本地实现的,因此它不是一个翻译层。

由于无需更换数据库驱动程序,并且更新 SQL 语言代码的工作量大大减少,使用 BabelfishSQL Server 迁移到 PostgreSQL 的应用程序将比完全迁移到本地 PostgreSQL 驱动程序和 PL/pgSQL 更快地启动和运行。由于Babelfish 是开源的,社区可以在识别迁移中的差距时扩展功能,增强PostgreSQL 的可扩展性,并针对更多用例进行优化。

转载声明:

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
8天前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
1月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
2月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
119 3
|
2月前
|
SQL 存储 关系型数据库
PostgreSQL核心之SQL基础学习
PostgreSQL核心之SQL基础学习
32 3
|
2月前
|
SQL 安全 关系型数据库
PostgreSQL SQL注入漏洞(CVE-2018-10915)--处理
【8月更文挑战第8天】漏洞描述:PostgreSQL是一款自由的对象关系型数据库管理系统,支持多种SQL标准及特性。存在SQL注入漏洞,源于应用未有效验证外部输入的SQL语句,允许攻击者执行非法命令。受影响版本包括10.5及更早版本等。解决方法为升级PostgreSQL
185 2
|
2月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
133 0
|
3月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
68 13
|
3月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
3月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
48 6
|
2月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
232 0

相关产品

  • 云原生数据库 PolarDB
  • 下一篇
    无影云桌面