本文将介绍SOAR插件的基本实现以及如今已经实现的插件的安装与使用。html
上篇文章回顾:浅析NewSQL数据库——TiDBgit
SOAR(SQL Optimizer And Rewriter)是小米近期开源的SQL智能优化改写工具,开源第一周就取得了2000+星的成绩。咱们开发SOAR的目的并不单单但愿对DBA可以提供帮助,也但愿可以协助广大的SQL开发者更容易的写出高质量的SQL。SOAR借鉴了其余SQLint[1]的思路,也提供了三种编辑器插件,能够用来集成到Vim,Sublime Text,VS Code等代码编辑器中。github
将report-type指定为lint时,SOAR会将评审内容以SQLint的样形输出。为了便于展现,lint模式下只保留了文件名、行号、建议类型和建议摘要等少数信息。下面是一个简单的例子。sql
$ 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插件咱们选择了在知名的Syntastic[2]插件基础上进行增补,这就要求用户首先安装Syntastic插件,它的安装方法在官方文档[3]中有详细描述,这里再也不过多赘述。让咱们来直接看看要怎样配置SOAR生效。数据库
确保soar二进制文件在可执行文件查找路径$PATH下vim
确保soar二进制文件具备可执行权限,chmod a+x soarc#
将源码中的doc/example/soar.vim文件拷贝至${SyntasticInstalledPath}/syntax_checkers/sql目录下,例如笔者使用bundle来管理Vim插件,因而将soar.vim文件拷贝至~/.vim/bundle/pristine/syntastic/syntax_checkers/sql目录bash
修改${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给出的建议了。
与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的插件功能十分强大,对于语言类的功能拓展,微软采用了一种称为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
本文首发于公众号“小米运维”,点击查看原文