資源描述:
《sqlite入門與分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、SQLite入門與分析 1、SQLite介紹 自幾十年前出現(xiàn)的商業(yè)應用程序以來,數(shù)據(jù)庫就成為軟件應用程序的主要組成部分。正與數(shù)據(jù)庫管理系統(tǒng)非常關(guān)鍵一樣,它們也變得非常龐大,并占用了相當多的系統(tǒng)資源,增加了管理的復雜性。隨著軟件應用程序逐漸模塊模塊化,一種新型數(shù)據(jù)庫會比大型復雜的傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)更適應。嵌入式數(shù)據(jù)庫直接在應用程序進程中運行,提供了零配置(zero-configuration)運行模式,并且資源占用非常少。 SQLite是一個開源的嵌入式關(guān)系數(shù)據(jù)庫,它在2000年由D.RichardHipp發(fā)布,它的減少應用程序管理數(shù)據(jù)的開銷,SQLite可移植性好,很容
2、易使用,很小,高效而且可靠。 SQLite嵌入到使用它的應用程序中,它們共用相同的進程空間,而不是單獨的一個進程。從外部看,它并不像一個RDBMS,但在進程內(nèi)部,它卻是完整的,自包含的數(shù)據(jù)庫引擎?! ∏度胧綌?shù)據(jù)庫的一大好處就是在你的程序內(nèi)部不需要網(wǎng)絡配置,也不需要管理。因為客戶端和服務器在同一進程空間運行。SQLite的數(shù)據(jù)庫權(quán)限只依賴于文件系統(tǒng),沒有用戶帳戶的概念。SQLite有數(shù)據(jù)庫級鎖定,沒有網(wǎng)絡服務器。它需要的內(nèi)存,其它開銷很小,適合用于嵌入式設備。你需要做的僅僅是把它正確的編譯到你的程序?! ?、架構(gòu)(architecture) SQLite采用了模塊的設計,
3、它由三個子系統(tǒng),包括8個獨立的模塊構(gòu)成。?? 2.1、接口(Interface) 接口由SQLiteCAPI組成,也就是說不管是程序、腳本語言還是庫文件,最終都是通過它與SQLite交互的(我們通常用得較多的ODBC/JDBC最后也會轉(zhuǎn)化為相應CAPI的調(diào)用)?! ?.2、編譯器(Compiler) 在編譯器中,分詞器(Tokenizer)和分析器(Parser)對SQL進行語法檢查,然后把它轉(zhuǎn)化為底層能更方便處理的分層的數(shù)據(jù)結(jié)構(gòu)---語法樹,然后把語法樹傳給代碼生成器(codegenerator)進行處理。而代碼生成器根據(jù)它生成一種針對SQLite的匯編代碼,最后由
4、虛擬機(VirtualMachine)執(zhí)行?! ?.3、虛擬機(VirtualMachine) 架構(gòu)中最核心的部分是虛擬機,或者叫做虛擬數(shù)據(jù)庫引擎(VirtualDatabaseEngine,VDBE)。它和Java虛擬機相似,解釋執(zhí)行字節(jié)代碼。VDBE的字節(jié)代碼由128個操作碼(opcodes)構(gòu)成,它們主要集中在數(shù)據(jù)庫操作。它的每一條指令都用來完成特定的數(shù)據(jù)庫操作(比如打開一個表的游標)或者為這些操作??臻g的準備(比如壓入?yún)?shù))??傊?,所有的這些指令都是為了滿足SQL命令的要求(關(guān)于VM,后面會做詳細介紹)?! ?.4、后端(Back-End) 后端由B-樹(B-t
5、ree),頁緩存(pagecache,pager)和操作系統(tǒng)接口(即系統(tǒng)調(diào)用)構(gòu)成。B-tree和pagecache共同對數(shù)據(jù)進行管理。B-tree的主要功能就是索引,它維護著各個頁面之間的復雜的關(guān)系,便于快速找到所需數(shù)據(jù)。而pager的主要作用就是通過OS接口在B-tree和Disk之間傳遞頁面?! ?、SQLite的特點(SQLite’sFeaturesandPhilosophy) 3.1、零配置(ZeroConfiguration) 3.2、可移植(Portability): 它是運行在Windows,Linux,BSD,MacOSX和一些商用Unix系統(tǒng),比如
6、Sun的Solaris,IBM的AIX,同樣,它也可以工作在許多嵌入式操作系統(tǒng)下,比如QNX,VxWorks,PalmOS,Symbin和WindowsCE?! ?.3、Compactness: SQLite是被設計成輕量級,自包含的。oneheaderfile,onelibrary,andyou’rerelational,noexternaldatabaseserverrequired 3.4、簡單(Simplicity) 3.5、靈活(Flexibility) 3.6、可靠(Reliability): SQLite的核心大約有3萬行標準C代碼,這些代碼都是模塊
7、化的,很容易閱讀。設計與概念1、API 由兩部分組成:核心API(coreAPI)和擴展API(extensionAPI) 核心API的函數(shù)實現(xiàn)基本的數(shù)據(jù)庫操作:連接數(shù)據(jù)庫,處理SQL,遍歷結(jié)果集。它也包括一些實用函數(shù),比如字符串轉(zhuǎn)換,操作控制,調(diào)試和錯誤處理?! U展API通過創(chuàng)建你自定義的SQL函數(shù)去擴展SQLite?! ?.1、SQLiteVersion3的一些新特點: (1)SQLite的API全部重新設計,由第二版的15個函數(shù)增加到88個函數(shù)。這些函數(shù)包括支持UTF-8和UTF-16編碼的功能函數(shù)。