SQLite

SQLite 是嵌入式关系型数据库,单文件、零独立服务进程,适合本地持久化、原型验证和轻量离线场景。

#type / resource #status / growing #tech / dev / backend #resource / sqlite

[!info] related notes

SQLite

这是什么

SQLite 是嵌入式关系型数据库,通常直接作为应用库嵌入到程序里,而不是单独跑一个数据库服务进程。

如果只用一句更工程化的话描述它,可以理解成:

  • 数据库和应用更像在一个进程边界内协作
  • 核心载体通常就是一个数据库文件
  • 它的强项是本地持久化和部署简洁,而不是充当高并发网络主库

为什么它不能简单理解成“缩水版 MySQL / PostgreSQL”

SQLite 和 MySQL、PostgreSQL 最大的差异,不只是“功能多一点还是少一点”,而是架构位置不同:

  • SQLite 更像嵌入式本地数据库
  • MySQL / PostgreSQL 更像独立数据库服务

所以 SQLite 的问题意识更接近:

  • 如何在单机或本地应用里稳定持久化
  • 如何以最低运维成本提供可靠存储
  • 如何在离线或单机环境下获得 SQL 与事务能力

而不是:

  • 如何承受大量并发网络客户端长期同时写入

适用平台 / 适用场景

  • 本地应用持久化
  • 单机工具和桌面应用
  • 原型、小型系统、测试环境
  • 本地优先或离线优先架构中的客户端数据库

核心特点 / 优势 / 局限

核心特点

  • 常见载体是单个数据库文件
  • 零独立服务进程,部署模型很轻
  • 仍然支持 SQL、事务和 ACID 语义

优势

  • 单文件存储,迁移和备份非常直接
  • 零服务进程,部署成本低
  • 很适合做最小实验、本地持久化和离线副本
  • 对桌面应用、移动端、工具型程序非常友好

局限

  • 不适合高并发写入主库场景
  • 与 MySQL / PostgreSQL 相比,网络访问、独立运维和多客户端并发不是它的主战场
  • 如果系统天然就是多服务、多连接、持续高并发写入,SQLite 往往不是最稳的中心主库选择

从原理角度理解 SQLite,最该先抓住什么

1. SQLite 的价值首先是架构简单

它最打动人的地方通常不是“功能最多”,而是:

  • 引入成本极低
  • 分发简单
  • 本地化友好

2. 它仍然是数据库,不只是文件格式

SQLite 不是“拿文件凑合存数据”,而是完整提供了:

所以学习 SQLite 时,同样可以借它理解数据库基础,只是要意识到它的并发与部署模型不同于服务端数据库。

3. 它最适合的不是“共享中心主库”,而是“应用内部存储层”

这也是为什么它经常出现在:

  • Electron
  • 移动端
  • 本地工具
  • 离线优先应用

这些场景里。

常见用途

  • Electron / 移动端 / 本地工具的数据存储
  • 本地缓存、离线副本
  • 学习 SQL 和做最小实验的轻量环境
  • 不想引入独立数据库服务时的嵌入式持久化方案

和 MySQL / PostgreSQL 相比时最常见的认知差异

一个很稳的心智模型是:

  • SQLite 是“应用内数据库”
  • MySQL / PostgreSQL 是“独立数据库服务”

所以三者不是简单的高低配关系,而是部署位置和目标场景不同。

具体对照可继续看:

相关 howto / MOC / 官方链接

创建于 2025/1/1 更新于 2026/5/27