作者:孫健、張強
孫健,愛可生研發(fā)工程師,負責 SQLE 相關(guān)開發(fā);張強:愛可生研發(fā)中心成員,后端研發(fā)工程師,目前負責 DMP 產(chǎn)品 Redis 相關(guān)業(yè)務(wù)開發(fā)。
本文來源:原創(chuàng)投稿
* 愛可生開源社區(qū)出品,原創(chuàng)內(nèi)容未經(jīng)授權(quán)不得隨意使用,轉(zhuǎn)載請聯(lián)系小編并注明來源。
一. SQLE 介紹
SQLE 是一款由愛可生開源社區(qū)發(fā)起,面向數(shù)據(jù)庫開發(fā)與管理人員,實現(xiàn)了 SQL 的「開發(fā)」-「測試」-「上線」等全流程覆蓋,資源與權(quán)限精細化管理,兼顧簡潔與高效,易維護、易擴展的的開源項目,旨在為用戶提供一套的安全可靠、自主可控的 SQL 質(zhì)量管控方案。
在二月份發(fā)布的 1.2202.0 版本中:
● 改造了用戶系統(tǒng),新增用戶組和操作權(quán)限;
● 增加對工單審核結(jié)果進行評分的功能;
● 增加審核任務(wù),支持 MySQL 的庫表結(jié)構(gòu)、Oracle 的 TopSQL以及 Java 應(yīng)用的 SQL 抓取和審核;
● 增加了 Db2 審核插件,支持 Db2 審核工單并上線;
● 新增了 37 條 MySQL 審核規(guī)則,如檢查 DDL 是否創(chuàng)建了冗余的索引;
● 其他體驗優(yōu)化和 Bug 修復(fù)。
二. Java 應(yīng)用審核介紹
(友情提示:此為企業(yè)版功能)考慮到很多用戶在實際生產(chǎn)中已經(jīng)部署了大量的、以 Java 為基礎(chǔ)的應(yīng)用和服務(wù),并且某些已經(jīng)涉及到了極其重要、不可中斷的核心業(yè)務(wù)。從 1.2202.0 版本開始,SQLE 開始支持 Java 應(yīng)用的 SQL 審核。并且在完成核心功能的基礎(chǔ)上,支持 Java 應(yīng)用零成本接入 。
SQLE 的 Java 審核特性如下:
● 支持無侵入式的業(yè)務(wù)集成,用戶可以直接以環(huán)境變量的方式運行來啟動 Java 應(yīng)用,直接接入 SQLE 而無需修改 Java 業(yè)務(wù)代碼,減少了用戶接入成本;
● 支持應(yīng)用 SQL 的自動采集和統(tǒng)計,用戶可以在 SQLE 上通過語句池頁面統(tǒng)覽應(yīng)用內(nèi)的 SQL 的分類與統(tǒng)計,迅速掌握應(yīng)用內(nèi) SQL 的情況;
● 支持手動或自動審核 SQL ,用戶可以在審核報告中知曉應(yīng)用的 SQL 是否符合預(yù)設(shè)的審核規(guī)則,無論是開發(fā)人員還是 DBA 都能實時了解正在運行的業(yè)務(wù) SQL 執(zhí)行狀況。
三. 效果展示
1. 事先部署好環(huán)境、需要接入的 Java 應(yīng)用以及對應(yīng)的數(shù)據(jù)庫,并添加為數(shù)據(jù)源。為了演示,此處 Java 項目為
2. 創(chuàng)建 Java 應(yīng)用的審核任務(wù);
3. 啟動應(yīng)用程序;
SQLE_COLLECT_ENABLE=true \SQLE_HOST=XX.XX.XX.XX:10000 \SQLE_TASK_NAME=surveryking_test \SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \java -jar surveyking-v0.3.0-beta.4.jar \--server.port=1991 \--spring.datasource.url=jdbc:mysql://XX.XX.XX.XX:3306/surveyking \--spring.datasource.username=root \--spring.datasource.password=xxxxxx \& >>/opt/surveyking/std.log
4. 查看 SQLE 審核任務(wù)詳情界面,可以看到目前應(yīng)用已經(jīng)執(zhí)行的 SQL ;
5. 查看審核報告,用戶可以通過審核任務(wù)的審核報告了解到應(yīng)用的 SQL 是否符合預(yù)設(shè)審核規(guī)則以便及時作出調(diào)整。
6. 在示例 Java 應(yīng)用主頁創(chuàng)建一個用戶,然后便可以在審核任務(wù)對應(yīng)的 SQLE 語句池內(nèi)觀察到所對應(yīng)的 INSERT 語句。
7. 同時,用戶可以從語句池內(nèi)頁面迅速地感知到應(yīng)用內(nèi)執(zhí)行的 SQL 的語句分類和統(tǒng)計情況。
綜合以上的示例步驟,Java 應(yīng)用零成本地接入了 SQLE。開發(fā)人員和 DBA 可以通過「審核報告」、「審核任務(wù)的 SQL 語句池」等功能完全掌握應(yīng)用內(nèi)的 SQL 審核結(jié)果、執(zhí)行情況以及統(tǒng)計信息,完成了從「開發(fā)」直至「上線」這一過程中的 SQL 質(zhì)量管控。
本文關(guān)鍵字:#SQLE# #SQL審核##Java應(yīng)用審核# #審核任務(wù)#
有更多關(guān)于 SQLE相關(guān)的技術(shù)問題,可以掃碼或直接加入官方QQ技術(shù)交流群(637150065)進行交流。歡迎大家來“騷擾”...