SQLite指南 1 SQLite的特性

2021-07-09 11:54:48 字數 1495 閱讀 1513

使用sqlite也有一段時日了,一直想整理出乙份比較完整的sqlite指南,可惜時間總是不夠。就從這裡開始吧,能寫多少就寫多少。 

總特性:

1. 用作應用程式的檔案格式,比如儲存xml或者一些特定格式的檔案,這樣可以避免使用專有的解析器。這種檔案至少可以跨平台讀取並且具備事務的特性。(用作配置檔案,確實不錯,存位址簿,小型資料庫等,都可以勝任) 

2. 用作嵌入裝置的資料庫. 手機、pda、***等嵌入裝置或移動裝置。**量少,能有效的利用記憶體、磁碟空間和頻寬,高可靠性,也不需要dba來維護。 

3. **資料庫,因為不需要配置什麼東西,對於小中型**來說,用它用**資料庫也無不可(雖然效率有點低) 

4. 替代企業級rdbms.當你想用demo乙個系統,又不想裝乙個龐大的rdbms,那麼sqlite可以滿足你的要求,很快就能幫你完成任務。 

不能勝任的地方:

1. c/s結構的應用 

如果你的應用程式要通過網路訪問後端的資料庫,應該考慮使用支援c/s結構的資料庫,而不是sqlite. sqlite當中的檔案鎖並不能保持多客戶端同時訪問資料庫的同一部分導致對檔案的損壞。 

2. 大型** 

預設頁大小是1kb,乙個sqlite資料庫的大小限制是2tb,即使它能處理更大的資料庫,sqlite仍然是只為乙個資料庫建立乙個磁碟檔案,很多檔案系統本身的限制,使其大小要小於2tb。所以,它不能支援大型**的資料庫儲存。 

3. 高併發 

sqlite使用讀/寫來鎖定整個資料庫檔案。如果有乙個程序正在讀取資料庫的任何一部分,就會阻止其它程序去寫資料庫的任何其它部分。類似,如果有一程序正在寫操作,其它所有程序就不能讀其它任何部分。在多數情況下,這並不是問題。每個應用都會很快完成資料庫操作,鎖定的時間也不會太長。但是有些應用需要更高的併發能力,這時必須選擇其它資料庫來達到高併發。 

sqlite未實現的sql特性

sqlite雖然sql語法比較寬鬆,但仍有些sql92中的語法它還不支援。以後也許會慢慢加入相關支援,以加入的可能性從高到低,如下: 

1. right outer join和full outer join,目前只支援左外連線(left outer join) 

2. 完整的alter table支援,目前只支援rename table和add column,其它的子語句,如drop column, alter column, add constraint 等,並不支援。 

3. 完整的觸發器支援, for each row觸發器是支援,但是for each statement不支援。 

4. 寫檢視操作。sqlite中的檢視是唯讀的。cud操作是不允許的。但是,可以讓你寫乙個trigger,發出view上的cud操作。 

5. grant和revoke, sqlite只是讀寫普通的磁碟檔案,訪問許可權受控於作業系統。因此grant 和 revoke常見於c/s結構的資料庫。對於嵌入式資料庫引擎sqlite而言,沒必要存在。 

to be cont.

iOS資料持久化1 SQLite

這裡採用乙個二次封裝的例項來初步演示和實現 更新 如果嫌麻煩,這裡放乙個,建議github 你將有這幾個檔案 其中data.db是database檔案 讓後組織進 project 最好放在最外面,使用時就不必新增子目錄 修改 building settings swift compiler gene...

My安卓知識1 SQLite資料庫

2016年五月份到六月份做了乙個小專案,關於android的,想記錄一下學到的一些知識,做成乙個小系列吧,算是對自己這乙個多月來的見證。首先說明,這些知識也都是從網上各處學習來的,我自己做了一些小整理。1.sqlite資料庫 之前用的資料庫是mysql和sqlserver,還用過oracle,雖然不...

sqlite庫學習 1 編譯sqlite

sqlite是一款輕型的資料庫,是遵守acid的關係型資料庫管理系統。它很小,只有sqlite3.h sqlite3ext.h sqlite3.c三個c語言檔案。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式裝置中,可能只需要幾百k的記憶體就夠了。它能夠...