SQLite入門一 SQLite概述

2022-03-06 20:48:14 字數 3672 閱讀 9008

學習、掌握一門新的技術通常需要了解這門技術產生的背景,為什麼需要這樣的技術,或者說能夠解決那些問題?

ø sqlite概述

ø sqlite特性

ø 與其他資料庫比較

ø 使用sqlite解決那些問題

sqlite概述

sqlite資料庫引擎具有獨立、無伺服器端、零配置、支援事務等特點,作為一款優秀的開源嵌入式資料庫引擎,sqlite受到了很多知名企業及專案的使用。

sqlite是一款嵌入式資料庫引擎。與其他資料庫系統不同,sqlite沒有乙個獨立的server程序,sqlite直接在檔案系統上的資料庫檔案進行讀寫操作,並且sqlite的資料庫檔案具有很好的跨平台特性。

sqlite是一款輕量級的資料庫引擎。作為一款輕量級的資料庫引擎,sqlite最大也只會占用350k的記憶體,並且這與所使用平台以及編譯器的優化設定有關。sqlite可以在最小4k的堆疊空間和100k堆上執行。由於sqlite在執行時占用的資源較少,而且無需任何管理開銷,sqlite對小記憶體裝置,如pda、手機、*** 等,sqlite的優勢毋庸置疑。儘管在可以在如此小的記憶體環境上執行,但sqlite仍然具有很好的效能。

sqlite主要定位就是靈巧、高效、穩定的資料庫,這種靈巧、高效、穩定的資料庫有其使用的場景。下面是sqlite的主要特徵:

1. 管理簡單。

2. 操作方便。

3. 可以非常方便的嵌入其他應用程式。

4. 易於維護。

sqlite為了達到更加靈巧的目標,在功能上作出了很多關鍵性的取捨,失去了對一些rdbms關鍵性功能的支援,如高併發、細粒度訪問控制(如行級鎖)、豐富的內建函式、儲存過程和複雜的sql語句等。正是因為這些功能的取捨才換來了簡單靈巧,簡單靈巧又換來了高效性和高可靠性。

sqlite的主要特點:

1.一致性的檔案格式:

在sqlite的官方文件中是這樣描述的,我們不要將sqlite與oracle或postgresql去比較,而是應該將它看做fopen和fwrite。與我們自定義格式的資料檔案相比,sqlite不僅提供了很好的移植性,如大端小端、32/64位等平台相關問題,而且還提供了資料訪問的高效性,如基於某些資訊建立索引,從而提高訪問或排序該類資料的效能,sqlite提供的事務功能,也是在操作普通檔案時無法有效保證的。sqlite具有很好的向下相容性,任何版本無需修改任何設定便可以讀取以前版本的sqlite資料庫檔案。

2.零配置:

sqlite在使用之前無需安裝,也沒有安裝和解除安裝的過程,不需要啟動、停止或者配置伺服器例項,因為sqlite根本沒有server process,採用的是in-process的方式。使用sqlite的時候也無需建立資料庫例項或者為使用者設定訪問許可權。

3.沒有獨立的伺服器:

和其他關係型資料庫不同的是,sqlite沒有單獨的伺服器程序,以供客戶端程式訪問並提供相關的服務。sqlite作為一種嵌入式資料庫,其執行環境與主程式位於同一程序空間,因此它們之間的通訊完全是程序內通訊,而相比於程序間通訊,其效率更高。

然而需要特別指出的是,該種結構在實際執行時確實存在保護性較差的問題,比如此時,應用程式出現問題導致程序崩潰,由於sqlite與其所依賴的程序位於同一程序空間,那麼此時sqlite也將隨之退出。但是對於獨立的伺服器程序,則不會有此問題,它們將在密閉性更好的環境下完成它們的工作。

4.單一磁碟檔案:

sqlite的資料庫被存放在檔案系統的單一磁碟檔案內,只要有許可權便可隨意訪問和拷貝,這樣帶來的主要好處是便於攜帶和共享。其他的資料庫引擎,基本都會將資料庫存放在乙個磁碟目錄下,然後由該目錄下的一組檔案構成該資料庫的資料檔案。儘管我們可以直接訪問這些檔案,但是我們的程式卻無法操作它們,只有資料庫例項程序才可以做到。這樣的好處是帶來了更高的安全性和更好的效能,但是也付出了安裝和維護複雜的代價。

