Files
Web_BLS_Heartbeat_Server/openspec/changes/remove-runtime-db-bootstrap/proposal.md
XuJiacheng 3b98c6239b feat: 移除运行时代码中的数据库初始化与分区维护逻辑
- 新增备份 SQL 脚本 `01_init_schema.sql` 和 `02_create_partitions.sql`,用于数据库结构初始化和分区预创建。
- 新增 Node.js 脚本 `run_init.js` 和 `run_ensure_partitions.js`,支持通过外部程序调用进行数据库初始化和分区维护。
- 确保数据库初始化脚本支持幂等重复执行。
- 更新文档,说明新的执行顺序和使用方法。
- 移除运行时相关的数据库初始化和分区维护配置,简化服务职责。
- 保留写入失败时的缺分区兜底逻辑,确保服务稳定性。
2026-03-04 11:47:22 +08:00

1.2 KiB

Change: Remove runtime DB bootstrap from service

Why

当前服务进程同时承担了“业务消费写入”和“数据库建库/分区维护”两类职责,导致部署耦合、运维边界不清晰,且难以被其他程序复用。

本次变更将建库与分区维护彻底外部化,服务进程只保留 Kafka → 处理 → 写库主链路。

What Changes

  • 从运行时代码中移除启动建表、建函数、建索引、定时分区维护逻辑。
  • 移除运行时相关开关配置(DB_INIT_AND_PARTITION_ENABLEDDB_PARTITION_*)。
  • 在仓库根目录新增 SQL_Script/,提供可由外部程序调用的 SQL/JS 脚本:
    • 01_init_schema.sql
    • 02_create_partitions.sql
    • run_init.js
    • run_ensure_partitions.js
  • 保留写入失败时“缺分区”兜底:按批次时间范围调用 heartbeat.ensure_partitions 后重试(前提是外部初始化已部署函数)。

Impact

  • Affected specs: db
  • Affected code:
    • src/db/databaseManager.js
    • src/config/config.js
    • src/config/config.example.js
    • .env
    • .env.example
    • SQL_Script/*
  • Operational impact:
    • BREAKING (运维流程层面):首次部署或升级后,需先执行 SQL_Script 初始化脚本,再启动服务。