<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      Oracle 兼容的 PG 真的有用嗎?

      0
      分享至

      很多國產數據庫都以 “兼容 Oracle” 作為賣點,說實話,老馮一直都對這件事不感冒。有時候我也會懷疑,PG 去兼容 Oracle 到底是不是一個偽需求—— 改改業務代碼能死嗎?但是最近我真的碰到了一個極端情況,讓我略微改了看法。

      一個沒有源碼的 JAR 包

      最近老馮接了個小活兒,挺有意思的。某 500 強車企,手里跑著一套 EDB —— 也就是 EnterpriseDB 出品的、帶 Oracle 兼容的 PostgreSQL。版本是 9.1

      9.1 是什么概念?2011 年 9 月發布的版本,到今天已經整整 15 年 了。

      這套系統跑在某個云平臺上(美國信創云),出過好幾次大故障(500 IOPS 的乞丐云盤跑 22TB 的生產數據庫)。客戶終于忍不了了,找到我說:老馮,幫我們升一下級吧。升級本身不難,但從 9.1 到現在的 PG 18,中間差了十五個大版本,一年一個。這個跨度屬實有點大。

      不過真正要命的不是版本跨度,而是他們的應用 —— 沒有源碼了

      對,你沒聽錯。就是一個 JAR 包,代碼全寫死在里面了,改不了。更麻煩的是,這個 JAR 包里的 SQL 用了 EDB 提供的 Oracle 兼容語法,比如 SYSDATE

      不過有一點還是非常讓人震撼的:除了這一點不兼容(也是因為當年 Oracle 遷移 EDB PG 偷懶,留下了 Oracle 的尾巴)之外,其他的祖傳業務代碼從 15 年前的老 PG 升級到最新的 PG 18,竟然沒有其他不兼容的地方。

      為什么 SYSDATE 這么棘手?

      SYSDATE 在 Oracle 里是一個內置的關鍵字/變量,用來獲取當前時間戳,類似于 PostgreSQL 里的 current_timestamp

      你可能會想:這有什么難的?建個函數不就完了嗎?

      CREATE FUNCTION sysdate() RETURNS timestamp(0) AS
      $$SELECT clock_timestamp()::timestamp(0) $$ LANGUAGE SQL;

      沒那么簡單。問題在于,應用里寫的不是 sysdate() 這種函數調用語法,而是直接用 SYSDATE 這個光禿禿的標識符。在 PostgreSQL 的 Parser(解析器)看來,這個東西既不是函數調用,也不是已知的關鍵字。Parser 直接就不認識它,報語法錯誤。


      而且,你無法通過寫擴展來解決這個問題。PostgreSQL 的可擴展性覆蓋了絕大多數場景 —— 你可以自定義類型、操作符、索引方法、存儲引擎、執行邏輯、甚至外部數據源。但唯獨語法,是不允許通過擴展來定制的。 這是 PostgreSQL 可定制性上唯一的遺憾。

      要讓 PostgreSQL 認識 SYSDATE 這個 token,你必須去改 Parser 的語法規則文件,也就是要動內核源碼。


      如果應用有源碼,這事兒根本不叫事兒 —— 現在用 AI 做個全局替換,把 SYSDATE 改成 clock_timestamp()::timestamp(0),分分鐘搞定。但源碼沒了,JAR 包寫死了,這條路堵死了。

      你讓我怎么辦?去反編譯 JAR 包然后改 SQL 字符串字面值?這聽著就不太靠譜。所以你看,臟活累活最后全跑到數據庫這兒來了。

      IvorySQL:開源的 Oracle 兼容內核

      雖然需求很扯淡,但既然是客戶的活兒,還是要想辦法。

      我琢磨了一下,能在 PG 內核層面提供 Oracle 語法兼容的,目前就那么幾家。做得最好的是 EDB,接著用 EDB 就沒這個問題。但 EDB 是商業產品,價格不菲,而且人家本來就準備換開源。

      國內號稱兼容 Oracle 的數據庫倒是一堆,但人家客戶不吃信創這一套。所以 PolarDB-O 也不可能(而且也跟 EDB PG Oracle 兼容有說不清道不明的微妙聯系,據說有些其他國產數據庫也是 EDB 貼牌)。

      所以我想了一下,還真就只有 IvorySQL 能干這個事。IvorySQL 是瀚高做的一個開源項目,Apache 2.0 許可證,基于 PostgreSQL 內核提供 Oracle 兼容性 —— 包括 PL/SQL、Oracle 語法、內置函數、數據類型、系統視圖等等。最新的 IvorySQL 5.1 與 PostgreSQL 18.1 保持同步。

      這里要說明一下,IvorySQL 的 Oracle 兼容是 SQL 語法層面 的兼容,不是線纜協議兼容。也就是說,客戶端還是用 PostgreSQL 的驅動來連接,但連上之后可以跑 Oracle 風格的 SQL。能理解這里的考慮 —— Oracle 的法務在業界可是臭名昭著的,搞客戶端協議兼容怕是要被告。

      而且關鍵的是:IvorySQL 只是一個內核,Pigsty 能把它變成一個完整的 RDS。

      高可用、備份恢復、監控、IaC —— 全都和 Pigsty 原生整合。拉起一套這樣生產級的 RDS 服務,使用 IvorySQL 這個 Oracle 兼容的內核,聽起來很復雜,但實際上簡單到令人發指,找臺 Linux 服務器執行:

      curl -fsSL https://repo.pigsty.cc/get | bash; cd ~/pigsty
      ./configure -c ivory # 使用 IvorySQL 配置模板
      ./deploy.yml

      三條命令,一個 Oracle 兼容的 PG RDS 就拉起來了。你要想加從庫,也是一行命令的事情。備份,恢復,高可用, 監控系統,全都預先弄好了!


      讓我們來看看,連接 5432 PG 默認端口,使用 Oracle 的 SYSDATE 查詢就報錯了,切換到 1521 Oracle 兼容端口,it works!


      總的來說,這套方案相當完美地解決了歷史遺留的 Oracle 兼容應用的問題。這也讓我發現,雖然是一個很冷門的生態位,但確實有用戶有這個需求。反正對老馮來說,這就是很簡單的事情,順手做了也就做了。

      這活兒老馮收了 5 萬塊一年。相比 EnterpriseDB 的訂閱費,那簡直不知道要便宜到哪里去了。光買云服務跑這玩意的資源一年都要花幾十萬。當然話又說回來了,老馮也不提供 IvorySQL 的質保。如果 IvorySQL 炸了,你找瀚高去。我只管 Pigsty RDS 不出問題,不過老馮自己覺得呢,IvorySQL 沒有魔改太多,而是做的增量特性,這個還是相對可控的。我在實際安裝使用測試的時候,也還沒遇到過 crash 或者 dump 的情況。而且這年頭,內核爆炸的情況確實已經很罕見了。

      Pigsty:一個"元發行版"

      說完 IvorySQL 這個案例,順便聊聊 Pigsty 最近在內核這塊干的幾件事。

      Babelfish 內核重建。 這是 AWS 出品的 SQL Server 兼容內核。之前老粉為了偷懶,用的是 WiltonDB 打包的版本,但那個包比較老,還停留在 PG15,而且只支持 EL8/EL9 和 Ubuntu 22.04/24.04,缺 Debian 和 EL10 的支持,用起來還要用它的專有倉庫,總感覺差點意思。

      所以這次我一不做二不休,讓 Codex 幫我把 Babelfish 的打包流程按 Pigsty 的標準重建了一遍。現在 Babelfish 不再依賴 WiltonDB 的倉庫,直接從 Pigsty 自己的倉庫安裝,全平臺通吃了,版本也升級到 PG 17,使用體驗也更好了。

      Cloudberry 數倉內核。 既然做了 Babelfish,我也順手把 Apache Cloudberry(基于 Greenplum 7 的開源數倉)也打包了。之前 1.6 版本的時候起碼還提供 EL8/EL9 的 RPM 包,結果 2.0 到現在等了好幾個月,都沒有二進制產物,問了也是說暫時沒這個計劃。

      所以我也干脆自己上了,Codex 一把梭,把 EL 8-10,Debian 12/13 ,Ubuntu 22/24 x86_64/ARM64 總共 14 個 Linux 平臺上的 RPM/DEB 包都打好了。這其實是個挺復雜的大活兒,但 Codex 在那兒"糊"了半天,跑了各種集成測試和單元測試,還弄了幾個 Patch 才在 EL10/Debian13 上跑通,最后總算搞定了。


      除此之外,OrioleDB 更新到 Beta 14。Percona PGTDE 更新到 18.1。

      所以你看,這就是 Pigsty 好玩的地方 —— 它不僅僅是一個 PostgreSQL 發行版,它是一個 元發行版。你不僅可以在原生的 PG 上使用 450 多個擴展插件,而且就連 PG 這個內核本身都是可以替換的。

      你可以根據需求,愛用什么內核就用什么內核:

      ?想要 Oracle 兼容 → IvorySQL 內核,還有 Polar-O 內核?想要 SQL Server 兼容 → Babelfish 內核?想要 MongoDB 兼容 → DocumentDB 擴展 + FerretDB?想要 極致 OLTP 性能 → OrioleDB 內核?想要 透明數據加密 → PGTDE 內核?想要 分布式水平擴展 → Citus 內核?想要 數據倉庫 → Cloudberry 內核

      而無論你選哪個內核,Pigsty 提供的監控、高可用、備份恢復、IaC 能力都是一樣的。內核可以換,平臺的能力不變。 這才是發行版該干的事。


      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      央視直播4月2日澳門單打世界杯,王曼昱對陣伊藤美誠

      央視直播4月2日澳門單打世界杯,王曼昱對陣伊藤美誠

      乒乓球球
      2026-04-02 01:04:55
      黃奇帆再次預言未來房地產,今年已經應驗,明年或大概率也是對的

      黃奇帆再次預言未來房地產,今年已經應驗,明年或大概率也是對的

      呂醿極限手工
      2026-04-01 12:53:54
      1951年,戴笠獨子被處決,蔣介石兩年后下令:他的子孫全接回臺灣

      1951年,戴笠獨子被處決,蔣介石兩年后下令:他的子孫全接回臺灣

      古書記史
      2025-12-11 17:37:45
      巴菲特:已與蓋茨斷絕聯系

      巴菲特:已與蓋茨斷絕聯系

      環球時報國際
      2026-04-01 23:58:22
      今日油價:時間定了!國內油價調整六連漲,4月2日柴油汽油價格表

      今日油價:時間定了!國內油價調整六連漲,4月2日柴油汽油價格表

      有料財經
      2026-04-02 01:21:57
      玄學提醒:如果一個人還在穿著10年前的衣服,只說明3個問題

      玄學提醒:如果一個人還在穿著10年前的衣服,只說明3個問題

      洞讀君
      2026-03-04 14:30:12
      有業主一夜漲價160萬!廣州二手房,打響翻身仗

      有業主一夜漲價160萬!廣州二手房,打響翻身仗

      廣州PLUS
      2026-04-01 18:10:03
      恩愛32年不敵現實,朱媛媛辭世一年后,悲痛隱退的辛柏青如今怎樣

      恩愛32年不敵現實,朱媛媛辭世一年后,悲痛隱退的辛柏青如今怎樣

      手工制作阿殲
      2026-04-02 00:08:15
      欠中國的錢,委內瑞拉不還了?美財長:中國已無法繼續獲得委石油

      欠中國的錢,委內瑞拉不還了?美財長:中國已無法繼續獲得委石油

      萌城少年強
      2026-01-22 12:47:40
      2-2,世界第64逼平世界第26,西亞勁旅不怵非洲雄鷹

      2-2,世界第64逼平世界第26,西亞勁旅不怵非洲雄鷹

      凌空倒鉤
      2026-04-01 07:11:43
      女子借酒勁跟異性離開,全程配合顧不上形象:露著內衣褲子也濕了

      女子借酒勁跟異性離開,全程配合顧不上形象:露著內衣褲子也濕了

      第7情感
      2026-02-13 13:19:53
      高盛預警房價再跌30%?2026樓市“小陽春”是拐點還是曇花一現?

      高盛預警房價再跌30%?2026樓市“小陽春”是拐點還是曇花一現?

      貓叔東山再起
      2026-04-01 11:15:03
      天后宣布復出!將開10場演唱會

      天后宣布復出!將開10場演唱會

      天津人
      2026-04-01 15:35:53
      美媒:若中國不償還百年前的債務,美國也將不承認欠華8600億美元

      美媒:若中國不償還百年前的債務,美國也將不承認欠華8600億美元

      文史達觀
      2025-03-18 12:54:58
      張雪峰女兒親自辟謠!父母恩愛沒離婚,回應三個問題,口才很意外

      張雪峰女兒親自辟謠!父母恩愛沒離婚,回應三個問題,口才很意外

      可愛小菜
      2026-03-30 05:57:16
      古籍記載龍長虎短手相 無名指更長之人晚年多有四種人生結局

      古籍記載龍長虎短手相 無名指更長之人晚年多有四種人生結局

      嘮叨說歷史
      2026-03-31 14:25:43
      投資超5000億!中國最強“東西大動脈”,要來了

      投資超5000億!中國最強“東西大動脈”,要來了

      國民經略
      2026-04-01 11:44:16
      意大利無緣世界杯,國米要背鍋?球隊爭冠將面臨兩大障礙!

      意大利無緣世界杯,國米要背鍋?球隊爭冠將面臨兩大障礙!

      肥強侃球
      2026-04-01 23:38:44
      伊朗高官喊話特朗普:霍爾木茲海峽肯定會重新開放 但不會對美國開放

      伊朗高官喊話特朗普:霍爾木茲海峽肯定會重新開放 但不會對美國開放

      財聯社
      2026-04-01 16:19:13
      又不缺土地,為什么全世界只有中國,在瘋狂地修建高層住宅?

      又不缺土地,為什么全世界只有中國,在瘋狂地修建高層住宅?

      張黿鹵說體育
      2026-02-07 12:45:26
      2026-04-02 02:23:00
      老馮云數 incentive-icons
      老馮云數
      數據庫老司機,云計算泥石流,PostgreSQL大法師
      146文章數 55關注度
      往期回顧 全部

      科技要聞

      甲骨文血洗3萬人,47人團隊僅留3人

      頭條要聞

      小伙掃共享單車上的碼虧一套房首付 一夜白頭自扇巴掌

      頭條要聞

      小伙掃共享單車上的碼虧一套房首付 一夜白頭自扇巴掌

      體育要聞

      NBA擴軍,和籃球無關?

      娛樂要聞

      張婉婷已決定離婚 找律師討論婚變事宜

      財經要聞

      電商售械三水光針 機構倒貨or假貨猖獗?

      汽車要聞

      三電可靠 用料下本 百萬公里的蔚來ES6 拆開看

      態度原創

      親子
      家居
      健康
      游戲
      旅游

      親子要聞

      女性易孕體質的5個特征,了解一下你中幾條?

      家居要聞

      經典配色 晝色銀河

      干細胞抗衰4大誤區,90%的人都中招

      三國望神州:孫尚香抽取價值分析!數值+機制都拉滿是個啥表現?

      旅游要聞

      瞰中國|河北徐水:春色滿園 踏青賞花

      無障礙瀏覽 進入關懷版