最近 消息传出,亚马逊决定公开“Babelfish for PostgreSQL”的源代码, 提议对 PostgreSQL 数据库进行扩展,以实现 Microsoft SQL Server 数据库的特定功能。
该项目的主要目标是提供在运行 PostgreSQL 的服务器上运行为 SQL Server 编写的应用程序的能力。 项目代码在 Apache 2.0 许可和 PostgreSQL 许可下开放。
对于那些不熟悉 Babelfish 的人来说,你应该知道这个 支持用于将客户端连接到 SQL Server、T-SQL 和 SQL Server 特定查询语言扩展的网络协议, 允许您将正在运行的应用程序从 Microsoft SQL Server 转换为 PostgreSQL,而无需修改代码或进行最少的更改,也无需更换 DBMS 的驱动程序。 对于应用程序,Babelfish 看起来像一个普通的 SQL 服务器。 该项目已在 Amazon Aurora 上使用。
今天,我们让 Babelfish 可用于 Aurora PostgreSQL。 Babelfish 使 Amazon Aurora PostgreSQL 兼容版能够理解 SQL Server 连接协议。 它使您能够将应用程序从 SQL Server 迁移到 PostgreSQL,成本更低、速度更快,并且与此类更改相关的风险更低。
据悉,该项目 Babelfish 遵循开放的开发模式 这使社区贡献者能够做出改变并影响发展。 对于用户,更改为 Babelfish 将允许您避免使用 SQL Server 的高额版税, 绕过许可限制,不依赖于专有产品维护政策的变化(取消福利、终止平台支持、价格上涨)。
该项目包括一组 PostgreSQL 扩展、一组 PostgreSQL 补丁和指南针工具包:
这些扩展为从 SQL Server 迁移所需的其他语法、数据类型和函数提供 PostgreSQL 支持。 总共提出了4个扩展:
- babelfishpg_tsql: 它是执行 T-SQL (Transact-SQL) 语言实现的扩展,该语言通过过程编程来增强 SQL,支持局部变量和处理字符串、日期和数学表达式的高级函数。 大多数请求的 T-SQL 函数已经实现,包括保存点、存储过程和嵌套事务。 但是,语法和功能的很大一部分仍未实现(通常,这些是在实际应用程序中很少使用的特性,即兼容性表)。 例如,构造“ADD SIGNATURE”、“CREATE AGGREGATE”、“CREATE / ALTER / DROP APPLICATION ROLE | ASSEMBLY | ASYMMETRIC KEY”、“BEGIN CONVERSATION TIME”、“END / MOVE CONVERSATION”等。 它们尚不可用。
- babelfishpg_tds: SQL Server 中使用的 TDS(表格数据流)协议实现的扩展,用于 DBMS 和客户端之间的网络连接。 支持 TDS 协议版本 7.1 及更高版本。
- babelfishpg_common: 用于实现 SQL Server 特定数据类型的扩展。
babelfishpg_money: 是基于 FixedDecimal 扩展代码的货币类型实现。
这些补丁包括为 Babelfish 扩展提供附加功能所必需的对 PostgreSQL 引擎的更改。 目前,与 PostgreSQL 开发人员一起,正在努力将准备好的补丁包含在主要的 PostgreSQL 组合中。 为 PostgreSQL 13 准备的补丁。
compass 实用程序旨在解析 T-SQL DDL 脚本和 SQL 代码以与 Babelfish 兼容。 在输出中,会生成一个报告,Babelfish 尚不支持启动应用程序所需的功能。
官方支持以下用于连接到 MS SQL Server 的客户端库:
- OLEDB / MSOLEDBSQL 提供程序
- OLEDB / SQLOLEDB 驱动程序
- Ado.NET 实体框架
- SQL Server 11.0 本机客户端
- ODBC(开放式数据库连接)
JDBC(Java 数据库连接)
最后 如果您有兴趣了解更多信息,您可以查看笔记的详细信息 在下面的链接中。 至于那些有兴趣能够看到源代码的人,他们可以这样做 从这个链接。