2014年10月17日 星期五

SQLite權威指南-SQLite 的特色

SQLite權威指南-SQLite 的特色


 


資料來源:SQLite權威指南P007~P009


 


儘管SQLite 是如此之小,卻提供了如此之多的特色和性能。它支持ANSI SQL92 的一個大


子集(包括事務、視圖、檢查約束、關聯子查詢和複合查詢等),還支援其他很多關聯式資料


庫的特色,如觸發器、索引、自動增長欄位和LIMIT/OFFSET 子句等。SQLite 還有很多獨特的特色,如內在資料庫、動態類型和衝突解決(下面解釋)


如本章開始時所述,在SQLite 的觀念和實現中,都遵循著一系列指導原則。下麵就來詳述這些原則。


零配置


SQLite 的設計之始,就沒準備在應用時使用DBA。配置和管理SQLite 就像得到它一樣簡單。SQLite 包含了正好適合於一個程式師的腦筋的特色。


相容性


SQLite 在設計時特別注意了相容性。它可以編譯運行在WindowsLinuxBSDMac OS X及商用的Unix 系統如SolarisHPUX AIX,還可以應用於很多嵌入式平臺如QNXVxWorksSymbianPalm OS Windows CE。它可以無縫地工作在16-bit32-bit 64-bit體系結構中並且能同時適應位元組的大端格式和小端格式。SQLite 的相容性並不只表現在代碼上,還表現在其資料庫檔上。SQLite 的資料庫檔在其所支援的所有作業系統、硬體體系結構和位元組順序上都是二進位一致的。你可以在Sun SPARC 工作站上創建一個SQLite資料庫然後在Mac Windows 的機器上——甚至移動電話上——使用它,而不需要做任何轉換和修改。此外,SQLite 資料庫可以支撐2TB 的資料量(受作業系統限制),還內置地同時支援UTF-8 UTF-16 編碼。


緊湊性


SQLite 的設計可以說是功能齊全但體積很小:1 個頭檔,1 個庫,不需要擴展的資料庫服務。所有的東西,包括用戶端、伺服器和虛擬機等,都被打包在1/4 兆大小之內。如果在編譯時去掉一些不需要的特性,程式庫可以縮小至170KB (x86 硬體平臺上使用GNU C 進行編譯)。此外,還有一個SQLite 的私有版本,大小是69KB,可以運行在智慧卡上(參“附加信息”一節)


簡單


作為程式庫,SQLite API 可以算是最簡單最易用的了。SQLite 既有很好的文檔又很容易望文知意。


適應性


SQLite 的幾個特性使其成為一個適應性極強的資料庫。作為一個內嵌式的資料庫,SQLite


在以下兩個方面都做得最好:強有力而可伸縮的關係型數據庫前端,簡單而緊湊的B-tree


後端。


不受拘束的授權


SQLite 的全部代碼都在公共域中,不需要授權。SQLite 的任何一部分都沒有附加版權要求。所有曾經為SQLite 項目貢獻過代碼的人都簽署過一個宣誓書將他們的貢獻發佈到公共域。也就是說,無論你如何使用SQLite 的代碼都不會有法律方面的限制。你可以修改、合併、發佈、出售或將這些代碼用於任何目的,商業和中非商業的,不需要支付任何費用,不會受到任何限制。


可靠性


SQLite 的源代碼不但免費,還編寫得很好。SQLite 源代碼包含大約30000 行標準C 代碼它是乾淨的、模組化的和完好注釋的。SQLite 源代碼易理解、易定制。SQLite 的核心軟體(庫和工具)由約30000 行代碼組成,但分發的程式中還包含有超過30000行的回歸測試代碼,它們覆蓋了97%的核心代碼。也就是說,超過一半的SQLite 項目代碼是專門用於回歸測試的,也就是說,差不多每寫一行功能代碼,都要寫一行測試代碼對它進行測試。


易用性


SQLite 還提供一些獨特的功能來提高易用性,包括動態類型、衝突解決和“附加”多個數據庫到一個連接的能力。


性能和限制


SQLite 是一個快速資料庫。但“快速”這個詞本身是一個主觀的和不明確的詞。誠實地講,有些事情SQLite 能比其他資料庫做得快,也有些事情不能。這麼說吧,利用SQLite 提供的配置參數,SQLite 是足夠快速和高效的。跟大多數其他資料庫一樣,SQLite 使用B-tree 處理索引,使用B+tree 處理表資料。因此,在對單表進行查詢時,SQLite 要快於(或至少相當於)其他資料庫的速度。在一些情況下SQLite 可能不如大型資料庫快,但大多數這些情況是可理解的。SQLite 是一個內嵌式的資料庫,設計用於中小規模的應用程式。這些限制是符合設計目的的。很多新用戶錯誤地假設使用SQLite 可以代替大型關係型數據庫,這有時行,但有時不行,依賴於你準備用SQLite 來做什麼。一般情況下,SQLite 在三個主要的方面具有局限性:


􀁺併發。


􀁺資料庫大小。


􀁺網路。


儘管SQLite 做得已經很好了,但仍有部分特性未能實現,包括:


􀁺外鍵約束


􀁺完整的觸發器支持。


􀁺完整的ALTER TABLE 支持。


􀁺事務嵌套。


􀁺RIGHT FULL OUTER JOIN


􀁺可修改視圖。


􀁺GRANT REVOKE


附加資訊


SQLite 網站有豐富的資訊,包括官方文檔、郵件列表、Wiki 和其他的一般資訊,它的網址


www.sqlite.orgSQLite 社區也是很有幫助的,你可能從郵件列表中找到任何你所需要的


東西。另外,SQLite 的作者提供了SQLite 的專業培訓和支援,包括定制程式(如移植到嵌入式平臺)和增強的SQLite 版本,這些版本包括內置了加密功能的版本和為嵌入式應用優化的極小化版本。更多的資訊可以從www.hwaci.com/sw/sqlite/prosupport.html 中找到。













 




沒有留言:

張貼留言