商店
SQLite
0
2000年8月17日
概述
SQLite 是一個免費、開源的輕量級、嵌入式關聯式資料庫管理系統(RDBMS),由 D. Richard Hipp 於 2000 年創建。它以單一檔案資料庫形式運行,無需獨立的伺服器進程,適合小型專案、行動應用程式和本地開發。 SQLite 支援 SQL 標準(部分符合 ANSI SQL),提供簡單、高效的資料存儲,廣泛應用於 Web 應用、行動裝置(Android,iOS)和嵌入式系統。
歷史與發展
- 起源:
- SQLite 於 2000 年由 D. Richard Hipp 開發,最初為美國海軍專案設計,目標是建立無需管理的嵌入式資料庫。
- 設計理念是“簡單、可靠、易嵌入”,避免 PostgreSQL 或 MySQL 的伺服器依賴。
- 發展歷程:
- 2000-2005:SQLite 1.0 和 2.0 發布,支援基本 SQL 功能,廣泛應用於早期 Web 和嵌入式裝置。
- 2010:SQLite 3.0 引入動態類型、事務支援和 B 樹索引,效能顯著提升。
- 2015-2020:新增 JSON 支援(3.9,2015 年)、全文搜尋(FTS5)以及視窗函數,增強功能性。
- 2023-2025:最新版本 SQLite 3.46.1(2024 年 8 月),最佳化查詢效能、支援 JSONB 和增量備份,適合現代應用。
- 社區與支持:
- 由 SQLite 團隊維護,託管於 sqlite.org 和 GitHub。
- 活躍的 X 社群。
- 支援論壇(如 Stack Overflow)和文件(中文支持,sqlite.org/docs.html)。
- 開源許可:
- SQLite 採用 公共領域(Public Domain)許可,無版權限制,允許自由使用、修改和分發。
- 比 PostgreSQL 授權(類似 MIT)更寬鬆,無需保留版權聲明。
主要特點
SQLite 以其簡單性、嵌入式設計和高效能著稱,適合小型到中型專案。以下是其主要特點:
- 嵌入式與單一檔案資料庫
- 無伺服器設計:
- SQLite 資料庫儲存為單一 .db 或 .sqlite 文件,無需執行伺服器進程。
- 直接嵌入應用,減少配置(如無需 PostgreSQL 的 postgresql.conf)。
- 跨平台:
- 支援 Windows,Linux,macOS。
- 檔案可跨裝置遷移。
- 無伺服器設計:
- SQL 支援與功能
- SQL 標準:
- 支援 SELECT,INSERT,UPDATE,DELETE 等核心 SQL 操作。
- 提供表格、索引、觸發器和視圖,適合結構化資料。
- 進階功能:
- JSON 支援:儲存和查詢 JSON 資料。
- 全文搜尋(FTS5):支援多語言搜尋。
- 動態類型:列支援多種資料類型(如 INTEGER,TEXT),靈活性高。
- SQL 標準:
- 事務與可靠性
- ACID 事務:
- 支援原子性、一致性、隔離性、持久性,確保捐款資料一致性。
- 使用 BEGIN TRANSACTION 和 COMMIT 管理事務。
- WAL 模式:
- 寫前日誌(Write-Ahead Logging)提高並發效能,適合小型並發場景。
- ACID 事務:
- 輕量與高效
- 小巧體積:
- SQLite 核心庫約 1MB,運行記憶體低(約 256KB)。
- 適合低配設備。
- 高性能:
- 最佳化 B 樹索引,查詢速度快,適合小型資料集(<100MB)。
- 小巧體積:
- 工具與生態
- 管理工具:
- SQLite3 CLI:命令列工具,執行 SQL 命令。
- DB Browser for SQLite:圖形化介面,管理表和資料。
- 社區支持:
- SQLite “零配置"。
- 提供中文文件(sqlite.org/docs.html)。
- 管理工具:
優勢與限制
優勢
- 零配置:
- 無需安裝或運行伺服器,解壓縮即用,適合快速開發。
- SQLite “新手友善”。
- 輕量高效:
- 小記憶體佔用(256KB vs PostgreSQL 的 500MB)。
- 單一檔案資料庫便於備份和遷移。
- 公共領域許可:
- 無版權限制,比 PostgreSQL 授權(需保留版權聲明)更寬鬆。
- 適合開源或商業專案。
- 跨平台:
- 相容於多作業系統環境。
- 廣泛應用:
- 用於 Android,iOS,Firefox,VS Code 等,證明可靠性。
局限性
- 並發性能有限:
- 不支援高並發寫操作(WAL 模式支援有限並發)。
- 解決:用於低並發場景(如本地測試),生產環境用 PostgreSQL。
- 功能有限:
- 缺少 PostgreSQL 的進階功能(如 PostGIS、邏輯複製)。
- 解決:使用 JSON 支援或擴充(如 FTS5)滿足基本需求。
- 資料規模限制:
- 適合小型資料集(<1GB),大型資料庫效能下降。
- 解決:資料量小時使用 SQLite,超 1GB 切換 PostgreSQL。
- 無用戶管理:
- 缺少資料庫級使用者權限,依賴檔案系統權限。
- 對比 PostgreSQL:
- PostgreSQL 支援高並發、複雜查詢和企業級功能,適合生產環境。
- SQLite 更輕量,適合本地開發和小型專案。
總結
SQLite 是一個輕量、嵌入式、開源的關係型資料庫,採用公共領域許可,以零配置和高效著稱,適合小型專案和本地開發。其單一檔案設計、SQL 支援成為簡單專案的理想選擇。相較於 PostgreSQL(高並發、企業級)或 MySQL(伺服器依賴),SQLite 更適合快速原型和低配設備。