SQLite 是 D.Richard Hipp 在 2000 年開發的一個小型嵌入式資料庫。它是完全獨立的,不具有外部依賴性。
與常用的資料庫管理系統(如 MySQL和 Oracle 等)有所不同,在 SQLite 中並沒有資料庫伺服器的概念。應用程式不需要事先同資料庫服務建立起網路連接,而是通過內嵌在程式中的 SQLite 函數庫來完成對資料的儲存、查詢、修改和刪除等操作。所有與資料庫相關的操作都由函數庫負責統一完成,這樣無論是系統中的多個進程,或者是相同進程中的多個線程,都可以在同一時間調用訪問資料庫的函數;而底層的資料加鎖、交易記錄和儲存管理等都在 SQLite 函數庫中實現。它們對應用程式來講是完全透明的。
SQLite 不能用標準的 SQL語句對資料庫操作,對它的操作要調用專用的 API 實現。這些 API 提供了查詢、插入、刪除等功能。比如 com.sleepycat.db.Db 類代表資料庫物件。 Db 類的 put( )方法完成的是插入功能; get( )方法完成的是讀出資料的功能;;com.sleepycat.db.Dbc 是 Berkeley DB 的遊標類,提供了遍曆資料庫記錄的功能。
SQLite 雖然是個極端輕量級的關聯式資料庫,卻保留了資料庫的大部分特徵, 提供了對 SQL92 標準的大多數支援:支援多表和索引、事務、視圖、觸發和一系列的使用者介面及驅動;支援原子的、一致的、獨立的和持久的(ACID)事務特性。零配置(Zero-configuration),即無需安裝和管理。一個完整的資料庫儲存在單一磁碟檔案中。資料庫檔案可以在不同位元組順序的機器間自由共用。支援資料庫大小至 2 TB。字串和二進位大對象(BLOBs)的大小僅被有效記憶體限制。源碼體積小,編譯後低於 250 kB。部分的操作比關係型資料庫引擎要快。簡單易用的 API。
SQLite本身提供了 C語言的 API 介面,使得對資料庫的操作十分簡單,主要是對 3 個 API 函數的調用。SQLite 的介面是一些已經編寫好的 C庫,即使使用不同語言的 API,在底層仍然使用 C庫執行。SQL語句通過介面進入到高效的 SQL編譯器,由標記處理器(tokenizer)分解成查詢分析器(parser)可以識別的各個標誌符,然後由分析器重新組合標誌符並調用代碼產生器(codegeneratot)產生虛擬機器碼,交由虛擬機器(virtual machine)去執行,最終完成 SQL語句指定的任務。虛擬機器是 SQLite內部結構的核心,不僅完成與資料操作相關的全部操作,而且還是客戶和儲存之間資訊進行交換的中間單元。資料庫按照 B樹(B- tree)的形式儲存在磁碟上,通過可調整的頁面緩衝獲得對資料的快速尋找和儲存。為了方便移植,SQLite 使用一個抽象層介面(OS interface)與不同作業系統進行對接。