商店
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 更适合快速原型和低配设备。