SOAR 的 IDE 外掛:您的貼身 DBA 保鏢
本文將介紹SOAR外掛的基本實現以及現在已經實現的外掛的安裝與使用。
上篇文章回顧: ofollow,noindex">淺析NewSQL資料庫——TiDB
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給出的建議了。
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 https://github.com/liipx/SublimeLinter-soar.git
配置個人相關引數:點選 Preferences -> PackageSettings -> SublimeLinter -> Settings,將下列內容修改後加入到個人配置中
// SublimeLinter Settings - User{ "linters": {"soar": {"soar_path":"your_soar_path" }, }, }
重新啟動Sublim Text3後,開啟一個SQL檔案就看到SOAR給出的建議了。
VS Code外掛
VS Code的外掛功能十分強大,對於語言類的功能拓展,微軟採用了一種稱為Language Server Protocol(LSP)的實現方式。這種協議標準化了語言工具和程式碼編輯器之間的通訊方式,感興趣的同學可以通過官方文件 [8] 進行更深入的瞭解。
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 https://github.com/liipx/vscode-extension-soar
參考專案README [10] 編譯Client與Server目錄下的TypeScript程式
重啟VS Code,開啟一個SQL檔案檢視是否生效
總結
SOAR並不僅僅是為DBA準備的工具,我們希望SOAR能夠從SQL的全部生命週期來幫助提升程式碼質量。無論螢幕前的你是DBA還是軟體開發者,我們相信SOAR都能夠對您SQL的開發體驗帶來極大地提升。
參考
[1] : https://github.com/purcell/sqlint
[2] : https://github.com/vim-syntastic/syntastic
[3] : https://github.com/vim-syntastic/syntastic#installation
[4] : https://github.com/SublimeLinter/SublimeLinter
[5] : https://github.com/liipx/SublimeLinter-soar
[6] : https://github.com/SublimeLinter/package_control_channel/pull/77
[7] : http://sublimelinter.readthedocs.org/en/latest/installation.html
[8] : https://code.visualstudio.com/docs/extensions/example-language-server
[9] : https://github.com/liipx/vscode-extension-soar
[10] : https://github.com/XiaoMi/soar/blob/master/README.md
活動報名
ACMUG & CRUG 2018 技術沙龍全國巡演
11月10日 武漢
隨著ACMUG & CRUG活動在上海、廈門、深圳、珠海、成都、杭州、南京等七個城市成功舉辦,11月,ACMUG & CRUG迎來技術沙龍全國巡演第八站 -- 武漢站。這是史上第一次ACMUG & CRUG到武漢舉辦技術沙龍活動,是武漢的小夥伴們期待已久的技術盛宴。 屆時小米雲平臺DBA的SOAR核心研發工程師也會到場哦,不要錯過這次SOAR技術分享的機會。
活動時間: 2018年11月10日(週六)
活動地點: 騰訊眾創空間 (武漢市光谷大道現代世貿中心B座19樓)
面向人群: DBA、運維、開發、MySQL使用者、Redis使用者等
具體日程安排及報名渠道請識別下方小程式:
識別小程式 報名活動 暢談技術 贏取好禮