SQLite是目前最流行的開源嵌入式數(shù)據(jù)庫,和很多其他嵌入式存儲引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持關(guān)系型數(shù)據(jù)庫所具備的一些基本特征,如標(biāo)準(zhǔn)SQL語法、事務(wù)、數(shù)據(jù)表和索引等。事實上,盡管SQLite擁有諸多關(guān)系型數(shù)據(jù)庫的基本特征,然而由于應(yīng)用場景的不同,它們之間并沒有更多的可比性。下面我們將列舉一下SQLite的主要特征:1. 管理簡單,甚至可以認(rèn)為無需管理。2. 操作方便,SQLite生成的數(shù)據(jù)庫文件可以在各個平臺無縫移植。3. 可以非常方便的以多種形式嵌入到其他應(yīng)用程序中,如靜態(tài)庫、動態(tài)庫等。4. 易于維護(hù)。綜上所述,SQLite的主要優(yōu)勢在于靈巧、快速和可靠性高。SQLite的設(shè)計者們?yōu)榱诉_(dá)到這一目標(biāo),在功能上作出了很多關(guān)鍵性的取舍,與此同時,也失去了一些對RDBMS關(guān)鍵性功能的支持,如高并發(fā)、細(xì)粒度訪問控制(如行級鎖)、豐富的內(nèi)置函數(shù)、存儲過程和復(fù)雜的SQL語句等。正是因為這些功能的犧牲才換來了簡單,而簡單又換來了高效性和高可靠性。
1. 一致性的文件格式:在SQLite的官方文檔中是這樣解釋的,我們不要將SQLite與Oracle或PostgreSQL去比較,而是應(yīng)該將它看做fopen和fwrite。與我們自定義格式的數(shù)據(jù)文件相比,SQLite不僅提供了很好的移植性,如大端小端、32/位等平臺相關(guān)問題,而且還提供了數(shù)據(jù)訪問的高效性,如基于某些信息建立索引,從而提高訪問或排序該類數(shù)據(jù)的性能,SQLite提供的事務(wù)功能,也是在操作普通文件時無法有效保證的。2. 在嵌入式或移動設(shè)備上的應(yīng)用:由于SQLite在運行時占用的資源較少,而且無需任何管理開銷,因此對于PDA、智能手機(jī)等移動設(shè)備來說,SQLite的優(yōu)勢毋庸置疑。3. 內(nèi)部數(shù)據(jù)庫:在有些應(yīng)用場景中,我們需要為到數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)過濾或數(shù)據(jù)清理,以保證最終到數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)有效性。有的時候,數(shù)據(jù)是否有效,不能通過單一一條記錄來進(jìn)行判斷,而是需要和之前一小段時間的歷史數(shù)據(jù)進(jìn)行特殊的計算,再通過計算的結(jié)果判斷當(dāng)前的數(shù)據(jù)是否合法。在這種應(yīng)用中,我們可以用SQLite緩沖這部分歷史數(shù)據(jù)。還有一種簡單的場景也適用于SQLite,即統(tǒng)計數(shù)據(jù)的預(yù)計算。比如我們正在運行數(shù)據(jù)實時采集的服務(wù)程序,我們可能需要將每10秒的數(shù)據(jù)匯總后,形成每小時的統(tǒng)計數(shù)據(jù),該統(tǒng)計數(shù)據(jù)可以極大的減少用戶查詢時的數(shù)據(jù)量,從而大幅提高前端程序的查詢效率。在這種應(yīng)用中,我們可以將1小時內(nèi)的采集數(shù)據(jù)均緩存在SQLite中,在達(dá)到整點時,計算緩存數(shù)據(jù)后清空該數(shù)據(jù)。4. 數(shù)據(jù)分析:可以充分利用SQLite提供SQL特征,完成簡單的數(shù)據(jù)統(tǒng)計分析的功能。這一點是CSV文件無法比擬的。5. 產(chǎn)品Demo和測試:在需要給客戶進(jìn)行Demo時,可以使用SQLite作為我們的后臺數(shù)據(jù)庫,和其他關(guān)系型數(shù)據(jù)庫相比,使用SQLite減少了大量的系統(tǒng)部署時間。對于產(chǎn)品的功能性測試而言,SQLite也可以起到相同的作用。
歡樂歐冠