LiteDB vs SQLite(断线缓存场景对比)

🆚 LiteDB vs SQLite(断线缓存场景对比)

用火狐浏览器打开github,不能打开就换浏览器。github不稳定,国内访问。

表格

项目LiteDBSQLite
代码风格POCO+LINQ,不用 SQLSQL 语句
加密原生 AES,开箱即用原生无加密,需要 SQLCipher
依赖单个 450KB .NET dll原生库,Microsoft.Data.Sqlite 底层调用 sqlite
多进程访问❌不支持,单进程独占✅支持多进程
管理工具LiteDB.Studio(轻量单文件)DB4S、SQLiteSpy(极小)+ 系统自带 sqlite3 cli
写入锁集合写锁,多写串行行 / 页锁,并发能力更强
Ubuntu 远程 ssh 排查无内置 cli,需要写小工具内置 sqlite3 命令行,直接 ssh 查数据

🎯 推荐选型判断(你的断线缓存)

✅ 选 LiteDB,如果:

  • 想要内置加密,不想折腾 SQLCipher;
  • 采集程序是单进程,单线程消费队列写入缓存;
  • 偏好 C# POCO,不想写 SQL;
  • 现场排查 db 文件拷贝回 Windows,用 LiteDB.Studio 查看即可。

✅ 继续用 SQLite,如果:

  • 需要ssh 登录 Ubuntu 服务器直接用命令行查询缓存数据(现场运维优势很大);
  • 未来有可能多个进程读写同一个缓存文件;
  • 不需要加密,用 Linux 文件权限保护就足够。

小坑提醒 LiteDB

  1. 不要多线程同时写同一个集合;用队列,单线程写入;
  2. 大量删除旧数据后,LiteDB 同样不会自动释放磁盘空间,需要调用 db.Rebuild() 回收空间(类似 VACUUM);
  3. 加密密钥写在配置文件,同样存在密钥泄露风险(和 SQLCipher 一样,只是加密是内置能力)。
阅读剩余
THE END