SQLite
SQLite 是嵌入式关系型数据库,单文件、零独立服务进程,适合本地持久化、原型验证和轻量离线场景。
#type / resource
#status / growing
#tech / dev / backend
#resource / sqlite
[!info] related notes
- 相关 MOC: 数据库 MOC
- 关系笔记: MySQL、PostgreSQL 与 SQLite 的使用差异
- 相关概念: 事务
- 相关资源: Electron + better-sqlite3 问题记录
SQLite
这是什么
SQLite 是嵌入式关系型数据库,通常直接作为应用库嵌入到程序里,而不是单独跑一个数据库服务进程。
如果只用一句更工程化的话描述它,可以理解成:
- 数据库和应用更像在一个进程边界内协作
- 核心载体通常就是一个数据库文件
- 它的强项是本地持久化和部署简洁,而不是充当高并发网络主库
为什么它不能简单理解成“缩水版 MySQL / PostgreSQL”
SQLite 和 MySQL、PostgreSQL 最大的差异,不只是“功能多一点还是少一点”,而是架构位置不同:
- SQLite 更像嵌入式本地数据库
- MySQL / PostgreSQL 更像独立数据库服务
所以 SQLite 的问题意识更接近:
- 如何在单机或本地应用里稳定持久化
- 如何以最低运维成本提供可靠存储
- 如何在离线或单机环境下获得 SQL 与事务能力
而不是:
- 如何承受大量并发网络客户端长期同时写入
适用平台 / 适用场景
- 本地应用持久化
- 单机工具和桌面应用
- 原型、小型系统、测试环境
- 本地优先或离线优先架构中的客户端数据库
核心特点 / 优势 / 局限
核心特点
- 常见载体是单个数据库文件
- 零独立服务进程,部署模型很轻
- 仍然支持 SQL、事务和 ACID 语义
优势
- 单文件存储,迁移和备份非常直接
- 零服务进程,部署成本低
- 很适合做最小实验、本地持久化和离线副本
- 对桌面应用、移动端、工具型程序非常友好
局限
- 不适合高并发写入主库场景
- 与 MySQL / PostgreSQL 相比,网络访问、独立运维和多客户端并发不是它的主战场
- 如果系统天然就是多服务、多连接、持续高并发写入,SQLite 往往不是最稳的中心主库选择
从原理角度理解 SQLite,最该先抓住什么
1. SQLite 的价值首先是架构简单
它最打动人的地方通常不是“功能最多”,而是:
- 引入成本极低
- 分发简单
- 本地化友好
2. 它仍然是数据库,不只是文件格式
SQLite 不是“拿文件凑合存数据”,而是完整提供了:
- 表
- SQL
- 索引
- 事务
所以学习 SQLite 时,同样可以借它理解数据库基础,只是要意识到它的并发与部署模型不同于服务端数据库。
3. 它最适合的不是“共享中心主库”,而是“应用内部存储层”
这也是为什么它经常出现在:
- Electron
- 移动端
- 本地工具
- 离线优先应用
这些场景里。
常见用途
- Electron / 移动端 / 本地工具的数据存储
- 本地缓存、离线副本
- 学习 SQL 和做最小实验的轻量环境
- 不想引入独立数据库服务时的嵌入式持久化方案
和 MySQL / PostgreSQL 相比时最常见的认知差异
一个很稳的心智模型是:
- SQLite 是“应用内数据库”
- MySQL / PostgreSQL 是“独立数据库服务”
所以三者不是简单的高低配关系,而是部署位置和目标场景不同。
具体对照可继续看: