文章
关于SQLite和DuckDB怎么选
目录
- 🧱 SQLite vs 🦆 DuckDB
- 1. 定位对比(最关键的区别)
- SQLite:嵌入式 OLTP 数据库(行式)
- DuckDB:嵌入式 OLAP 数据库(列式)
- 2. 技术特点对比
- 3. 性能差异(实际体验)
- SQLite
- DuckDB
- 4. 核心应用场景
- 🧱 SQLite 适用场景(OLTP)
- ✔ 本地应用数据库
- ✔ 小型服务端应用
- ✔ 日志、小型 KV、本地缓存
- ✔ 持久化使用频繁的 CRUD
- ⛔ 不适合:大规模分析、数据仓库、重聚合查询
- 🦆 DuckDB 适用场景(OLAP)
- ✔ 数据分析 / 数据科学
- ✔ 数据工程 / ETL
- ✔ 直接查询大文件(无需导入)
- ✔ 单机数据湖引擎
- ✔ BI 工具和分析应用嵌入 SQL 引擎
- ⛔ 不适合:业务数据库、复杂事务、多用户并发写入
- 5. 选择指南(根据你的需求)
- 6. 最终总结:一句话比较
- SQLite:
- DuckDB:
🧱 SQLite vs 🦆 DuckDB#
1. 定位对比(最关键的区别)#
SQLite:嵌入式 OLTP 数据库(行式)#
适合「频繁插入、更新、小型应用的本地存储」。
DuckDB:嵌入式 OLAP 数据库(列式)#
适合「单机分析、对大文件写 SQL、聚合查询、数据科学」。 一句话概括:
SQLite = 轻量 MySQL DuckDB = 轻量 ClickHouse / Snowflake
2. 技术特点对比#
| 特性 | SQLite | DuckDB |
|---|---|---|
| 数据库类型 | 行式(Row-based) | 列式(Columnar) |
| 面向场景 | OLTP | OLAP |
| 主要强项 | 读写事务、插入更新 | 聚合、JOIN、全表扫描 |
| 并发 | 单写多读 | 并行查询、向量化执行 |
| 安装方式 | 单文件 | 单文件库 |
| 嵌入语言 | 几乎所有语言 | Python / JS / Rust / Go / Java 等 |
| 文件支持 | 自身文件 | CSV / JSON / Parquet / Arrow |
3. 性能差异(实际体验)#
SQLite#
- 对大文件(>1GB)做 group by 很慢
- 多次 INSERT / UPDATE 很快
- 可以作为真正的应用数据库
DuckDB#
- 对几 GB〜几十 GB 的数据分析非常快
- join / 聚合 / 排序性能远超 SQLite(几十倍)
- 不适合作为业务数据库(事务能力弱)
4. 核心应用场景#
🧱 SQLite 适用场景(OLTP)#
✔ 本地应用数据库#
- 桌面应用(如浏览器、编辑器)
- 手机 App(iOS/Android)
- 游戏保存数据
- IoT 设备本地存储
✔ 小型服务端应用#
- 嵌入式 API 服务的存储层
- 不需要高并发的小网站
✔ 日志、小型 KV、本地缓存#
✔ 持久化使用频繁的 CRUD#
⛔ 不适合:大规模分析、数据仓库、重聚合查询#
🦆 DuckDB 适用场景(OLAP)#
✔ 数据分析 / 数据科学#
- 本地跑 SQL 分析 CSV/Parquet
- 替代 pandas 做大数据处理
- 生成数据报表
✔ 数据工程 / ETL#
- 在后端服务中嵌入分析能力
- ETL 的 transform 阶段(join, group)
✔ 直接查询大文件(无需导入)#
例如:
SELECT * FROM 's3://bucket/data.parquet' WHERE value > 100;
✔ 单机数据湖引擎#
- 查询 Parquet
- 与 Arrow 结合
✔ BI 工具和分析应用嵌入 SQL 引擎#
⛔ 不适合:业务数据库、复杂事务、多用户并发写入#
5. 选择指南(根据你的需求)#
| 需求 | 选择 |
|---|---|
| 本地 app 存储数据 | SQLite |
| 移动应用本地数据库 | SQLite |
| Web 服务小数据 CRUD | SQLite |
| 批量分析数据(1GB~50GB) | DuckDB |
| 用 SQL 直接读 CSV / Parquet | DuckDB |
| 需要在后端嵌入分析引擎 | DuckDB |
| 想替代 pandas 或 Spark(单机) | DuckDB |
| 做 ETL 的聚合 / join | DuckDB |
| 小型数据仓库 / 本地 OLAP | DuckDB |
6. 最终总结:一句话比较#
SQLite:#
用于 应用的数据存储、高频读写、小规模数据库。
DuckDB:#
用于 本地或嵌入式的数据分析、文件查询、ETL、数据科学。