Files
Web_BLS_Heartbeat_Server/openspec/changes/add-g4-hot-dual-write/proposal.md
XuJiacheng 43fa7505e5 feat: 新增 G4 热表独立双写能力
- 新增配置项以支持旧/新明细表的独立写入开关及目标表名。
- 重构 DatabaseManager,抽象通用批量 COPY 写入内核,支持不同目标表的复用。
- 新增双明细写入编排器,支持旧/新表独立执行、重试及 fallback。
- 调整 HeartbeatProcessor.processBatch(),确保 room_status 独立执行。
- 错误表仅记录新表写入失败,旧表失败不再写入错误表。
- 重新定义消费暂停策略,基于当前启用的关键 sink 判断。
- 补充按 sink 维度的统计项与启动日志。

新增 G4 热表相关的数据库规范与处理逻辑,确保系统在双写模式下的稳定性与可扩展性。
2026-03-09 15:49:12 +08:00

1.4 KiB
Raw Blame History

Change: 新增 G4 热表独立双写能力

Why

当前系统仅写入旧明细表 heartbeat.heartbeat_events。需要新增对 heartbeat.heartbeat_events_g4_hot 的独立写入能力,两路写入完全解耦、可分别开关,支持后续平滑关闭旧表、仅保留新表。

What Changes

  • 新增配置项:旧/新明细表写入开关、目标表名、room_status 独立开关
  • 重构 DatabaseManager:抽象通用批量 COPY 写入内核,支持面向不同目标表的复用
  • 新增双明细写入编排器:旧/新表各自独立执行、独立重试、独立 fallback
  • 调整 HeartbeatProcessor.processBatch()room_status 从"依赖旧表成功"改为"始终独立执行"
  • 错误表 heartbeat_events_errors 仅记录新表写入失败,旧表失败不再写错误表
  • 重新定义消费暂停策略:基于"当前启用的关键 sink"判断,非全局一刀切
  • 补充按 sink 维度的统计项与启动日志

Impact

  • Affected specs: db, processor
  • Affected code:
    • src/config/config.js — 新增配置项
    • src/db/databaseManager.js — 核心重构
    • src/processor/heartbeatProcessor.js — 主流程调整
    • src/index.js — 启动日志
    • src/stats/statsManager.js — 统计项
    • src/config/config.example.js — 配置示例
  • No breaking changes to external APIs or Kafka consumer behavior
  • Data source and transformation logic remain unchanged