脸书开源SQLite适用的程序代码产生系统CG/SQL

脸书发布用于SQLite的程序代码产生系统CG/SQL,CG/SQL是一个适用于SQLite,能够将SQL存储程序(Stored Procedure),转换成为C语言程序代码的编译器,也就是说,CG/SQL让开发者可以编写Transact-SQL(T-SQL),并将T-SQL编译成SQLite的C API可执行的程序代码,而且CG/SQL能够正确创建复杂存储程序,免去需要人工检查的必要。

SQLite是一个实例SQL数据库引擎的C语言函数库,由于其容量小速度快,且自含(Self-Contained)等特性,被大量内置于手机与计算机应用程序中。虽然SQLite被广泛的使用,但要创建一个经良好测试,且可维护的资料访问层,却是一项挑战,脸书提到,许多团队会使用一些程序代码产生方法,以避免添加资料行,需要变更数笔有序资料的情况,但这样的方法可能会发生错误。

SQLite没有自己的存储程序,而CG/SQL中的CQL编译器,让用户能够从大型查询,创建非常复杂的存储程序,并且结合语法帮助程序以及强类型,来维持程序正确。CQL编译器的强类型语言,能够有效防止执行时的SQL问题,该编译器关注变量的资料类型,还有架构(Schema)类型,能够侦测像是把可为null的字段,指派给不可为null的输出变量这类不一致状况,确保SQLite API能够正确使用。

CG/SQL所产生的程序代码,也会检查各种回传码,并且在绑定或是读取SQLite系统的时候,总是使用正确的行串行和类型,脸书提到,这是特别难以保持不出错的部分。另外,用户可以使用架构注解,使系统可以自动创建存储程序,该程序会将数据库从先前的架构版本,升级到当前的版本,并且进行严谨的检查,以确保升级不会发生错误。

而程序注解可以用来表示用户想要支持的测试程序代码,创建架构片段并且将资料插入该架构中,这样便可以对程序进行单元测试,不需要依赖部署系统。结合强类型语言以及单元测试功能,让用户能够确定,即便是非常复杂的逻辑也不会出错。语法帮助程序可以将安全的程序代码,换成为标准SQL,使工程师可以撰写更少的程序代码,并且能在任何地方执行。

脸书提到,使用CG/SQL不会让开发者遗漏任何资料行,也不会错配数十个参数的顺序,其提供极高的抗错误性,使得开发者能够轻松地产生程序代码,而不用手动一一检查。