iOS —— SQLite 簡介 (一)

SQLite介紹:

        SQLite是一個開源的嵌入式關係數據庫,它在2000年由D. Richard Hipp發佈,它的減少應用程序管理數據的開銷,SQLite可移植性好,很容易使用,很小,高效而且可靠。
SQLite嵌入到使用它的應用程序中,它們共用相同的進程空間,而不是單獨的一個進程。從外部看,它並不像一個RDBMS,但在進程內部,它卻是完整的,自包含的數據庫引擎。嵌入式數據庫在你的程序內部不需要網絡配置,也不需要管理。因爲客戶端和服務器在同一進程空間運行。SQLite 的數據庫權限只依賴於文件系統,沒有用戶帳戶的概念。SQLite 有數據庫級鎖定,沒有網絡服務器。它需要的內存,其它開銷很小,適合用於嵌入式設備,你需要做的僅僅是把它正確的編譯到你的程序。

 

特點(SQLite’s Features and Philosophy):
            零配置(Zero Configuration)、可移植(Portability):

SQLite的本地類型:INTEGER、 REAL、TEXT、 BLOB、NULL。

基本語法:創、增、刪、查、改。

SQLite支持除了devide之外的關係運算符;

支持除了right和full outer  join之外的ASCI SQL;

注意SELECT時,limit 和 offset的用法。

注意多表連接(字段可能重名)。

數據完整性:用戶定義完整性、參照完整性、域完整性、實體完整性。

注意類型親和性。

事物的三個控制命令:BEGIN、 ROLLBACK、COMMIT;事物的種類:DEFERRED、IMMDIAET、EXCLUSIVE。

五種衝突解決方案:REPLACE、IGNORE、FAIL、ABORT、ROLLBACK。

五種鎖狀態:未鎖、共享、保留、未決、排他。

SQLite的數據庫清潔:REINDEX、VACUUM。

查看query的執行:explain  select   *  from  test_name ;

事物的生命週期:

             任何情況下,只在一個事物中執行一個連接;

              pager管理事物、鎖、內存緩衝和負責崩潰恢復。

              事物可自動提交,也可以通過begin、commit手動提交。

 關於上圖:事務通常是從unlocked、reserved、exclusive三種狀態下開始,默認unlocked;白色條框的狀態可在同一時刻狀態下存在。事務的根本是讀和寫。

日誌是數據庫恢復的唯一方法。

注意臨時表的正確應用。

HOOK()函數對數據庫連接中的insert、delete、update操作都有監視功能。

 

(1)虛擬數據庫引擎(VBDE),包含:VBDE程序、程序計數器、結果字段的名稱和類型、 參數的綁定值、 運行棧和固定數量的編號的內在單元。VBDE虛擬機的的每條指令都由128箇中的某一個操作碼 和 三個操作數構成。C api 可和VBDE 直接交互。

要得到SQL的VBDE程序,可做入下操作;

    .mode   column

    .header on

    .width x  x  x  x   x  x  ……

   .explain  select   *  from  testname;

 

B*TREE記錄:包含兩個域,關鍵字域和數據域。B*tree(任務 是排序和遍歷)的頁由B*tree記錄組成。

層次數據組織模型:從下而上數據結構化加強,從上而下數據無序性增加。C API ------VBED------B-tree------Pager-------OS Interface------database file。

B* tree  API 的分類;訪問和事務函數、表函數、遊標函數、記錄函數、

(二)編譯器:輸入爲單獨的SQL命令,輸出是優化的VBDE程序。分別在分詞器、分析器、代碼生成器上完成。

(三)分詞器

  (四)  分析器;

  (五)代碼生成器;無明確定義的接口,負責生成代碼和查詢優化。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章