Files
markbase/docs/DATABASE_COMPARISON_QUICKREF.md
T
Warren 1300a4e223
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

173 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 三数据库性能对比速览
**测试日期:** 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/
```
**运行命令:**
```bash
# 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 因空间开销和配置复杂度不推荐。**