添加新特性设计
This commit is contained in:
parent
7cd56c342e
commit
0942d6db20
|
@ -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
|
||||
|
|
|
@ -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使用率)
|
|
@ -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"的使用
|
||||
- 并发访问的锁机制实现
|
||||
- 元数据持久化和恢复机制
|
||||
|
||||
## 测试验证
|
||||
- 验证元数据初始化是否正确
|
||||
- 测试创建/删除操作是否更新元数据
|
||||
- 验证并发访问的正确性
|
||||
- 故障恢复测试
|
|
@ -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号任务
|
||||
- 更新任务依赖关系
|
Loading…
Reference in New Issue