sqlite是輕型開源的關聯式資料庫,目前最新版為sqlite3,在很多作業系統是內建就有了,不需要特別安裝,也是目前作為手機等行動裝置的輕型資料庫。在R(DBI/dplyr)和Python(sqlite3)中也有很好的支持。相對於其他開源關聯式資料庫如MySQL, PostgreSQL等
sqlite到底是輕在哪呢?有什麼特色?
1. 無服務器化(serverless)
他不需要像MySQL等要執行一隻進程來提供資料庫的存儲功能,藉由放棄client/server的架構,獲得輕型的特性。
2. 低設置(zero configuration)
因為不需要服務器來運作資料庫,所以相關設置也減少
3. 跨平台(cross-platform)
資料庫可以跨平台的搬動和使用
4. self-contained/small runtime footprint
在設置或是細調時,不太需要處理太多外部的library依賴問題,基本用來創建sqlite代碼大小最多700kb,且只需不到4MB的記憶體需求來運作。
5. 支援dynamic-type system/fully in-memory database
在記憶體需求以及創建的時間都小
6. transactional
雖然輕而小,但依舊具有把存儲操作transational的功能(與資料安全性相關)
7. 支持多數SQL92標準的要求
8. 開發團隊可靠
這邊有changelog採訪SQLite的創造人Richard Hipp的音頻,裡面說他們至少會維護到2050年,非常厲害的承諾,且感覺開發者們頗樸實和專注的,應該是能做到。
SQLite不適合的使用情景:
可以理解這些使用場景的不適合,是因為SQLite選擇使用單資料儲存的關係
- 高transaction rates的需求(需要頻繁的修改資料庫)
- 上百Gb的資料量
- 個別使用者的權限管理
- 需要client/server的使用場景
另外,SQLite還提供方便的command line(又稱dot command),對於新手應該很快可以上手。
.help .exit .databases .tables .schema .dump