SQLITE特性分析_第1頁
SQLITE特性分析_第2頁
SQLITE特性分析_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SQLITE特性分析SQLite 是用 C 語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它是完全獨立的,不具有外部依賴性。SQLite 支持多數(shù) SQL92 標準,可以在所有主要的操作系統(tǒng)上運行,并且支持大多數(shù)計算機語言。SQLite 還非常健壯。其創(chuàng)建者保守地估計 SQLite 可以處理每天負擔多達 100,00 次點擊率的 Web 站點,并且 SQLite 有時候可以處理 10 倍于上述數(shù)字的負載。它支持的SQL包括:ATTACH DATABASEBEGIN TRANSACTIONcommentCOMMIT TRANSACTIONCOPYCREATE INDEXCREATE TABLECREATE T

2、RIGGERCREATE VIEWDELETEDETACH DATABASEDROP INDEXDROP TABLEDROP TRIGGERDROP VIEWEND TRANSACTIONEXPLAINexpressionINSERTON CONFLICT clausePRAGMAREPLACEROLLBACK TRANSACTIONSELECTUPDATESQLite 內(nèi)部結(jié)構(gòu)在內(nèi)部,SQLite 由以下幾個組件組成:SQL 編譯器、內(nèi)核、后端以及附件。SQLite 通過利用虛擬機和虛擬數(shù)據(jù)庫引擎(VDBE),使調(diào)試、修改和擴展 SQLite 的內(nèi)核變得更加方便。所有 SQL 語句都被編譯成

3、易讀的、可以在 SQLite 虛擬機中執(zhí)行的程序集。SQLite 支持大小高達 2 TB 的數(shù)據(jù)庫,每個數(shù)據(jù)庫完全存儲在單個磁盤文件中。這些磁盤文件可以在不同字節(jié)順序的計算機之間移動。這些數(shù)據(jù)以 B+樹(B+tree)數(shù)據(jù)結(jié)構(gòu)的形式存儲在磁盤上。SQLite 根據(jù)該文件系統(tǒng)獲得其數(shù)據(jù)庫權(quán)限。SQLite 數(shù)據(jù)類型SQLite 不支持靜態(tài)數(shù)據(jù)類型,而是使用列關(guān)系。這意味著它的數(shù)據(jù)類型不具有表列屬性,而具有數(shù)據(jù)本身的屬性。當某個值插入數(shù)據(jù)庫時,SQLite 將檢查它的類型。如果該類型與關(guān)聯(lián)的列不匹配,則 SQLite 會嘗試將該值轉(zhuǎn)換成列類型。如果不能轉(zhuǎn)換,則該值將作為其本身具有的類型存儲。SQL

4、ite 支持 NULL、INTEGER、REAL、TEXT 和 BLOB 數(shù)據(jù)類型。由于資源占用少、性能良好和零管理成本,嵌入式數(shù)據(jù)庫有了它的用武之地,它將為那些以前無法提供用作持久數(shù)據(jù)的后端的數(shù)據(jù)庫的應(yīng)用程序提供了高效的性能。現(xiàn)在,沒有必要使用文本文件來實現(xiàn)持久存儲。SQLite 之類的嵌入式數(shù)據(jù)庫的易于使用性可以加快應(yīng)用程序的開發(fā),并使得小型應(yīng)用程序能夠完全支持復(fù)雜的 SQL。這一點對于對于小型設(shè)備空間的應(yīng)用程序來說尤其重要。技術(shù)上的優(yōu)點和特性SQLite是一個輕量級、跨平臺的關(guān)系型數(shù)據(jù)庫。既然號稱關(guān)系型數(shù)據(jù)庫,支持SQL92標準大多數(shù)標準(比如視圖、事務(wù)、觸發(fā)器等)。輕量級SQLite和

5、C/S模式的數(shù)據(jù)庫軟件不同,它是進程內(nèi)的數(shù)據(jù)庫引擎,因此不存在數(shù)據(jù)庫的客戶端和服務(wù)器。使用SQLite一般只需要帶上它的一個動態(tài)庫,就可以使用它的全部功能。而且那個動態(tài)庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。)零配置、無服務(wù)器SQLite的另外一個特點是綠色:它的核心引擎本身不依賴第三方的軟件,使用它也不需要“安裝”。所以在部署的時候能夠省去不少麻煩。SQLite在使用前不需要安裝設(shè)置,不需要進程來啟動、停止或配置,不需要管理員去創(chuàng)建新數(shù)據(jù)庫或分配用戶權(quán)限,在系統(tǒng)崩潰或失電之后自動恢復(fù)。大多數(shù)SQL數(shù)據(jù)庫引擎是作為一個單獨的服務(wù)器進程被執(zhí)行。

6、訪問數(shù)據(jù)庫的程序使用某種內(nèi)部進程通信(典型的是TCPIP)與服務(wù)器通信,完成 發(fā)送請求到服務(wù)器和接收查詢結(jié)果的工作。SQLite不采用這種工作方式。使用SQLite時,訪問數(shù)據(jù)庫的程序直接從磁盤上的數(shù)據(jù)庫文件讀寫,沒有中間 的服務(wù)器進程單一文件、簡單的訪問所謂的“單一文件”,就是數(shù)據(jù)庫中所有的信息(比如表、視圖、觸發(fā)器、等)都包含在一個文件內(nèi)。這個文件可以copy到其它目錄或其它機器上,也照用不誤。一個SQLite數(shù)據(jù)庫是一個單獨的普通磁盤文件,能夠被定位在路徑層次的任何地方。如果 SQLite能讀寫磁盤文件,則它也能訪問數(shù)據(jù)庫。大多數(shù)SOL數(shù)據(jù)庫引擎趨向于把數(shù)據(jù)存為一個大的文件集合,通常這些

7、文件在一個標準的定位中,只有數(shù)據(jù) 庫引擎本身能訪問它跨平臺/可移植性除了主流操作系統(tǒng),SQLite還支持了很多冷門的操作系統(tǒng)。比如它對很多嵌入式系統(tǒng)(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。內(nèi)存數(shù)據(jù)庫(in-memory database)SQLite的API不區(qū)分當前操作的數(shù)據(jù)庫是在內(nèi)存還是在文件(對于存儲介質(zhì)是透明的)。所以如果覺得磁盤I/O有可能成為瓶頸的話,可以考慮切換為內(nèi)存方式。切換的時候,操作SQLite的代碼基本不用大改,只要在開始時把文件Load到內(nèi)存,結(jié)束時把內(nèi)存的數(shù)據(jù)庫Dump回文件就OK了。在這種情況下,可以使用“online backup API”。可變長度的記錄一般的SQL數(shù)據(jù)庫引擎在表中為每一個記錄分配一個固定的磁盤空間數(shù),SQLite只使用一個記錄中實際存儲信息的磁盤空問數(shù)。顯然,這會使數(shù)據(jù)庫非常小,同時,由于在磁盤上移動的信息很少,也使數(shù)據(jù)庫很快。技術(shù)上的缺點和不足并發(fā)訪問的鎖機制SQLite在并發(fā)(包括多進程和多線程)讀寫方面的性能一直不太理想。數(shù)據(jù)庫可能會被寫操作獨占,從而導(dǎo)致其它讀寫操作阻塞或出錯。SQL標準支持不全在它的官方網(wǎng)站上,具體列舉了不支持哪些SQL92標準。比如不支持外鍵約束。編程語言接口SQLite支持很多種語言的編程接口。這對于我這種喜歡混用多種編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論