> 文档中心 > SQL被当成代码?谷歌的理由绝了

SQL被当成代码?谷歌的理由绝了


整理 | 郭露
出品 | CSDN(ID:CSDNnews)

SQL即结构化查询语言(Structured Query Language),是一种可用于存取数据以及查询和管理关系数据库的编程语言。和面向对象编程相同的是,SQL语言的编写很费时间,并且调试的难度也很大,因此必须要能够进行维护。但谷歌却将SQL视为代码并受益颇多。这究竟是怎么回事呢?

在这里插入图片描述

(图源自ICphoto)

SQL作为查询语言,谷歌为何会将其视为代码?

而从谷歌的角度来看,SQL还能用于创建数据管道。一旦数据管道发生故障,就需要用SQL修复。考虑到这些因素,代码集中化在数据策略中无疑非常重要。

使用代码管理工具的好处在于,开发者能够更快的知道谁在更改或维护SQL脚本,并了解他对于其他相关查询中的更改。代码管理工具能够第一时间发现提交失败的地方并且进行恢复。提交SQL代码之后,代码能够立刻部署到开发环境中。之后开发者可以执行开发管道,并立即识别和修复故障。同时需要定期更新测试环境和代码,以确保代码能够推出生产版本。一旦成功,所有版本的SQL都能够顺利执行。

小公司该如何应对?

对于小公司而言,需要了解公司的软件工程文化。这种文化要更为成熟,因此公司需要熟悉他们可能会使用到的工具,例如Git和IDE等等。公司需要将所有代码放在索引位置上,并将脚本从本地迁移到全局,并取消视图和存储的过程。

谷歌如何使用工具管理SQL代码?

谷歌几乎将所有代码都集中在一个单一的代码存储库中。若需要对任何SQL进行更改,或是需要创建新脚本时,就会创建更改列表,这本质上和拉取请求是相类似的。随后通道要在经过测试后由另一位开发者批准。经审阅者签字后,作者就可将代码更改提交到代码存储库中。尽管许多公司都使用变更控制系统,谷歌和他们不一样,非常重视代码的格式,谷歌不会自动拒绝不符合编码标准的更改。

小公司该如何应对?

有了谷歌的参考,小公司应当坚持使用一个代码存储库。代码存储库应在部门间共享,并将所有 SQL代码集中在一个存储库中。这其中应当包括所有数据功能,例如数据工程、数据分析以及数据商业智能。公司需要采用代码格式标准,使用开源代码格式工具。这种工具能够大大地提高代码的可读性和可维护性。公司可以花一定的时间通过工具优化先前的代码,并且保证之后的代码能够符合格式标准。这样能使SQL更容易编写和理解。

为何版本和开发环境的统一可以节省时间?

由于代码经常会进行更改,如果不对版本进行控制,我们很难撤回或重置。如果公司能够使用版本控制,一旦提交的代码更改破坏了管道并产生了不可执行的命令时,可以精确地进行撤回。这一原则和谷歌的代码集成方法相同。若开发环境中出现了不好的更改,业务依旧不会受到影响。SQL更改在提交时会对开发环境产生影响,并且能够第一时间发现故障。若开发代码的过程失败了,谷歌可以通过开发环境变量来进行管理。

小公司该如何应对?

对于小公司来说,实现一个开发环境非常必要。在组织数据基础架构内测试代码可以将影响降到最低。通过DBT等开源工具添加抽象层后能够使这一过程更加简单。所有的表能够使用两次:一次是作为开发表,第二次是作为生产表。在发布计划时,所有提交的代码都能够加入到生产环境中。

广泛访问代码的好处有哪些?

众所周知,谷歌只采用了一个代码存储库来存储所有代码,因此有时很难知道某个产品的消费者都用哪些。例如,软件开发者可能在更新生产应用程序,如果不使用集中式代码库,他们无法了解更改后会有什么后果。通过代码的集中化,开发者可以搜索合适的脚本、查询和其他应用程序,并通知相应的开发者进行同步更改。

小公司该如何应对?

小公司应当更加信赖使用的代码库和存储库。工程的角度来看,公司的项目并不需要那么保密,只需要雇用信得过的开发者管理代码库就行。除此之外,公司还应该鼓励软件工程和数据工程间进行协作。在代码投入生产之前完成下游的内置流程和程序。

【参考资料】
https://blog.devgenius.io/why-google-treats-sql-like-code-and-you-should-too-53f97925037e