臉書釋出用於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不會讓開發者遺漏任何資料行,也不會錯置數十個參數的順序,其提供極高的抗錯誤性,使得開發者能夠輕鬆地產生程式碼,而不用手動一一檢查。


Advertisement

更多 iThome相關內容