Server吗 PostgreSQL可以交流微软SQL
许多人关于 PostgreSQL 生态曾经开展到什么阶段并没有一个直观的印象 —— 除了吞噬数据库环球,囊括万物的裁减生态之外,PostgreSQL 还可以间接从内核层面,交流掉 Oracle,SQL Server 与 MongoDB,当然 MySQL 就更不在话下了。
当然要说干流数据库中,泄露危险最高的是谁,那毫无不懂是微软的 SQL Server 了。MSSQL 被替代的是最彻底的 —— 间接在 WireProtocol 层面被替代了。而主导这件事的是 AWS,亚马逊云服务。
只管我不时吐槽云厂商白嫖开源,但我抵赖这种战略是极为有效的 —— AWS 拿着开源的 PostgreSQL 和 MySQL 内核,一路杀穿数据库市场,拳打 Oracle ,脚踢微软,成为数据库市场份额毫无争议的一哥。而这两年 AWS 更是玩了一招釜底抽薪,开发整合了一个 BabelfishPG 的裁减插件,提供“线缆协定”级别的兼容性。
所谓线缆协定兼容,就是指客户端什么都不用改,依然访问 SQL Server 1433 端口,经常使用 MSSQL 的驱动与命令行工具(sqlcmd)访问加装 BabelfishPG 的集群就可以了。而且更神奇的是,你依然可以经常使用 PostgreSQL 的协定言语语法,从原来的 5432 端口访问,和 SQL Server 的客户端并存 —— 这就给迁徙带来了极大的便利条件。
当然 Babelfish 并不是一个单纯的 PG 裁减插件,它对 PostgreSQL 内核启动了大批修正与适配。并经过四个裁减插件区分提供了 TSQL 语法支持,TDS 线缆协定支持,数据类型以及其余函数支持。
在不同的平台上编译打包这样的内核与裁减并不是轻松容易的一件事,因此 WiltonDB —— 一个 Babelfish 的发行版就做了这件事,将 BabelfishPG 编译打包为 EL 7/8/9 与 Ubuntu 系统,甚至 Windows 下可用的 RPM / DEB / MSI 包。
当然,只要 RPM / DEB 包,距离提供消费级的服务还依然差得太远,而在最近发布的 Pigsty v3 中,咱们提供了将原生 PostgreSQL 内核交流为 BabelfishPG 的才干。
创立这样一套 MSSQL 集群,所需的不过是在集群定义中修正几个参数。而后依然是一件傻瓜式拉起 —— 相似主从搭建, 裁减装置,参数提升,用户性能,HBA规定设定,甚至是服务流量散发,都会智能依据性能文件一键拉起。
在经常使用通常上,你齐全可以把 Babelfish 集群当作一套个别的 PostgreSQL 集群来经常使用与治理。惟一的区别就是客户端在经常使用 5432 PGSQL 协定的基础上,还可以选用能否要经常使用 1433 端口上的 TSQL 协定支持。
例如,您可以轻松经过性能,将原本固定指向主库衔接池 6432 端口的 Primary 服务重定向到 1433 端口,从而成功缺点切换下的无缝 TDS / TSQL 流量切换。
这象征着原本属于 PostgreSQL RDS 的才干 —— 高可用,期间点复原,监控系统,IaC管控,SOP预案,甚至有数的裁减插件都可以嫁接融合到 SQL Server 版本的内核之上。
怎样迁徙过去?
PostgreSQL 生态除了有Babelfish这样给力的内核与裁减,还有着兴盛的工具生态。假设要想从 SQL Server 或 MySQL 迁徙到 PostgreSQL ,我剧烈介绍一款杀手级迁徙工具:PGLOADER。
这款迁徙工具傻瓜化到了离谱的水平,在现实的状况下,你只要要两个数据库的衔接串,就可以成功迁徙了。对,真的是一行多余的废话都没有。
有了 MSSQL 兼容内核裁减,又有了迁徙工具,存量的 SQL Server 搬迁会变的十分容易。
除了 MSSQL,还有……
除了 MSSQL,PostgreSQL 生态还有旨在替代 Oracle替代:PolarDB O 与 IvorySQL,旨在替代 MongoDB 的 FerretDB 与 PongoDB。以及三百多个提供各式各样性能的裁减插件。
实践上,简直整个数据库环球都在遭到 PostgreSQL 的冲击 —— 除了那些与 PostgreSQL 错开生态位(SQLite,DuckDB,MinIO),或许罗唆就是 PostgreSQL 套壳(Supabase,RDS,Aurora/Polar)的数据库。
咱们最近发布的开源 RDS PostgreSQL 方案 —— Pigsty 最近就支持了这些 PG 交流内核,准许用户在一套 PostgreSQL 部署中提供 MSSQL,Oracle,MongoDB,Firebase,MongoDB 的兼容性替代才干。