編輯:關於Android編程
SQLite是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目,設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在Android、iOS等移動操作系統中的數據庫實現也是使用的SQLite3。對於Android開發者來說數據庫並不算很好維護,所以深入了解SQLite數據庫也變得很有必要,本文就來先介紹下SQLite3。
1.SQLite3簡單介紹
SQLite並不是一個獨立的進程,而是作為程序的一部分,應用程序經由編程語言內的API直接調用SQLite,這能有效的減少數據庫訪問的延遲,因為在一個進程中調用函數要比跨進程通信更有效率。SQLite將整個數據庫作為一個單獨的、可跨平台的文件存儲再主機中,它采用了再寫入數據時將整個數據庫文件加鎖的簡單的設計,盡管寫操作只能串行進行,但SQLite的讀操作可以多任務同時進行。
程序庫實現了多數的SQL-92標准,包括事務以及實現原子性、一致性、隔離性和持久性,但它缺失了某些特性,例如它僅部分支持觸發器: 支持 FOR EACH ROW 觸發器,但不支持 FOR EACH STATEMENT 觸發器。盡管它支持大多數復雜查詢,但它的ALTER TABLE 功能有所限制:只能添加和重命名列,不能修改或者刪除列。因此,當需要修改或者刪除列名時只能重新創建表。
2. 為什麼要用 SQLite
不需要一個單獨的服務器進程或操作的系統(無服務器的); 不需要配置,這意味著不需要安裝或管理; 非常小,是輕量級的,完全配置時小於 400KiB,省略可選功能配置時小於250KiB; 自給自足的,這意味著不需要任何外部的依賴; 支持 SQL92(SQL2)標准的大多數查詢語言的功能。 SQLite 使用 ANSI-C 編寫的,並提供了簡單和易於使用的 API; 支持數據庫大小至2TB; 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運行。
3. SQLite的系統架構
SQLite采用了模塊的設計,它由三個子系統,包括8個獨立的模塊構成;模塊將復雜的查詢過程分解為細小的工作進行處理。
如上圖所示,sqlite主要由7個構件子系統(也就是模塊)組成,這些模塊被分割為兩個部分:
前端解析系統和後端引擎。
前端解析系統
前端預處理應用程序傳遞過來的SQL語句和SQLite命令,對獲取的編碼分析,優化,並轉換 為後端能夠執行的SQLite內部字節編碼。前端可分為三個模塊:
標示分析(Tokenizer)
將輸入的SQL語句分成標識符;
語法分析(Parser)
解析器分析通過標識器產生的標識分析語句的結構,並且得到一顆語法樹。解析器同時也包含了重構語法樹的優化器,因此能夠找到一顆產生一個高效的字節編碼程序的語法樹。
代碼生成器(Code Generator)
代碼生成器遍歷語法樹,並且生成一個等價的字節編碼程序。
後端引擎
後端是用來解釋字節編碼程序的引擎,該引擎做的才是真正的數據庫處理工作。後端部分由四個模塊組成:
虛擬機(VM)
VM模塊是一個內部字節編碼語言的解釋器。它通過執行字節編碼語句來實現SQL語句的工作。它是數據庫中數據的最終的操作者。它把數據庫看成表和索引的集合,而表和索引則是一系列的元組或者記錄。
B/B+樹
B/B+樹模塊把每一個元組集組織進一個一次排好序的樹狀數據結構中,表和索引被分別置於單獨的B+和B樹中。該模塊幫助VM進行搜索,插入和刪除樹中的元組。它也幫助VM創建新的樹和刪除舊的樹
頁面調度程序(pager)
頁面調度程序模塊在原始文件的上層實現了一個面向頁面的數據庫文件抽象。它管理B/B+樹使用的內存內緩存(數據庫頁的),另外,他也管理文件的鎖定,並用日志來實現事物的ACID屬性。
操作系統交界面(system interface)
操作系統界面模塊提供了對應於不同本地操作系統的統一交界面。
話說一個乞丐在看一個程序員寫程序,程序員遇到一個問題怎麼都解決不了,這時乞丐說這少個分號,程序員照做結果問題解決了,就問:你怎麼知道?乞丐笑笑說:
1 Android控件架構1 簡單的總結(1)父View優先攔截當前事件,攔截不成功就讓子View對當前事件進行攔截。(2)如果攔截成功的話,就會沿著子view到父Vie
先來看看效果圖如何使用示例代碼PromptViewHelper pvHelper = new PromptViewHelper(mActivity);pvHelper.s
Eclipse/ADTADT是Google在Eclipse基礎上封裝了Android開發工具的環境,最新版本是2014年7月2日發布的adt-bundle-windows