- Storage 层:定义存储抽象
StorageBase,当前实现MemoryStorage。 - Segment 层:
Segment封装单个段的生命周期、状态与实体 CRUD;SegmentManager负责段的创建、查找、状态管理。 - Schema 层:
Collection管理同构数据的逻辑集合;CollectionManager管理集合;Database/DatabaseManager管理数据库级资源。 - Query/Parser/Executor:解析 SQL/DSL,生成查询计划并执行,调用上层 schema/storage 接口。
insert/remove_by_id/update_by_id/get_by_id/querysize/empty/contains/clear
- 基于
unordered_map的内存实现,完全符合StorageBase接口。
- 属性:
id、status (GROWING/SEALED/FLUSHED/DROPPED)、created_at、sealed_at、storage_。 - 状态:
seal()封存;set_status/get_status。 - CRUD 与查询:
insert/remove_by_id/update_by_id/get_by_id/query。 - 统计:
size/empty。
- 创建/获取/删除:
create_segment(),get_segment(id),remove_segment(id),contains(id)。 - 状态与选择:
get_growing_segment(),get_segments_by_status(status),seal_segment(id)。 - 遍历与统计:
for_each_segment(cb),count_by_status(status),size/empty。
- 元数据:
name、schema、next_id、segment_manager、active_segment。 - 实体构造:
create_entity()(分配内部自增 ID 和字段槽位)。 - CRUD/查询:通过
active_segment调用段接口:insert/remove/update/query(目前仅插入实现)。
- 管理集合:
create_collection(name, schema),drop_collection(name),get_collection(name)。 - 路由:对外暴露集合级 CRUD/查询,内部查找对应
Collection并转发。
- 管理数据库元数据与集合管理器,提供数据库级的创建、删除、查找、委派集合操作。
Query持有Condition、Order、Limit等条件;执行时由段或集合层遍历存储实现。
- 用户通过
DatabaseManager::create_database(name)获取Database。 - 用户调用
Database::create_collection(name, schema),内部使用CollectionManager。 CollectionManager创建Collection,注入一个新的SegmentManager,并创建首个active_segment(GROWING)。
- 用户调用
Collection::create_entity()构造实体并填充字段。 Collection::insert(entity)调用active_segment_->insert(entity)。Segment检查状态(应为 GROWING)后,将请求委托给storage_(默认MemoryStorage),完成写入。
- 用户调用
Collection::query(Query)。 - Collection 选择需要参与的段(当前实现可直接用
active_segment;未来可遍历所有段)。 - 对每个段调用
segment->query(query),由段内部storage_->query执行过滤、排序、限制;合并结果返回。
- 用户调用
Collection::update(id, fields)或remove(id)。 - Collection 定位目标段(可依据分片/索引策略;当前可以默认 active 段或未来建立 ID→段映射)。
- 段检查状态(SEALED 段不应接受写),再转发给底层
storage_。
- 当段满足大小/时间阈值时,
SegmentManager::seal_segment(id)将段置为 SEALED,并记录sealed_at。 - 未来可由
SegmentManager触发刷新(FLUSHED)、删除(DROPPED)或创建新 GROWING 段并让 Collection 轮转active_segment。
CollectionManager::drop_collection(name)释放集合与其段。DatabaseManager::drop_database(name)级联释放其集合与段资源。
- 在
Segment的 CRUD 前增加状态检查,SEALED 段拒绝写入。 SegmentManager补全接口实现:段查找、状态过滤、计数、遍历。- Collection 在插入时检测
active_segment大小,必要时通过SegmentManager轮转新段。 - Query 聚合多段结果并做全局排序/限制。