自幾十年前出現(xiàn)的商業(yè)應(yīng)用程序以來,數(shù)據(jù)庫就成為軟件應(yīng)用程序的主要組成部分。正與數(shù)據(jù)庫管理系統(tǒng)非常關(guān)鍵一樣,它們也變得非常龐大,并占用了相當(dāng)多的系統(tǒng)資源,增加了管理的復(fù)雜性。隨著軟件應(yīng)用程序逐漸模塊模塊化,一種新型數(shù)據(jù)庫會比大型復(fù)雜的傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)更適應(yīng)。嵌入式數(shù)據(jù)庫直接在應(yīng)用程序進(jìn)程中運行,提供了零配置(zero-cONfiguration)運行模式,并且資源占用非常少。
SQLite是一個開源的嵌入式關(guān)系數(shù)據(jù)庫,它在2000年由D. Richard Hipp發(fā)布,它的減少應(yīng)用程序管理數(shù)據(jù)的開銷,SQLite可移植性好,很容易使用,很小,高效而且可靠。
SQLite嵌入到使用它的應(yīng)用程序中,它們共用相同的進(jìn)程空間,而不是單獨的一個進(jìn)程。從外部看,它并不像一個RDBMS,但在進(jìn)程內(nèi)部,它卻是完整的,自包含的數(shù)據(jù)庫引擎。
嵌入式數(shù)據(jù)庫的一大好處就是在你的程序內(nèi)部不需要網(wǎng)絡(luò)配置,也不需要管理。因為客戶端和服務(wù)器在同一進(jìn)程空間運行。SQLite 的數(shù)據(jù)庫權(quán)限只依賴于文件系統(tǒng),沒有用戶帳戶的概念。SQLite 有數(shù)據(jù)庫級鎖定,沒有網(wǎng)絡(luò)服務(wù)器。它需要的內(nèi)存,其它開銷很小,適合用于嵌入式設(shè)備。你需要做的僅僅是把它正確的編譯到你的程序。
SQLite實現(xiàn)了多數(shù)的SQL-92標(biāo)準(zhǔn),包括事務(wù),就是代表原子性、一致性、隔離性和持久性的(ACID),觸發(fā)器和多數(shù)的復(fù)雜查詢。不進(jìn)行類型檢查。你可以把字符串插入到整數(shù)列中。例如,某些用戶發(fā)現(xiàn)這是使數(shù)據(jù)庫更加有用的創(chuàng)新,特別是與無類型的腳本語言一起使用的時候。其他用戶認(rèn)為這是主要的缺點。
多個進(jìn)程或線程可以訪問同一個數(shù)據(jù)而沒有問題�?梢圆⑿械臐M足多個讀訪問。只有在其他訪問當(dāng)前不被服務(wù)的時候才能滿足寫訪問;否則寫訪問失敗并帶有一個錯誤代碼(也可以在可配置的超時過期之后自動的重試)。
提供了叫做sqlite的一個獨立程序用來查詢和管理SQLite數(shù)據(jù)庫文件。 它也充當(dāng)寫使用SQLite庫的應(yīng)用的一個例子。