SQLite體系結構

 
SQLite主要由7個構件子系統(也就是模塊)組成,這些模塊被分割爲兩個部分:前端解析系統和後端引擎。在下圖給出了各個構件子系統和它們是怎樣相互關聯的框圖

 

前端
 
前端預處理應用程序傳遞過來的SQL語句和SQLite命令。對獲取的編碼分析,優化,並轉換爲後端能夠執行的SQLite內部字節編碼。前端可分爲三個模塊:
 
標示分析(Tokenizer)
將輸入的SQL語句分成標識符;
 
語法分析(Parser)
解析器分析通過標識器產生的標識分析語句的結構,並且得到一棵語法樹。解析器同時也包含了重構語法樹的優化器,因此能夠找到一棵產生一個高效的字節編碼程序的語法樹。
 
代碼生成器(Code Generator)
代碼生成器遍歷語法樹,並且生成一個等價的字節編碼程序
 
前端實現了sqlite3_prepare API函數。
 
後端
後端是用來解釋字節編碼程序的引擎。該引擎做的纔是真正的數據庫處理工作。後端部分由四個模塊組成:
 
虛擬機(VM)
VM模塊是一個內部字節編碼語言的解釋器。它通過執行字節編碼語句來實現SQL語句的工作。它是數據庫中數據的最終的操作者。它把數據庫看成表和索引的集合,而表和索引則是一系列的元組或者記錄。
 
B/B+-樹
B/B+樹模塊把每一個元組集組織進一個依次排好序的樹狀數據結構中,表和索引被分別置於單獨的B+和B樹中。該模塊幫助VM進行搜索,插入和刪除樹中的元組。它也幫助VM創建新的樹和刪除舊的樹
 
頁面調度程序(pager)
頁面調度程序模塊在原始文件的上層實現了一個面向頁面的數據庫文件抽象。它管理B/B+樹使用的內存內緩存(數據庫頁的),另外,他也管理文件的鎖定,並用日誌來實現事務的ACID屬性。
 
操作系統交界面(system interface)
操作系統交界面模塊提供了對應於不同本地操作系統的統一的交界面
後端實現了slqite3_bind_*,sqlite3_step,sqlite3_column_*,sqlite3_reset和sqlite3_finalize API函數。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章