SOAR的IDE外掛——您的貼身DBA保鏢

小米運維發表於2018-10-30

本文將介紹SOAR外掛的基本實現以及現在已經實現的外掛的安裝與使用。

SOAR(SQL Optimizer And Rewriter)是小米近期開源的SQL智慧最佳化改寫工具,開源第一週就取得了2000+星的成績。我們開發SOAR的目的並不僅僅希望對DBA能夠提供幫助,也希望能夠協助廣大的SQL開發者更容易的寫出高質量的SQL。SOAR借鑑了其他SQLint[1]的思路,也提供了三種編輯器外掛,可以用來整合到Vim,Sublime Text,VS Code等程式碼編輯器中。

關於lint功能

將report-type指定為lint時,SOAR會將評審內容以SQLint的樣形輸出。為了便於展示,lint模式下只保留了檔名、行號、建議型別和建議摘要等少數資訊。下面是一個簡單的例子。

$ cat file.sql select * from test $ soar -report-type lint -query file.sql file.sql:1:CLA.001

最外層SELECT未指定WHERE條件 file.sql:1:COL.001 不建議使用SELECT * 型別查詢

Vim外掛Vim外掛我們選擇了在知名的Syntastic[2]外掛基礎上進行增補,這就要求使用者首先安裝Syntastic外掛,它的安裝方法在官方文件[3]中有詳細描述,這裡不再過多贅述。讓我們來直接看看要怎樣配置SOAR生效。

  • 確保soar二進位制檔案在可執行檔案查詢路徑$PATH下

  • 確保soar二進位制檔案具有可執行許可權,chmod a+x soar

  • 將原始碼中的doc/example/soar.vim檔案複製至${SyntasticInstalledPath}/syntax_checkers/sql目錄下,例如筆者使用bundle來管理Vim外掛,於是將soar.vim檔案複製至~/.vim/bundle/pristine/syntastic/syntax_checkers/sql目錄

  • 修改${SyntasticInstalledPath}/plugin/syntastic/registry.vim註冊檔案,增加sql型別檔案的檢查工具,如'sql':['soar','sqlint']

  • 更新Vim配置~/.vimrc,允許Syntastic預設彈窗

set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%*  let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

一切順利的話使用Vim開啟一個檔案每次儲存時您就能看到SOAR給出的建議了。

SOAR的IDE外掛——您的貼身DBA保鏢

Sublime Text3外掛

與Vim外掛的思路相同,在Sublime Text3中,我們選擇在SublimeLinter[4]的基礎上進行擴充。由於程式碼剛剛開源,SublimeLinter-soar[5]PackageControlChannel相關Pull Request[6]尚未被合併完成,所以目前暫時不能透過Sublime Text3自帶的PackageControl進行安裝。

雖然不能使用簡便的方式進行安裝,但是如果您想立刻體驗SOAR的Sublime Text3外掛,可以按照下列方式手動進行安裝:

  • 確保soar二進位制檔案具有可執行許可權,chmod a+x soar

  • 根據官方文件[7]安裝SublimeLinter

  • 開啟Sublime Text3的外掛相關目錄:Preferences -> Browse Packages…

  • 在該目錄下載程式碼

git clone 
  • 配置個人相關引數:點選 Preferences -> PackageSettings -> SublimeLinter -> Settings,將下列內容修改後加入到個人配置中

  • // SublimeLinter Settings - User{           "linters": {  "soar": {           "soar_path":"your_soar_path"         },     }, }

    重新啟動Sublim Text3後,開啟一個SQL檔案就看到SOAR給出的建議了。

    SOAR的IDE外掛——您的貼身DBA保鏢

    VS Code外掛

    VS Code的外掛功能十分強大,對於語言類的功能擴充,微軟採用了一種稱為Language Server Protocol(LSP)的實現方式。這種協議標準化了語言工具和程式碼編輯器之間的通訊方式,感興趣的同學可以透過官方文件[8]進行更深入的瞭解。

    SOAR的IDE外掛——您的貼身DBA保鏢

    SOAR的VS Code外掛目前在Github[9]上管理,尚未釋出到微軟的應用市場,無法直接在微軟官方網頁上點選安裝。想嚐鮮且擁有TypeScript及VS Code外掛開發相關經驗的同學可以透過以下方式來手動安裝體驗該外掛。其他同學可以靜靜等待微軟應用市場審批透過即可享受一鍵安裝的便利了。

    • 確保soar二進位制檔案具有可執行許可權,chmod a+x soar

    • 確保soar二進位制檔案在可執行檔案查詢路徑$PATH下

    • 找到VS Code外掛安裝路徑,Mac/Linux使用者一般為${HOME}/.vscode/extensions,Windows使用者一般為%USERPROFILE%\.vscode\extensions

    • 進入該路徑下載程式碼

    git clone 
  • 參考專案README[10]編譯Client與Server目錄下的TypeScript程式

  • 重啟VS Code,開啟一個SQL檔案檢視是否生效

  • SOAR的IDE外掛——您的貼身DBA保鏢

    總結

    SOAR並不僅僅是為DBA準備的工具,我們希望SOAR能夠從SQL的全部生命週期來幫助提升程式碼質量。無論螢幕前的你是DBA還是軟體開發者,我們相信SOAR都能夠對您SQL的開發體驗帶來極大地提升。

    參考

    [1]:

    [2]:

    [3]:#installation

    [4]:

    [5]:

    [6]:

    [7]:

    [8]:

    [9]:

    [10]:

    SOAR的IDE外掛——您的貼身DBA保鏢

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

    相關文章