Files
markbase/docs/DATABASE_COMPARISON_QUICKREF.md
Warren 1300a4e223
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能:
-  Categories/Series双视图管理(category_view.rs + import_markdown.rs)
-  FUSE Multi-Volume支持(tree_type参数)
-  SSH/SFTP/SCP/rsync协议完整实现(4042行)
-  NFS/SMB Module Phase 1-3完成
-  Archive Module Phase 1-4完成(2916行)
-  Download Center API完整实现
-  S3兼容API实现(560行)

Git配置修正:
-  删除错误origin(gitea.momentry.ddns.net)
-  删除m5max128(指向机器名)
-  设置origin = m5max128gitea.momentry.ddns.net/admin/markbase
-  设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase

数据清理:
-  删除38个临时SQLite(保留accusys.sqlite、demo.sqlite)
-  删除.bak、test_*.bin、调试脚本等临时文件
-  删除临时目录(build/、download files/、raid_test/等)
-  更新.gitignore排除临时文件

架构优化:
- 52个文件修改,2434行新增,4739行删除
- Workspace成员整合(16个crate)
- 数据库状态:accusys.sqlite保留(主demo测试)

远程同步:
-  准备推送到m5max128gitea(远程Gitea)
-  准备推送到m4minigitea(本地Gitea)
2026-06-12 12:59:54 +08:00

4.5 KiB
Raw Blame History

三数据库性能对比速览

测试日期: 2026-05-29
测试数据: 12,660 nodes (warren.sqlite)


核心性能对比表

性能指标 SQLite Sled RocksDB 最优选择
批量导入吞吐 14,243/sec 163,137/sec 94,867/sec Sled
导入时间 890ms 77.60ms 133.45ms Sled
批量插入吞吐 50,000/sec 1,480,166/sec 1,083,336/sec Sled
查询延迟 <1ms 1429.88 ns 1911.54 ns SQLite
并发读取 10,000/sec 5,220,228/sec 2,099,223/sec Sled
并发写入 单writer 多writer 多writer Sled
数据库大小 12.33MB 192 bytes (异常) 47.15MB ⚠️⚠️⚠️ SQLite

性能排名总结

写入性能排名

  1. Sled - 163K/sec导入1.48M/sec插入
  2. RocksDB - 94K/sec导入1.08M/sec插入
  3. SQLite - 14K/sec导入50K/sec插入

读取性能排名

  1. SQLite - <1ms延迟SQL优化
  2. Sled - 1429ns延迟MVCC无锁
  3. RocksDB - 1911ns延迟LSM-Tree多层查找

空间效率排名

  1. SQLite - 12.33MB (最小)
  2. Sled - 192 bytes (异常数据,实际应更大)
  3. RocksDB - 47.15MB (最大3.82倍SQLite)

关键发现

Sled 性能惊人

  • 导入吞吐11.42倍SQLite
  • 批量插入29.6倍SQLite
  • 并发读取522倍SQLite
  • 纯Rust实现无FFI依赖

RocksDB 性能中等

  • 导入吞吐6.67倍SQLite
  • 批量插入21.7倍SQLite
  • 并发读取210倍SQLite
  • 空间开销3.82倍SQLite最大劣势

SQLite 性能稳定

  • 查询延迟:最低
  • 空间效率:最高
  • SQL支持完整
  • 调试工具:完善

技术特性对比

特性 SQLite Sled RocksDB
存储模型 B-Tree B-Tree+MVCC LSM-Tree
并发写入 单writer 多writer 多writer
SQL支持 完整
压缩支持 Snappy
FFI依赖
调试工具 丰富 缺乏 中等

最终决策

短期推荐SQLite + 优化

理由:

  • 功能完全匹配SQL查询必需
  • 查询性能最优(<1ms延迟
  • 空间效率最高12.33MB
  • 成本最低4天优化

🚀 中长期推荐SQLite + Sled混合架构

架构设计:

Metadata Layer (SQLite):
├── file_nodes (SQL查询)
├── file_registry (JOIN查询)
├── user_auth (认证)
└── sync_log (同步)

KV Layer (Sled):
├── file_content_hash → path (并发写入)
├── hot_files_cache (缓存)
└── metadata_cache (快速查询)

为什么不选择RocksDB

  • 写入性能不如Sled94K vs 163K
  • 查询性能最慢1911ns vs 1429ns
  • 空间开销最大47MB vs 12MB
  • 配置复杂度高200+参数)

迁移成本对比

数据库 迁移工作量 技术风险 开发成本
SQLite优化 4天 最低
Sled迁移 8天 中等
RocksDB迁移 13天 最高

适用场景总结

SQLite 适用场景

  • 需要 SQL 查询JOIN, WHERE
  • 需要调试工具SQLite Browser
  • 空间效率优先
  • 单writer场景

Sled 适用场景

  • 写入性能优先
  • 纯 Rust 项目
  • 简单 KV 存储
  • 并发读取优先

RocksDB 适用场景 ⚠️

  • 数据规模 > 100GB
  • 需要压缩且已配置优化
  • 团队有 LSM-Tree 知识
  • 不需要 SQL 查询

测试代码位置

所有测试工具:

/Users/accusys/markbase/filetree-sled/
/Users/accusys/markbase/filetree-rocksdb/

运行命令:

# Sled测试
cargo run --release --bin filetree-sled-poc
cargo run --release --bin sqlite-to-sled-migrate

# RocksDB测试
cargo run --release --bin filetree-rocksdb-poc
cargo run --release --bin sqlite-to-rocksdb-migrate

一句话总结:
Sled写入性能最优SQLite读取/空间最优,推荐 SQLite + Sled 混合架构RocksDB 因空间开销和配置复杂度不推荐。