diff --git a/design/design.md b/design/design.md index e703762..bf59ca5 100644 --- a/design/design.md +++ b/design/design.md @@ -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 diff --git a/design/tasks/017-storage_compact_mode.md b/design/tasks/017-storage_compact_mode.md new file mode 100644 index 0000000..e3c125c --- /dev/null +++ b/design/tasks/017-storage_compact_mode.md @@ -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使用率) \ No newline at end of file diff --git a/design/tasks/018-metadata_management.md b/design/tasks/018-metadata_management.md new file mode 100644 index 0000000..6364fc8 --- /dev/null +++ b/design/tasks/018-metadata_management.md @@ -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"的使用 +- 并发访问的锁机制实现 +- 元数据持久化和恢复机制 + +## 测试验证 +- 验证元数据初始化是否正确 +- 测试创建/删除操作是否更新元数据 +- 验证并发访问的正确性 +- 故障恢复测试 \ No newline at end of file diff --git a/design/tasks/README.md b/design/tasks/README.md new file mode 100644 index 0000000..af0b32f --- /dev/null +++ b/design/tasks/README.md @@ -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号任务 +- 更新任务依赖关系 \ No newline at end of file