業務挑戰
資料庫是企業應用系統的核心,SQL作為資料庫查詢、更新等操作的標準語言,重要性不言而喻。然而在實際的SQL開發過程中,也面臨著諸多挑戰:
-
資料庫應用開發人員的SQL能力良莠不齊,經常寫出不符合標準、執行效能差的SQL,當這些風險SQL流入生產環境,必然會對應用系統造成極大影響。
-
隨著應用越來越複雜,對應SQL的規模也越來越大,一個SQL語句動輒數百甚至上千行,這對專家來說也是一個挑戰,很難發現潛在的問題。
-
在資料庫異構替換場景中,應用開發人員對目標資料庫瞭解不夠深入,爛SQL或慢SQL會越來越多,也缺少相關專家對SQL的質量進行稽核。
基於以上挑戰,華為雲資料庫和應用遷移UGO提供了SQL稽核功能。
特性概覽
SQL稽核功能基於稽核規則管理、效能評估和索引推薦、全面的稽核路徑、API整合和對接四大特性,幫助應用開發人員深度看護業務程式碼、提升開發效率、減輕專家手工稽核負擔,並提前預防由於風險SQL引起的穩定性和效能問題,有效避免風險SQL流入生產環境。
-
稽核規則管理:支援規範類、設計類、效能類等數百條SQL稽核規則,並支援自定義規則模版、風險等級、閾值和最佳化建議,幫助使用者提升稽核效率,滿足不同場景的稽核需求。
-
效能評估和索引推薦:可以評估PL/SQL中SQL語句的效能問題並輸出分析報告,也可以為使用者推薦最優索引,幫助使用者最大限度地提升SQL執行效能。
-
全面的稽核路徑:支援物件稽核、程式碼稽核、動態SQL稽核等多種稽核路徑,並支援對SQL語句進行智慧診斷分析,幫助使用者及時發現風險SQL,及早規避風險。
-
API整合和對接:提供稽核相關的OpenAPI,幫助開發者完成應用和SQL稽核的整合,提升業務開發效率。
該功能目前支援GaussDB、MySQL、PostgreSQL多種引擎,並對GaussDB做了深度適配,在GaussDB資料庫領域具有很高的專業度和規則覆蓋度,幫助客戶解決GaussDB資料庫替換場景的SQL稽核問題。下文將圍繞以上特性詳細展開。
特性指引:專業的稽核規則,提升稽核效率
稽核規則
根據內部SQL程式設計規範和外部客戶的實際使用場景,整理出開發規範類、物件設計類、效能類等數百條SQL稽核規則,對命名規範、索引設計、SQL效能最佳化、分佈鍵及運算元下推等常見SQL質量問題進行了深入分析和稽核。
自定義稽核模版
當使用者需要根據自己的業務場景制定不同的要求和規範時,SQL稽核允許使用者自定義SQL稽核規則模版,選擇和修改適合自身業務場景的稽核規則,生成不同的規則模版,並自定義風險級別、閾值及最佳化建議。
效能評估和索引推薦,提高SQL執行效能
PL/SQL效能評估
在GaussDB資料庫替換過程中,使用者難以對PL/SQL內的SQL進行完整準確的效能分析,靜態分析不準確、工作量大,動態分析無法構造能覆蓋全部分支的測試用例。SQL稽核提供了PL/SQL效能評估功能,透過對PL/SQL內的邏輯分支進行剪枝和重構,從而保證內部所有的SQL語句被全部執行和分析。同時SQL稽核將生產環境資料庫的統計資訊匯入測試庫,如此效能評估時將不會對生產環境資料庫產生任何影響,同時可以在測試環境完成分析,檢查PL/SQL中的SQL語句是否存在效能問題並輸出分析報告。
前置索引推薦
索引是資料庫最佳化的重要手段,透過合理的設計可以顯著提升資料庫效能,同時也需要避免過度使用索引,造成不必要的開銷。很多生產環境的效能問題都是由於索引設計不規範或無索引導致的,SQL稽核支援對SQL語句進行智慧診斷分析,生成冗餘索引、不合理索引、推薦索引、風險SQL等分析報告,透過合理的索引推薦和索引設計,幫助使用者最大限度地提升資料庫的整體效能。
全面的稽核路徑,全方位稽核業務SQL
物件稽核
資料庫物件是資料庫架構的基礎,良好的資料庫物件設計可以對資料庫業務的穩定執行提供堅實的保障。對於資料庫物件稽核場景,SQL稽核會採集資料庫物件的定義語句,包括表、索引、約束、儲存過程、觸發器、函式、package、package body等,從物件設計規範、合理性、效能等角度進行稽核,提高系統的可維護性、安全性和規範性。
程式碼稽核
在應用開發階段,程式碼稽核是確保軟體質量和穩定性的重要步驟。對於程式碼稽核場景,SQL稽核會採集程式碼中的SQL語句並進行全面稽核,如Java原始碼、MyBatis XML檔案、MyBatis註解、SQL指令碼等程式碼檔案,這不僅有助於提升程式碼質量,減少技術債務,還能促進團隊間的技術共享和協作,有效提升軟體質量和開發效率。
動態SQL稽核
動態SQL是一種在執行時實時生成的SQL語句,無法從程式碼或資料庫中直接獲取。對於動態SQL稽核場景,SQL稽核可以透過JVM探針或流量錄製等方式,採集業務執行過程中產生的SQL語句,極大提升SQL獲取的完整度,有效降低潛在風險。
API整合和對接,提升業務開發效率
API整合和對接
為了幫助使用者完成應用與SQL稽核的對接,SQL稽核提供了OpenAPI,使用者可將SQL稽核整合到持續整合/持續交付(CI/CD)流水線中,幫助開發團隊在程式碼提交或合併時自動完成稽核,並返回稽核結果,方便快速修復問題,有效提高稽核效率和SQL程式碼質量。也可以將SQL稽核整合到IntelliJ IDEA或其他IDE外掛中,為開發者提供實時的SQL程式碼檢查和反饋,從而提升業務開發效率和程式碼開發質量。
API安全認證
使用者可以登入控制檯建立訪問金鑰,獲取AK和SK妥善儲存。SQL稽核透過AK識別使用者的身份,透過SK對請求資料進行簽名認證,用於確保請求的機密性、完整性和請求者身份的正確性,保護OpenAPI介面安全性。
應用案例
SQL稽核成功幫助某金融大行完成資料庫替代,將業務平滑遷移至GaussDB,透過流水線、上傳業務程式碼、掃描業務資料庫等方式,自定義特性化稽核規則,稽核了70多個應用系統,掃描的SQL總數超過60萬條,發現的問題SQL數超過31萬條,其中嚴重問題超過8萬條,一般問題超過11萬條,提示問題超過11萬條,應用開發人員根據稽核報告提前發現大量不規範SQL,並對程式碼進行最佳化,有效避免了風險SQL流入生產環境。
華為雲資料庫和應用遷移UGO服務的SQL稽核功能在資料庫管理和開發過程中具有重要的價值,是任何資料庫管理和開發過程中都不可或缺的一部分,不僅可以最佳化資料庫和業務系統的效能和可靠性,還能提升程式碼的可讀性和可維護性。在未來,UGO也將藉助AI技術持續增強SQL稽核和最佳化改寫能力,幫助使用者更好地管理資料庫和開發資料庫相關業務。
華為開發者空間,匯聚鴻蒙、昇騰、鯤鵬、GaussDB、尤拉等各項根技術的開發資源及工具,致力於為每位開發者提供一臺雲主機、一套開發工具及雲上儲存空間,讓開發者基於華為根生態創新。點選連結,免費領取您的專屬雲主機