refactor(openspec): 归档心跳数据库v2更新相关文档
将update-heartbeat-db-v2目录下的文档迁移至archive目录 更新specs目录下的相关规范文件以反映最新变更
This commit is contained in:
@@ -2,9 +2,7 @@
|
||||
|
||||
## Purpose
|
||||
本规范定义本服务对 PostgreSQL 的连接池配置、表结构初始化(含分区表)、分区预创建维护策略、批量写入与约束错误处理等行为。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 数据库连接管理
|
||||
系统 MUST 能够建立和维护与 PostgreSQL 数据库的连接。
|
||||
|
||||
@@ -48,21 +46,17 @@
|
||||
### Requirement: 数据库表结构管理
|
||||
系统 MUST 提供数据库表结构的定义和管理机制。
|
||||
|
||||
#### Scenario: 表结构初始化
|
||||
- **WHEN** 系统首次启动时
|
||||
- **THEN** 系统应该检查数据库表是否存在
|
||||
- **AND** 不存在时应该创建表结构
|
||||
#### Scenario: 表结构初始化(高吞吐分区表)
|
||||
- **WHEN** 系统首次启动或部署数据库时
|
||||
- **THEN** 应该存在按 `ts_ms` 日分区的心跳明细表
|
||||
- **AND** 必填字段应具备 NOT NULL 约束
|
||||
- **AND** 状态类字段应具备 CHECK 约束(限制取值范围)
|
||||
- **AND** 必需索引应存在(hotel_id/power_state/guest_type/device_id B-tree;service_mask BRIN)
|
||||
|
||||
#### Scenario: 分区预创建(无人值守)
|
||||
- **WHEN** 系统启动完成数据库初始化后
|
||||
- **THEN** 系统应该预创建未来一段时间(例如未来 30 天)的日分区
|
||||
- **AND** 系统应该周期性执行该预创建以保证长期运行不中断
|
||||
- **AND** 当分区预创建失败时应记录错误日志
|
||||
|
||||
#### Scenario: 表结构迁移
|
||||
- **WHEN** 表结构需要变更时
|
||||
- **THEN** 系统应该支持平滑的表结构迁移
|
||||
- **AND** 不影响现有数据
|
||||
#### Scenario: 自动分区
|
||||
- **WHEN** 写入某天数据而该日分区不存在
|
||||
- **THEN** 系统应能够自动创建对应日分区或确保分区被预创建
|
||||
- **AND** 不应影响持续写入(高吞吐场景)
|
||||
|
||||
### Requirement: 数据查询支持
|
||||
系统 MUST 支持基本的数据查询操作,用于监控和调试。
|
||||
@@ -76,3 +70,12 @@
|
||||
- **WHEN** 需要按特定条件查询心跳数据时
|
||||
- **THEN** 系统应该支持条件过滤
|
||||
- **AND** 返回符合条件的数据
|
||||
|
||||
### Requirement: 高吞吐写入友好
|
||||
系统 MUST 在高吞吐场景(约 5 万条/分钟量级)下避免单点瓶颈。
|
||||
|
||||
#### Scenario: 批量写入与分区裁剪
|
||||
- **WHEN** 进行批量写入
|
||||
- **THEN** 写入应路由到正确日分区
|
||||
- **AND** 常见查询(hotel_id + 时间范围)应触发分区裁剪
|
||||
|
||||
|
||||
Reference in New Issue
Block a user