添加新特性设计

This commit is contained in:
kingecg 2025-06-07 23:52:31 +08:00
parent 7cd56c342e
commit 0942d6db20
4 changed files with 171 additions and 0 deletions

View File

@ -388,3 +388,71 @@ log:
- 插件化架构支持扩展模块
- 预留监控插件接口
- 可扩展的日志处理钩子
2.17 紧凑模式设计
------------------
为优化存储资源使用,新增紧凑模式设计:
- 存储管理层重构:
- 创建StorageManager统一管理LevelDB实例
- 所有store模块通过StorageManager获取共享db实例
- 避免重复打开和关闭数据库连接
- 架构调整:
```
+---------------------+
| StorageManager |
| (单实例LevelDB) |
+---------------------+
/|\ /|\
| |
+---------------------+ +---------------------+
| DocumentStore | | IndexStore |
| (从StorageManager |<--->(从StorageManager |
| 获取共享db实例) | | 获取共享db实例) |
+---------------------+ +---------------------+
```
- 数据存储优化:
- 使用分层键设计共享同一LevelDB实例
- 优化内存使用和文件描述符管理
- 提供更高效的资源回收机制
2.18 元数据管理设计
------------------
新增元数据管理体系,支持数据库对象管理:
- 核心数据结构:
```go
type Metadata struct {
Collections []string `bson:"collections"` // 存储集合名称列表
Views []ViewMetadata `bson:"views"` // 存储视图元数据
Indexes []IndexMetadata `bson:"indexes"` // 存储索引元数据
}
// 视图元数据
type ViewMetadata struct {
Name string `bson:"name"` // 视图名称
Query string `bson:"query"` // 查询条件
Projection []string `bson:"projection"` // 投影字段
}
// 索引元数据
type IndexMetadata struct {
Name string `bson:"name"` // 索引名称
Collection string `bson:"collection"` // 关联集合
Fields []string `bson:"fields"` // 索引字段
Unique bool `bson:"unique"` // 是否唯一
}
```
- 存储设计:
- 使用固定键"metadata:db_info"存储元数据
- 所有元数据操作通过BSON序列化/反序列化
- 元数据更新使用原子操作保证一致性
- 管理接口:
- CreateCollection/DropCollection
- CreateIndex/DropIndex
- CreateView/DropView
- ListCollections/ListIndexes/ListViews

View File

@ -0,0 +1,31 @@
# 017-存储层紧凑模式设计
## 目标
实现存储层紧凑模式通过共享LevelDB实例优化资源使用
## 子任务
1. 创建StorageManager结构体storage/storage.go
- 实现NewStorageManager工厂函数
- 添加GetDB()方法供测试使用
2. 修改DocumentStore使用共享db实例
- 移除直接创建LevelDB的代码
- 使用StorageManager获取数据库实例
3. 修改IndexStore使用共享db实例
- 同步调整索引存储实现
- 确保索引操作兼容性
4. 添加资源管理接口
- Close()方法优雅关闭数据库
- 错误处理机制完善
## 技术要点
- 确保StorageManager的单例模式实现
- 处理数据库连接的生命周期管理
- 验证不同store操作是否互不影响
## 测试验证
- 验证多个store实例是否共享同一个db实例
- 测试db连接泄漏问题
- 性能对比测试(内存/CPU使用率

View File

@ -0,0 +1,41 @@
# 018-元数据管理设计
## 目标
实现数据库元数据管理体系,支持对象元数据的持久化管理
## 子任务
1. 创建元数据模块metadata/metadata.go
- 定义Metadata结构体
- 实现MetadataManager结构体
2. 实现元数据初始化方法
- 加载现有元数据或创建新元数据
- 错误处理和恢复机制
3. 实现集合管理方法
- CreateCollection/DropCollection
- 集合存在性检查
4. 实现索引管理方法
- CreateIndex/DropIndex
- 索引关联验证
5. 实现视图管理方法
- CreateView/DropView
- 视图依赖管理
6. 实现元数据原子更新机制
- 使用事务保证元数据操作的原子性
- 错误回滚处理
## 技术要点
- 元数据的BSON序列化/反序列化处理
- 固定键"metadata:db_info"的使用
- 并发访问的锁机制实现
- 元数据持久化和恢复机制
## 测试验证
- 验证元数据初始化是否正确
- 测试创建/删除操作是否更新元数据
- 验证并发访问的正确性
- 故障恢复测试

31
design/tasks/README.md Normal file
View File

@ -0,0 +1,31 @@
# 设计任务清单
## 当前任务列表
### 存储层相关
- [017-存储层紧凑模式设计](017-storage_compact_mode.md)
- [018-元数据管理设计](018-metadata_management.md)
- 019-高级索引优化
- 020-事务管理增强
### 接口相关
- 005-MongoDB兼容API设计
- 021-客户端协议优化
### 集群相关
- 009-集群基础架构
- 010-安全增强设计
### 扩展功能
- 006-高级索引
- 007-聚合查询
- 008-视图触发器
## 状态说明
- ✅ 已完成
- 🟡 进行中
- ❌ 未开始
当前最新任务:
- 新增017和018号任务
- 更新任务依赖关系