完整支援Oracle PL/SQL,星環科技KunDB高相容性實現低成本國產化替代

星環科技發表於2023-04-20

從中興、華為等一系列高新科技企業被美國製裁,到俄烏衝突事件爆發後,西方各國相繼宣佈制裁俄羅斯,以Oracle、IBM、微軟、SAP為代表的科技巨頭暫停在俄服務,這一系列動作給我們敲響了加速國產化替代的警鐘。資料庫作為提供資料儲存與處理能力的基礎軟體,是資訊系統的基礎、資訊保安的基石,因此, 資料庫自主可控和國產化替代已經刻不容緩

相容性是國產化替代關鍵,自研資料庫更具潛力


Oracle資料庫發展較早,在國內市場內佔領了一定先機,企業經過資訊化的長期積累和革新,基於Oracle開發了大量的系統業務。為了能夠適配新的國產資料庫產品,必須對應用程式碼進行大量修改,各資料表的資料型別、函式、語法規則需要進行系統、全面的改造,這就要求新的國產資料庫對原有資料庫能夠有很好的相容性支援,降低遷移的程式碼改造成本。

Oracle經過多年的發展,在SQL語言、效能、例項形態、容災方案等方面有很多積累擴充套件。若要實現Oracle資料庫的國產化替代,除了要能夠提供在效能、容災能力、安全能力等方面全方位提供對等的能力,首先要解決的就是如何相容Oracle的大量SQL方言,尤其是Oracle的PL/SQL這一獨特的廣受歡迎的語法體系。

中國信通院《資料庫發展研究報告》中表示, “國內關係型資料庫產品中多數是基於MySQL和PostgreSQL二次開發的”。因此,這些產品對MySQL、PostgreSQL相容性較好,但沒有體系化的相容Oracle,尤其是PL/SQL方面。

“高度的商業資料庫相容能力意味著大量的設計和研發工作,涉及產品整體架構的多個方面,十分考驗廠商對程式碼的理解和掌控能力”。國家工業資訊保安發展研究中心 、中國電子學會和北京國家金融科技認證中心聯合釋出的《分散式資料庫發展趨勢研究報告》中指出, “完全自主研發的產品在這方面具備先天的優勢,未來無論在相容性適配還是產品能力的研發上都更具潛力”。

KunDB是星環科技自主研發的國產分散式交易型資料庫,提供完整的關係型資料庫的能力, 高度相容MySQL和Oracle,可低成本實現資料庫國產化的替代和遷移,具備可擴充套件、高併發、高可用、資料災備等特性,滿足企業關鍵業務處理、高併發查詢、業務分散式改造、交易分析混合的資料中臺等複雜場景,在金融、政務、能源、醫療、交通、教育等多個行業應用,為使用者提供高效能、穩定可靠、經濟實用、自主可控的國產化資料庫產品。



高度相容Oracle,實現低成本國產化平滑替代


KunDB對Oracle語法各個方面高度相容,成為業內領先的具備支撐Oracle業務遷移能力的國產資料庫。KunDB 高度相容Oracle語法與PL/SQL,支援VARCHAR2/NVARCHAR2、NUMBER等全部常用資料型別,在PL/SQL語法上,支援控制語句、集合、動態SQL、子程式、預定義包、錯誤處理等全部PL/SQL語法,並且通 過自主原創的PL/SQL編譯器,KunDB支援複雜PL/SQL程式,執行效能比解釋執行提升一個數量級,解決了Oracle業務遷移到國產化資料庫的核心痛點,為其他相容性完善提供了基礎。

在Oracle資料庫物件、DML、函式、系統檢視、內建包、驅動等方面,KunDB做到了常用功能的相容,滿足大部分業務的遷移需求,極大降低了企業業務遷移成本。

例如在某省級社保系統遷移過程中,KunDB僅用了3天就完成了8萬多行PL/SQL程式碼的遷移工作,高效、低成本、安全地保障了原資料庫遷移,平滑實現了資料庫系統的國產化替代。



創新過程語言編譯技術,完整支援Oracle PL/SQL語法

