Files
markbase/docs/HYBRID_IMPLEMENTATION_GUIDE.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

175 lines
4.3 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.
# SQLite + Sled 混合架构实施指南
**实施日期:** 2026-05-29
**实施目标:** 6天POC实施 + 生产部署评估
---
## 实施路线图
### Phase 1: 基础架构 (Day 1-2)
```
Day 1: HybridRouter 实现
├── HybridRouter基础框架
├── 数据路由逻辑
└── 基础查询API
Day 2: 缓存机制实现
├── metadata_cache Tree
├── 缓存查询逻辑
└── 缓存失效机制
```
### Phase 2: 数据同步 (Day 3-4)
```
Day 3: 双写机制实现
├── 双写同步逻辑
├── 一致性检查
└── 自动修复机制
Day 4: 缓存优化实现
├── hot_files_cache Tree
├── LRU淘汰机制
└── TTL过期清理
```
### Phase 3: 性能验证 (Day 5-6)
```
Day 5: 性能测试
├── 混合架构性能测试
├── 缓存命中率测试
└── 并发性能测试
Day 6: 优化调优
├── 缓存配置优化
├── 并发配置优化
└── 性能对比验证
```
---
## 核心代码框架
### HybridRouter 核心
```rust
pub struct HybridRouter {
sqlite_conn: Connection,
sled_db: sled::Db,
}
impl HybridRouter {
pub fn route_query(&self, query_type: QueryType) -> DatabaseType {
match query_type {
// SQL查询 → SQLite
QueryType::ParentChildren => DatabaseType::SQLite,
QueryType::FileUuidJoin => DatabaseType::SQLite,
QueryType::WhereFilter => DatabaseType::SQLite,
// KV查询 → Sled
QueryType::ContentHashLookup => DatabaseType::Sled,
QueryType::HotFileCache => DatabaseType::Sled,
QueryType::MetadataCache => DatabaseType::Sled,
// 混合查询 → 优先缓存
QueryType::NodeLookup => DatabaseType::Hybrid,
}
}
pub fn get_node(&self, node_id: &str) -> Result<Option<FileNode>> {
// 混合策略:
// 1. Check Sled cache (fast)
// 2. If not found, query SQLite (slow)
// 3. Update Sled cache
let cache_tree = self.sled_db.open_tree("metadata_cache")?;
// Step 1: Check cache
if let Some(cache_data) = cache_tree.get(node_id.as_bytes())? {
let cache: CachedMetadata = serde_json::from_slice(&cache_data)?;
if cache.ttl > 0 {
return Ok(Some(cache.to_file_node()));
}
}
// Step 2: Query SQLite
let node = self.sqlite_query_node(node_id)?;
// Step 3: Update cache
if let Some(n) = &node {
let cache = CachedMetadata::from_node(n);
cache_tree.insert(node_id.as_bytes(), serde_json::to_vec(&cache)?)?;
}
Ok(node)
}
}
```
---
## 快速启动命令
### POC 测试
```bash
# 1. 创建混合架构模块
mkdir -p filetree-hybrid/src
# 2. 编译运行
cargo build --release --package filetree-hybrid
cargo run --release --bin hybrid-poc-test
# 3. 性能对比测试
cargo run --release --bin hybrid-benchmark
```
---
## 监控指标
### 缓存命中率目标
```
Target Cache Hit Rate:
┌─────────────────────────────────┐
│ Level 5: FUSE hot path │ → 95%+ hit rate
│ Level 4: Frequently accessed │ → 90%+ hit rate
│ Level 3: Normal accessed │ → 80%+ hit rate
│ Level 2: Rarely accessed │ → 60%+ hit rate
│ Level 1: Cold files │ → 40%+ hit rate
│ Level 0: Archive files │ → 20%+ hit rate
└─────────────────────────────────┘
Overall Target: 85%+ cache hit rate
```
### 性能目标
```
Performance Targets:
├── Query latency: <1ms (cache hit) / <5ms (cache miss)
├── Import throughput: >100K/sec (Sled batch)
├── Concurrent reads: >1M/sec (Sled MVCC)
└── Cache hit rate: >85%
```
---
## 部署决策矩阵
| 触发条件 | 当前状态 | 阈值 | 决策 |
|----------|----------|------|------|
| **并发用户** | 1-3 | >10 | 开始POC |
| **导入吞吐** | 14K/sec | >50K/sec | 开始POC |
| **查询延迟** | <1ms | >10ms | 开始优化 |
| **缓存需求** | 无 | >80%命中率 | 开始POC |
---
## 一句话总结
**6天POC实施保留SQLite SQL优势 + 利用Sled性能优势达到85%+缓存命中率。**