SQL稽核 | 如何使用 SQLE 進行開發階段 SQL稽核

愛可生雲資料庫發表於2022-04-06

作者:孫健

孫健,愛可生研發工程師,負責 SQLE 相關開發;

本文來源:原創投稿

*愛可生開源社群出品,原創內容未經授權不得隨意使用,轉載請聯絡小編並註明來源。


一、 SQLE 介紹

SQLE 是一款由愛可生開源社群發起,面向資料庫開發與管理人員,實現了 SQL 的「開發」-「測試」-「上線」等全流程覆蓋,資源與許可權精細化管理,兼顧簡潔與高效,易維護、易擴充套件的的開源專案,旨在為使用者提供一套的安全可靠、自主可控的 SQL 質量管控方案。

二、 功能介紹

SQLE 的開發階段 SQL稽核主要是通過 SQLE 的功能稽核任務來完成的,該功能定位是應對全場景 SQL 質量管控解決方案,能夠在應用開發、測試、上線、生產等不同階段對 SQL 進行質量管控。將 SQL 採集與SQL稽核結合對資料庫進行長期稽核,目前支援Mybatis 掃描,慢日誌,庫表後設資料,TopSQL ,應用程式 SQL 抓取(java應用)的場景稽核。應用開發階段可以通過稽核任務的 Mybatis 掃描型別的任務對應用程式碼做實時稽核,Mybatis 掃描的稽核任務需要通過 SQLE 提供的 Scanner 工具進行SQL採集並推送到 SQLE 進行SQL稽核, 以下是 SQLE 通過 Scanner 採集 SQL 的流程圖:

目前開發階段基本都是使用 CI/CD 平臺進行持續整合,例如 Jenkins ,GoCD ,git平臺的 CI/CD 等,該階段主要用來進行程式碼的檢查,單測,打包。好處是標準化開發流程,減少複雜的工作量。因此在開發階段也可以將SQL稽核作為一個檢查模組整合進CI流程。將 SQL稽核事宜前置到開發階段能夠減少後期SQL稽核的壓力。目前使用 SQLE 的稽核任務能夠做到:

  1. SQLE 提供 Scanner 模式可以整合幾乎所有CI/CD,配置簡單,可以輕易整合進現有的開發流程;
  2. SQL稽核結果即時反饋,對於未通過的SQL稽核,開發可以即時優化;
  3. 除了CI流程之外,也可以在 SQLE 介面進行 SQL分類統計和稽核報告檢視。

三、 效果演示

1. 建立稽核任務

2. 在 jenkins 對應的任務上加一個構建流程

SQLE 的 Scanner 與CI/CD的整合方式是通過新增bash型別的任務,一般CI/CD都支援該方式。SQLE Scanner 本質上是一個二進位制命令列工具,該工具整合在 SQLE 內,可以在 SQLE 平臺安裝目錄的 bin 下找到,具體的使用方式和命令列引數解釋參考:https://actiontech.github.io/...

3. 當jenkins任務觸發時會進行SQL稽核

Jenkins 整合後進行SQL稽核的效果如下兩張圖所示:


稽核結果會立即通過 Jenkins 的任務返回,當 SQL 不合規觸發規則建議,可以看到上圖所示的構建失敗的結果,此時CI流程會通知開發,開發需要優化完不合規 SQL 後再次提交程式碼觸發CI構建,如果SQL優化成功則SQL稽核會構建成功。

4. SQLE 頁面檢視結果

開發負責人可以通過SQLE平臺檢視稽核結果和SQL統計,提前瞭解目前專案中SQL的開發質量和碰到的問題。SQL統計資訊和稽核結果如下兩張圖所示:


四、總結

以上最簡單的SQL稽核與CI/CD流程整合的試用,大家可以下載安裝 SQLE 並結合自己公司CI/CD 試一下,SQLE 的安裝參考主頁:https://github.com/actiontech...

更多使用場景可以參考:https://actiontech.github.io/...

相關文章