KunDB自研創新的過程語言編譯技術及中間最佳化語言TIR,支援複雜PL/SQL程式,執行效能比解釋執行提升一個數量級。

  • 抽象和實現了星環通用中間PL/SQL指令集TIR,為多種程式碼編譯執行方式提供基礎表達能力
  • 結合LLVM程式碼生成技術,直接生成CPU指令,比Go等語言執行時生成程式碼的效率提升一個數量級
  • 內建LLVM最佳化器,使用最新的編譯最佳化技術,做無效程式碼、公共表示式、死碼、邊界檢查消除等最佳化,保證最終執行程式碼的最簡化
  • 自研表示式計算引擎,支援向量化和JIT執行,PL/SQL和SQL均可呼叫,比Go語言的通用表示式計算效能提升5倍以上


KunDB為PL/SQL定義了極其精簡、通用的TIR指令集,其中6類指令可用於PL的解釋,8條指令可用PL/SQL中的遊標、遊標遍歷、靜態SQL、動態SQL的解釋,這14條指令的組合,可覆蓋PL/SQL語法範圍內所有語法組合的解釋。PL/SQL被解析成抽象語法樹後,PL和SQL被TIR指令集解釋成相應的指令集合。TIR指令支援LLVM編譯器,可生成不同平臺的Native code,即CPU指令集加速執行。在LLVM的編譯過程中,還會自動同步完成部分程式碼的邏輯最佳化,比如無效程式碼的去除。編譯生成的執行指令集KunDB會儲存在後設資料中,為相同PL/SQL文字提供可複用的指令集(類似執行計劃)。而對於LLVM指令集中還不支援的PL/SQL指令,會保留為語言(Golang)的指令最終交由語言編譯器編譯執行。所以KunDB的PL/SQL執行,是將大部分指令對映成CPU指令執行的,而且不需要重複編譯,相較於每次編譯成其它語言的方式,有較大的效能優勢。以類似TPCC中NewOrder處理的PL/SQL實現為例,不考慮SQL執行的情況下,純PL的邏輯的執行, 使用KunDB的動態編譯執行是完全由語言編譯執行的3倍以上



另外,PL/SQL以及常規SQL語法中的表示式計算是影響效能的關鍵因素之一,也借鑑了動態編譯執行的思想, KunDB設計和實現了基於列存資料和動態執行的表示式引擎,對於數值型別的聚合計算,使用動態編譯執行比普通解釋執行要快10倍以上。



查詢最佳化和向量化執行引擎,高效能複雜SQL查詢

KunDB基於火山模型的最佳化器和向量化執行引擎支援了跨分片的查詢,支援的SQL包含遞迴查詢、巢狀子查詢、別名等複雜SQL場景。針對聚合計算類SQL中效能消耗較高的表示式計算做了特別最佳化的表示式模組,邏輯最佳化可以用該模組進行如常量摺疊,公共表示式提取等最佳化,執行器呼叫該模組進行表示式的計算。以TPCH為例,KunDB可高效跑完100GB規模內的全部22個複雜查詢SQL。

適配Oracle應用生態,保障業務平滑遷移

KunDB適配Oracle應用開發生態,支援基於Oracle的業務直接或者透過中介軟體框架連線KunDB,包括Java、.NET、C/C++等語言開發的應用,尤其是針對C/C++應用提供相容Oracle的OIC/OCCI驅動,來保障業務的平滑遷移。KunDB還提供了開放的資料生態,透過全域性事務日誌可與異構系統實時同步,可應用在實時數倉建設、Oracle和KunDB雙資料庫系統並軌執行回切等場景。

以某大型醫療HIS系統適配為例,使用的.NET EFCore開發框架與星環科技KunDB連線,透過高相容性和遷移服務保障了多個核心業務系統的平滑遷移, 業務全量功能測試中個別的核心資料庫源系統資料型別、語法相容問題僅經過少量調整便能達成應用適配,在節省大量人力成本的同時,保障了資料庫無損切割,實現了快速、安全地替換Oracle的目標。

星環科技分散式交易型資料庫KunDB自主研發,並以優異的成績透過了工信部、央行、信通院等多項資料庫權威測試認證,為使用者提供高併發、高效能、高可靠的國產資料庫產品。同時, KunDB高度相容Oracle PL/SQL和MySQL方言,可實現低成本資料庫國產化替代,並且 適配支援國產伺服器、晶片、作業系統等軟硬體生態,助力企業打造自主可控資料平臺。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994106/viewspace-2947262/,如需轉載,請註明出處,否則將追究法律責任。

相關文章