5.平台無關性:

這一點在前面已經解釋過了。和sqlite相比,很多資料庫引擎在備份資料時不能通過該方式直接備份,只能通過資料庫系統提供的各種dump和restore工具,將資料庫中的資料先導出到本地檔案中,之後在load到目標資料庫中。這種方式存在顯而易見的效率問題,首先需要匯出到另外乙個檔案,如果資料量較大,匯出的過程將會比較耗時。然而這只是該操作的一小部分,因為資料匯入往往需要更多的時間。資料在匯入時需要很多的驗證過程,在儲存時,也並非簡簡單單的順序儲存,而是需要按照一定的資料結構、演算法和策略存放在不同的檔案位置。

因此和直接拷貝資料庫檔案相比,其效能是非常拙劣的。

6.弱型別:

大部分資料庫使用靜態型別,靜態型別關聯到資料表中的每個列,只有該種型別的資料才被允許插入到該列中。與此不同的是sqlite通過弱型別相對放鬆了這種限制,sqlite中的資料型別被視為數值的乙個屬性。因此對於乙個資料表列而言,即便在宣告該錶時給出了該列的型別,我們在插入資料時仍然可以插入任意型別,比如integer的列被存入字串'hello'。針對該特徵唯一的例外是整型的主鍵列,我們只能在該列中儲存整型資料。

7.sql語句編譯成虛擬機器**:

很多資料庫產品會將sql語句解析成複雜的,相互巢狀的資料結構,之後再交予執行器遍歷該資料結構完成指定的操作。相比於此,sqlite會將sql語句先編譯成位元組碼,之後再交由其自帶的虛擬機器去執行。該方式提供了更好的效能和更出色的除錯能力。

sqlite應用場景:

1.在嵌入式或移動裝置上的應用:

由於sqlite在執行時占用的資源較少,而且無需任何管理開銷,因此對於pda、智慧型手機等移動裝置來說,sqlite的優勢毋庸置疑。

3.資料分析:

可以充分利用sqlite提供sql特徵,完成簡單的資料統計分析的功能。這一點是csv檔案無法比擬的。

4.產品demo和測試:

在需要給客戶進行demo時,可以使用sqlite作為我們的後台資料庫,和其他關係型資料庫相比,更加靈巧簡單的sqlite減少了大量的系統部署時間。對於產品的功能性測試而言,sqlite也可以起到相同的作用。

三、和rdbms相比sqlite的一些劣勢:

1. c/s應用:

2. 資料量較大:

受限於作業系統的檔案系統,在處理大資料量時,其效率較低。對於超大資料量的儲存,甚至不能提供支援。

3. 高併發:

由於sqlite僅僅提供了粒度很粗的資料鎖,如讀寫鎖,因此在每次加鎖操作中都會有大量的資料被鎖住,即使僅有極小部分的資料會被訪問。換句話說,我們可以認為sqlite只是提供了表級鎖,沒有提供行級鎖。在這種同步機制下,併發效能很難高效。

SQLITE入門 逐步講解SQLITE命令列 一

首先做點鋪墊說明 sqlite程式通過查詢分號 來決定乙個sql語句的結束,所以要執行sql語句請確保在sql語句後有分號 如果你省略分號,sqlite3將給你乙個連續的命令提示符 並等你給當前的sql命令新增更多的文字。這個特點讓你輸入多行的多個sql語句.但點號 命令不要分號 ctrl c可以結...

SQLITE入門 逐步講解SQLITE命令列 二

可以接著上一步操作,直接向dos視窗輸入.help命令來檢視sqlite的所有命令列及解釋如下 f sqlite3 sqlite version 3.6.16 enter help for instructions enter sql statements terminated with a sql...

SQLITE入門 逐步講解SQLITE命令列 二

可以接著上一步操作,直接向dos視窗輸入.help命令來檢視sqlite的所有命令列及解釋如下 f sqlite3 sqlite version 3.6.16 enter help for instructions enter sql statements terminated with a sql...