- 新增 heartbeat 数据库与表结构文档,描述心跳明细表设计及字段约束。 - 新增 OpenSpec 符合性说明文档,指出与规范的一致点及偏差。 - 新增 Kafka 心跳数据推送说明文档,定义消息格式与推送方式。 - 更新数据库创建脚本,支持 UTF-8 编码与中文排序规则。 - 更新心跳表结构脚本,定义主表及索引,采用 ts_ms 日分区。 - 实现自动分区机制,确保按天创建分区以支持高吞吐写入。 - 添加数据库应用脚本,自动执行 SQL 文件并验证表结构。 - 添加运行时烟雾测试脚本,验证数据库连接与基本操作。 - 添加完整的烟雾测试脚本,验证数据插入与分区创建。
2.6 KiB
2.6 KiB
数据库操作规范
需求
Requirement: 数据库连接管理
系统必须能够建立和维护与PostgreSQL数据库的连接。
Scenario: 成功连接数据库
- WHEN 系统启动时
- THEN 应该成功连接到配置的PostgreSQL数据库
- AND 应该监控连接状态
Scenario: 数据库连接断开重连
- WHEN 数据库连接断开时
- THEN 系统应该自动尝试重连
- AND 重连失败时应该记录错误日志
Requirement: 心跳数据写入
系统必须能够将处理后的心跳数据写入PostgreSQL数据库。
Scenario: 写入单条心跳数据
- WHEN 接收到单条处理后的心跳数据时
- THEN 系统应该将数据写入数据库
- AND 返回写入结果
Scenario: 批量写入心跳数据
- WHEN 接收到批量处理后的心跳数据时
- THEN 系统应该使用批量写入机制将数据写入数据库
- AND 提高写入效率
Requirement: 数据完整性保障
系统必须保障写入数据库的心跳数据的完整性。
Scenario: 事务管理
- WHEN 写入多条相关数据时
- THEN 系统应该使用事务确保数据一致性
- AND 要么全部写入成功,要么全部失败
Scenario: 数据约束验证
- WHEN 写入的数据违反数据库约束时
- THEN 系统应该捕获约束错误
- AND 记录错误日志
- AND 根据配置决定是否重试
Requirement: 数据库表结构管理
系统必须包含数据库表结构的定义和管理机制。
Scenario: 表结构初始化
- WHEN 系统首次启动时
- THEN 系统应该检查数据库表是否存在
- AND 不存在时应该创建表结构
Scenario: 分区预创建(无人值守)
- WHEN 系统启动完成数据库初始化后
- THEN 系统应该预创建未来一段时间(例如未来 30 天)的日分区
- AND 系统应该周期性执行该预创建以保证长期运行不中断
- AND 当分区预创建失败时应记录错误日志
Scenario: 表结构迁移
- WHEN 表结构需要变更时
- THEN 系统应该支持平滑的表结构迁移
- AND 不影响现有数据
Requirement: 数据查询支持
系统必须支持基本的数据查询操作,用于监控和调试。
Scenario: 查询最新心跳数据
- WHEN 需要查询最新的心跳数据时
- THEN 系统应该提供查询接口
- AND 返回符合条件的数据
Scenario: 按条件查询心跳数据
- WHEN 需要按特定条件查询心跳数据时
- THEN 系统应该支持条件过滤
- AND 返回符合条件的数据