热门问题
时间线
聊天
视角
SQLite
無伺服器的關聯式資料庫管理系統 (RDBMS) 来自维基百科,自由的百科全书
Remove ads
SQLite(/ˌɛskjuːɛlˈlaɪt/[6]或/ˈsiːkwəl.laɪt/[7])是遵守ACID的關係數據庫管理系統,它包含在一個相對小的C程式庫中。與許多其它數據庫管理系統不同,SQLite不是一個客戶端/服務器結構的數據庫引擎,而是被集成在用戶程序中。
SQLite遵守ACID,實現了大多數SQL標準。它使用動態的、弱類型的SQL語法。[8]它作為嵌入式數據庫,是應用程序,如網頁瀏覽器,在本地/客戶端存儲數據的常見選擇。它可能是最廣泛部署的數據庫引擎,因為它正在被一些流行的瀏覽器、操作系統、嵌入式系統所使用[9]。同時,它有許多程序設計語言的語言綁定。
Remove ads
設計
不像常見的客戶端/服務器結構數據庫管理系統,SQLite引擎不是一個應用程序與之通信的獨立進程。SQLite庫鏈接到程序中,並成為它的一個組成部分。這個庫也可被動態鏈接。應用程序經由編程語言內的直接API調用來使用SQlite的功能,這在減少數據庫訪問延遲上有積極作用,因為在一個單一進程中的函數調用比跨進程通信更有效率。SQLite將整個數據庫,包括定義、表、索引以及數據本身,作為一個單獨的、可跨平台使用的文件存儲在主機中。它採用了在寫入數據時將整個數據庫文件加鎖的簡單設計。儘管寫操作只能串行進行,但SQLite的讀操作可以多任務同時進行。
SQLite將PostgreSQL作為參考平台。項目將「PostgreSQL可能做些什麼」作為SQL標準實現的開發參考。[10][11]然而與這個目標最重要的偏差在於,除了主鍵以外,SQLite不強制進行類型檢查。一個值的類型是動態的,不被schema所強制限制(雖然如此,但如果可以進行可恢復的類型轉換時,schema會在存儲數據時觸發一個自動轉換)。
Remove ads
特徵
程式庫實現了多數的SQL-92標準,包括事務,以及實現原子性、一致性、隔離性和持久性(即ACID),但它缺失了某些特性。例如,它僅部分支持觸發器。儘管它支持大多數的複雜查詢,但它的ALTER TABLE功能有所限制,不能修改或刪除列,只能通過重新建立表的方式迂迴進行。
SQLite不進行類型檢查。你可以把字符串插入到整數列中。某些用戶發現這是使數據庫更加有用的創新,特別是與無類型的腳本語言一起使用的時候;然而其他用戶認為這是主要的缺點。
多個進程或線程可以同時存取同一個數據而沒有問題。可以同時平行讀取同一個資料庫。但同一時間只能有一個進程或線程進行資料寫入;否則會寫入失敗並得到一個錯誤訊息(或者會自動重試一段時間;自動重試的邏輯以及重試時間的長短是可以設定的)。
程式設計者還提供了一個叫做sqlite3的獨立程序用來查詢和管理SQLite數據庫文件。SQLite的使用者可以把這個程式當作如何寫SQLite應用程式的範例。
Remove ads
語言綁定
目前有大量的編程語言提供使用SQLite的綁定,包括:
- C/C++[12]
- C#與VB.Net[13]以Mono實作,需要.NET Framework4.0以上版本,並支援Entity Framework
- Tcl[14]
- 在CPAN的DBD::SQLite上有一個Perl的DBI/DBD模塊,它不是到SQLite的接口,而是包括整個SQLite數據庫引擎在其中並不需要任何額外的軟件。
- Python自2.5之後內置pysqlite[15],模塊名為sqlite3(下載的package名為pysqlite3)。[16]
- PHP從PHP 5.0開始已經包含SQLite,但是自5.1版之後,SQLite開始成為一個延伸函式庫。SQLite能與PHP4一起工作,但不包含在PHP4裡面。
- Rails2.0.3將缺省的數據庫配置改為了SQLite 3。
- Haskell[17]
- Java[18]
- Delphi: DISQLite3作為Delphi的一個第三方控件,不是SQLite的API,也不是接口,而是把SQLite數據庫引擎重新封裝編譯到Delphi的目標程序中。
SQLite管理客戶端
SQLite亦可以作為桌面資料庫使用,以下為第三方SQLite的GUI軟體。例如,
- Navicat for SQLite是一套專為SQLite設計的強大資料庫管理及開發工具。它可以用於任何版本2或3的SQLite資料庫,並支援大部份SQLite的功能,包括觸發器、索引、檢視等。
- SQLiteMan,使用Qt開發的一個SQLite客戶端,支持多語言、跨平台。
- Firefox,可以藉由安裝擴充套件成為SQLite客戶端管理工具,包括SQLite Manager、SQLite Reader、SQLite Manager[19](另一個同名的WebExtensions擴充套件)。
- SQLite Database Browser,一款連接SQLite數據庫的圖形客戶端。
- SQLite Expert Personal,Windows上的一款連接SQLite數據庫的免費客戶端。
- Database .NET[20],一套適用於 Windows 平台的免安裝綠色軟體,支援多種視覺化資料庫管理工具,除了 SQLite 之外也支援 Microsoft SQL Server、SQL Azure、MySQL、Oracle、IBM DB2、Informix、PostgreSQL、HP Vertica、NuoDB、Teradata、Sybase ASE、Firebird、Access、Excel、DBase、SQLCe... 等資料庫軟體。
Remove ads
參考文獻
參閱
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads