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