添加新特性设计
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