PostgreSQL可以替換微軟SQL Server嗎?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
許多人對(duì)于 PostgreSQL 生態(tài)已經(jīng)發(fā)展到什么階段并沒(méi)有一個(gè)直觀的印象 —— 除了吞噬數(shù)據(jù)庫(kù)世界,囊括萬(wàn)物的擴(kuò)展生態(tài)之外,PostgreSQL 還可以直接從內(nèi)核層面,替換掉 Oracle,SQL Server 與 MongoDB,當(dāng)然 MySQL 就更不在話下了。 當(dāng)然要說(shuō)主流數(shù)據(jù)庫(kù)中,暴露風(fēng)險(xiǎn)最高的是誰(shuí),那毫無(wú)疑問(wèn)是微軟的 SQL Server 了。MSSQL 被替代的是最徹底的 —— 直接在 WireProtocol 層面被替代了。而主導(dǎo)這件事的是 AWS,亞馬遜云服務(wù)。 Babelfish雖然我一直吐槽云廠商白嫖開(kāi)源,但我承認(rèn)這種策略是極為有效的 —— AWS 拿著開(kāi)源的 PostgreSQL 和 MySQL 內(nèi)核,一路殺穿數(shù)據(jù)庫(kù)市場(chǎng),拳打 Oracle ,腳踢微軟,成為數(shù)據(jù)庫(kù)市場(chǎng)份額毫無(wú)爭(zhēng)議的一哥。而這兩年 AWS 更是玩了一招釜底抽薪,開(kāi)發(fā)整合了一個(gè) BabelfishPG 的擴(kuò)展插件,提供“線纜協(xié)議”級(jí)別的兼容性。
所謂線纜協(xié)議兼容,就是指客戶端什么都不用改,依然訪問(wèn) SQL Server 1433 端口,使用 MSSQL 的驅(qū)動(dòng)與命令行工具(sqlcmd)訪問(wèn)加裝 BabelfishPG 的集群就可以了。而且更神奇的是,你依然可以使用 PostgreSQL 的協(xié)議語(yǔ)言語(yǔ)法,從原來(lái)的 5432 端口訪問(wèn),和 SQL Server 的客戶端并存 —— 這就給遷移帶來(lái)了極大的便利條件。 WiltonDB當(dāng)然 Babelfish 并不是一個(gè)單純的 PG 擴(kuò)展插件,它對(duì) PostgreSQL 內(nèi)核進(jìn)行了少量修改與適配。并通過(guò)四個(gè)擴(kuò)展插件分別提供了 TSQL 語(yǔ)法支持,TDS 線纜協(xié)議支持,數(shù)據(jù)類型以及其他函數(shù)支持。 在不同的平臺(tái)上編譯打包這樣的內(nèi)核與擴(kuò)展并不是輕松容易的一件事,因此 WiltonDB —— 一個(gè) Babelfish 的發(fā)行版就做了這件事,將 BabelfishPG 編譯打包為 EL 7/8/9 與 Ubuntu 系統(tǒng),甚至 Windows 下可用的 RPM / DEB / MSI 包。 Pigsty v3 當(dāng)然,只有 RPM / DEB 包,距離提供生產(chǎn)級(jí)的服務(wù)還依然差得太遠(yuǎn),而在最近發(fā)布的 Pigsty v3 中,我們提供了將原生 PostgreSQL 內(nèi)核替換為 BabelfishPG 的能力。 創(chuàng)建這樣一套 MSSQL 集群,所需的不過(guò)是在集群定義中修改幾個(gè)參數(shù)。然后依然是一件傻瓜式拉起 —— 類似主從搭建, 擴(kuò)展安裝,參數(shù)優(yōu)化,用戶配置,HBA規(guī)則設(shè)定,甚至是服務(wù)流量分發(fā),都會(huì)自動(dòng)根據(jù)配置文件一鍵拉起。 在使用實(shí)踐上,你完全可以把 Babelfish 集群當(dāng)作一套普通的 PostgreSQL 集群來(lái)使用與管理。唯一的區(qū)別就是客戶端在使用 5432 PGSQL 協(xié)議的基礎(chǔ)上,還可以選擇是否要使用 1433 端口上的 TSQL 協(xié)議支持。 例如,您可以輕松通過(guò)配置,將原本固定指向主庫(kù)連接池 6432 端口的 Primary 服務(wù)重定向到 1433 端口,從而實(shí)現(xiàn)故障切換下的無(wú)縫 TDS / TSQL 流量切換。 這意味著原本屬于 PostgreSQL RDS 的能力 —— 高可用,時(shí)間點(diǎn)恢復(fù),監(jiān)控系統(tǒng),IaC管控,SOP預(yù)案,甚至無(wú)數(shù)的擴(kuò)展插件都可以嫁接融合到 SQL Server 版本的內(nèi)核之上。 怎么遷移過(guò)去?PostgreSQL 生態(tài)除了有Babelfish這樣給力的內(nèi)核與擴(kuò)展,還有著繁榮的工具生態(tài)。如果要想從 SQL Server 或 MySQL 遷移到 PostgreSQL ,我強(qiáng)烈推薦一款殺手級(jí)遷移工具:PGLOADER。 這款遷移工具傻瓜化到了離譜的程度,在理想的情況下,你只需要兩個(gè)數(shù)據(jù)庫(kù)的連接串,就可以完成遷移了。對(duì),真的是一行多余的廢話都沒(méi)有。 有了 MSSQL 兼容內(nèi)核擴(kuò)展,又有了遷移工具,存量的 SQL Server 搬遷會(huì)變的非常容易。 除了 MSSQL,還有……除了 MSSQL,PostgreSQL 生態(tài)還有旨在替代 Oracle替代:PolarDB O 與 IvorySQL,旨在替代 MongoDB 的 FerretDB 與 PongoDB。以及三百多個(gè)提供各式各樣功能的擴(kuò)展插件。 實(shí)際上,幾乎整個(gè)數(shù)據(jù)庫(kù)世界都在受到 PostgreSQL 的沖擊 —— 除了那些與 PostgreSQL 錯(cuò)開(kāi)生態(tài)位(SQLite,DuckDB,MinIO),或者干脆就是 PostgreSQL 套殼(Supabase,RDS,Aurora/Polar)的數(shù)據(jù)庫(kù)。 我們最近發(fā)布的開(kāi)源 RDS PostgreSQL 方案 —— Pigsty 最近就支持了這些 PG 替換內(nèi)核,允許用戶在一套 PostgreSQL 部署中提供 MSSQL,Oracle,MongoDB,F(xiàn)irebase,MongoDB 的兼容性替代能力。 不過(guò)限于篇幅,這里就不多做介紹了。 =》閱讀原文 該文章在 2025/4/23 11:11:43 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |