Skip to content
Go back

Rust 嵌入式数据库对比

Edit

不想再挂 Postgres / MySQL 时,常用嵌入式(进程内)数据库。按 SQL 和 KV 分开看。

SQL:SQLite

需要表、JOIN、索引、迁移、ORM 时,优先 SQLite。差别主要在 访问方式

Crate异步绑定方式核心亮点主要短板适合
rusqlite绑 SQLite(可 bundledSQLite 官方感 API、功能全、部署可静态编进二进制同步;Web 服务要自己丢线程池CLI / 桌面 / 嵌入式默认首选
sqlx(sqlite)绑 SQLite(可 bundled)异步、编译期查 SQL、raw SQL 友好和 rusqlite 同项目可能撞 libsqlite3-sys 版本Tokio 服务、要 compile-time check
diesel(sqlite)否(异步需额外)绑 SQLite成熟 ORM、类型安全 DSL学习曲线、迁移偏「Diesel 风格」长期项目、强类型 schema
SeaORM(sqlite)经 sqlx 等动态 ORM、关系处理顺手抽象层更厚习惯传统 ORM 的团队

实务上:纯 SQLite、同步场景用 rusqlite(开 bundled);异步服务用 sqlx;要完整 ORM 再看 Diesel / SeaORM

KV:Rust 嵌入式

只要 key → value、自己管序列化 / 索引时,KV 更轻。

结构纯 Rust事务核心亮点主要短板适合
redbB+ tree(CoW)ACID单文件、API 清爽、活跃维护;新项目默认极端写吞吐不如顶尖 LSM通用嵌入式 KV、读多写少
sled类 LSM / 混合可序列化事务曾是社区热门、API 像并发 BTreeMap维护模式 / 偏 beta,新项目不推荐遗留代码
fjallLSM支持纯 Rust LSM、批量写表现好生态比 RocksDB 小要纯 Rust 的写密集存储
heed(LMDB)B+ tree否(绑 LMDB)ACID,多进程读友好读极快、多进程、久经考验写扩容 / 环境变量调参有坑读多、多进程、信任 LMDB
rocksdb(rust 绑定)LSM否(C++)快照 / 列族等工业级写吞吐与压缩、功能全编译重、调参复杂写极重、要成熟运维经验
sanakirjaB tree事务轻量、可嵌进更高层 DB文档与社区小于 redb自研存储引擎底层

粗分:新项目默认 redb;写密集纯 Rust → fjall;读多且要 LMDB 模型 → heed;极致写且能接受 C++ 依赖 → rocksdb

怎么选

需求建议
要 SQL / 复杂查询SQLite + rusqlite(同步)或 sqlx(异步)
通用 KV、读多、省心redb
高写入、纯 Rustfjall
工业级 LSM、能接受 C++rocksdb
多进程只读友好heed(LMDB)
sled 遗留代码仅维护;新功能迁 redb

注意

推荐(一句话)

要查询 → rusqlite(同步)或 sqlx(异步);默认 KV → redb;写密集纯 Rust → fjall;工业级 LSM → rocksdb;多进程读 → heed


Edit
Share this post on:

Previous Post
Go 嵌入式数据库对比
Next Post
Sandbox 对比