我的大部分技术生涯都在初创公司中度过。我喜欢快节奏和学习新事物的机会,以及将一个新产品成功带进市场的成就感。我的职业生涯始于QA。在初创公司中,开发人员与测试人员的比例不可能像大企业那样低。作为一名初创公司的QA工程师,收件箱的邮件总是比发件箱多得多。你是新版本发布的***一道关卡,因此你总处于显微镜之下。在初创公司的早期阶段,你很可能也从属于“客户支持”团队,所以当产品出现问题时,你会成为最忙碌的一位。
和其他从事相同工作的人一样,我总是非常关注于寻找正确的工具来减轻我的负担,但是不能牺牲我个人对于工作质量的定位。因此我在10年前就遇到了FindBugs。我***次使用这个工具时,我将它的结果分享给团队的开发工程师,他们感觉这个工具产生了多于真实Bug的误报或者属于一种“吹毛求疵”方式。但是,随着我们不断地根据自己的需求调整和扩展所执行的检查,并且将FindBugs得到的数据与测试和生产中发现的实际Bug数量相关联,FindBugs***成为每夜构建版本和按需构建版本的组成部分。这些报告是在早期预示潜在问题的好线索,也允许开发者提前修正错误,避免占用测试时间或运营故障故障时间。此外,对于我团队中的开发者而言由于每天都能收到构建系统的提醒,而且这些提醒会帮他们改掉自己的坏习惯,编写出更安全、更高效、更稳定的代码,所以他们产生的缺陷也越来越少。发布周期缩短了,产品质量提高了,客户满意度也提高了,这都证明了预防确实比治疗更加重要。
随着企业IT不断地拥抱敏捷开发实践和采用DevOps模式,以此更快地向市场推出更优质的产品,DBA实际上也开始感觉到压力。前面关于初创软件公司QA工程师的介绍也一样适用于DBA。随着版本发布越来越频繁,DBA接收到需要编写、检查、修改或优化的SQL脚本数量要远远多于完成的数量。DBA是数据质量、数据安全和数据平台性能的***一道防线,因此DBA也是***批响应问题的人。
在与我们协作的财富500强公司DBA中, 他们日常工作中最耗费时间的任务是检查SQL。有一些DBA将自己70%的时间用在人工检查SQL脚本上。他们会像FindBugs等工具检查Java代码一样去检查SQL:预示逻辑问题的编码模式、安全漏洞、性能问题及违反内部规定***实践或外部法规的合规性问题。
显然,DBA需要一种和十年前FindBugs一样的工具。SQL静态分析并不是新技术,但是目前可用的产品也只能做到静态分析。通常,它们会在不考虑上下文的情况下评估SQL语句。这种局限性会影响最终的生产力和质量,因为数据库生命周期管理的大多数时候都知道谁在何时、何地执行何种操作。例如,一个组织可能允许给一个测试环境分配权限和执行INSERT语句,但是绝不允许在生产环境的自动化任务中执行这些操作。任何SQL静态分析工具都必须考虑环境参数。
另一个让问题变得复杂的是数据库“版本变化”。虽然各个版本的应用程序都会打包、设定版本和全部替代,但是支持应用程序的数据模式一直存在,并且不断地进化。而且,外部合规性标准与内部审计要求通常规定要严格控制数据库的增量修改,并且要用严格定义的流程来跟踪变化。这意味着,DBA还必须(通过手工流程和检查SQL注释)确认能够跟踪到修改的原因,而且要在每一个环境中跟踪修改的执行结果。
DaticalDB Rules Engine在设计与实现时专门考虑了SQL检查与静态分析所带来的特殊挑战。下面是Datical DB通过静态分析安全可靠地提高效率的一些原因:
原文链接:http://www.searchdatabase.com.cn/showcontent_87897.htm