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