feat: 外置数据库初始化与分区管理功能
- 删除主服务中的数据库初始化与分区管理逻辑,降低复杂度。 - 新增 SQL 脚本用于数据库初始化和分区管理,集中在 SQL_Script 目录。 - 移除环境变量 ENABLE_DATABASE_INITIALIZATION,简化配置。 - 更新 package.json,新增数据库初始化和分区管理的 npm 脚本。 - 删除不再使用的初始化和分区管理相关文件。 - 提供统一的命令行接口,支持外部调用数据库初始化和分区创建。
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
# Proposal: Externalize DB Provisioning
|
||||
|
||||
## Why
|
||||
- 降低主服务复杂度与运行时 DDL 风险。
|
||||
- 避免在高并发消费服务中执行建库/建分区。
|
||||
- 便于平台化调度(独立任务/外部程序调用)。
|
||||
|
||||
## What
|
||||
- 删除主服务中的初始化与分区创建能力。
|
||||
- 将建库相关 SQL 与 JS 工具集中到根目录 `SQL_Script`。
|
||||
- 提供统一 npm scripts 入口供外部调用。
|
||||
|
||||
## Non-Goals
|
||||
- 不改动 Kafka 解析与业务写库模型。
|
||||
- 不引入旧开关兼容。
|
||||
@@ -0,0 +1,64 @@
|
||||
# Externalize Database Provisioning to SQL_Script
|
||||
|
||||
## 1. 背景
|
||||
当前服务进程中仍包含数据库初始化与分区创建相关职责。为降低主服务复杂度、避免运行时 DDL 风险,并支持由外部程序统一调度,现将“建库/建表/建分区”能力完全外置到根目录 `SQL_Script`。
|
||||
|
||||
## 2. 目标
|
||||
1. 主服务 `bls-rcu-action-backend` 启动后仅执行:拉取 Kafka -> 解析 -> 写库。
|
||||
2. 删除所有运行时建库、建表、建分区与对应定时任务逻辑。
|
||||
3. 不保留旧兼容开关(如 `ENABLE_DATABASE_INITIALIZATION`)。
|
||||
4. 在根目录 `SQL_Script` 提供可复用的 SQL 与 JS 调用入口,供其他程序调用。
|
||||
|
||||
## 3. 变更范围
|
||||
### 3.1 业务服务(剥离)
|
||||
- 删除文件:
|
||||
- `bls-rcu-action-backend/src/db/initializer.js`
|
||||
- `bls-rcu-action-backend/src/db/partitionManager.js`
|
||||
- 修改文件:
|
||||
- `bls-rcu-action-backend/src/index.js`
|
||||
- 移除初始化与定时建分区调用
|
||||
- `bls-rcu-action-backend/src/config/config.js`
|
||||
- 移除 `enableDatabaseInitialization`
|
||||
- `bls-rcu-action-backend/src/db/roomStatusManager.js`
|
||||
- 移除自动建分区逻辑(仅保留 upsert)
|
||||
- `bls-rcu-action-backend/.env`
|
||||
- `bls-rcu-action-backend/.env.example`
|
||||
- 移除 `ENABLE_DATABASE_INITIALIZATION`
|
||||
- 删除旧 SQL:
|
||||
- `bls-rcu-action-backend/scripts/init_db.sql`
|
||||
|
||||
### 3.2 外部脚本(新增)
|
||||
新增根目录 `SQL_Script/`:
|
||||
- `init_rcu_action.sql`
|
||||
- `init_room_status.sql`
|
||||
- `partition_rcu_action.sql`
|
||||
- `partition_room_status.sql`
|
||||
- `db_manager.js`(CLI + import)
|
||||
- `README.md`
|
||||
|
||||
### 3.3 npm scripts(入口)
|
||||
在 `bls-rcu-action-backend/package.json` 新增:
|
||||
- `db:init:all`
|
||||
- `db:init:rcu-action`
|
||||
- `db:init:room-status`
|
||||
- `db:partition:rcu-action`
|
||||
- `db:partition:room-status`
|
||||
|
||||
## 4. 设计约束
|
||||
1. 主服务代码中不得出现 `CREATE TABLE` / `CREATE SCHEMA` / `CREATE INDEX` / 分区创建语句。
|
||||
2. 主服务中不得出现初始化器和分区管理器调用路径。
|
||||
3. 建库能力仅存在于根目录 `SQL_Script`。
|
||||
|
||||
## 5. 验收标准
|
||||
1. `npm run test` 全通过。
|
||||
2. `npm run build` 通过,且 `dist/index.js` 不包含以下关键词:
|
||||
- `dbInitializer`
|
||||
- `partitionManager`
|
||||
- `ENABLE_DATABASE_INITIALIZATION`
|
||||
- `ensurePartitions`
|
||||
3. 通过 `npm run db:init:all` 可以执行外部初始化流程。
|
||||
4. 通过 `npm run db:partition:rcu-action`、`npm run db:partition:room-status -- <hotelId>` 可执行外部分区流程。
|
||||
|
||||
## 6. 迁移说明
|
||||
- 旧部署流程若依赖服务启动自动建库,需改为先执行 `SQL_Script` 对应命令,再启动主服务。
|
||||
- 该变更为有意“去兼容”升级:删除旧开关与旧路径,避免双路径维护。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 2026-03-04 外置建库能力改造总结
|
||||
|
||||
## 概述
|
||||
已将建库(初始化 + 分区创建)能力从主服务中完全剥离,迁移至根目录 `SQL_Script`,并提供可供其他程序调用的 JS/SQL 入口。
|
||||
|
||||
## 实施结果
|
||||
|
||||
### 已删除(主服务内)
|
||||
- `src/db/initializer.js`
|
||||
- `src/db/partitionManager.js`
|
||||
- 运行时初始化、定时分区维护逻辑
|
||||
- 配置项:`ENABLE_DATABASE_INITIALIZATION`
|
||||
- 旧 SQL:`bls-rcu-action-backend/scripts/init_db.sql`
|
||||
|
||||
### 已新增(根目录)
|
||||
- `SQL_Script/init_rcu_action.sql`
|
||||
- `SQL_Script/init_room_status.sql`
|
||||
- `SQL_Script/partition_rcu_action.sql`
|
||||
- `SQL_Script/partition_room_status.sql`
|
||||
- `SQL_Script/db_manager.js`
|
||||
- `SQL_Script/README.md`
|
||||
|
||||
### 已新增 npm 入口
|
||||
- `db:init:all`
|
||||
- `db:init:rcu-action`
|
||||
- `db:init:room-status`
|
||||
- `db:partition:rcu-action`
|
||||
- `db:partition:room-status`
|
||||
|
||||
## 验证
|
||||
- `npm run test`:通过(45/45)
|
||||
- `npm run build`:通过
|
||||
- 构建产物不再包含初始化/分区管理逻辑
|
||||
|
||||
## 影响
|
||||
- 主服务职责更单一:只处理 Kafka 消费与写库。
|
||||
- DDL 改为外部可控,适合由调度系统或独立服务统一执行。
|
||||
Reference in New Issue
Block a user