- 删除主服务中的数据库初始化与分区管理逻辑,降低复杂度。 - 新增 SQL 脚本用于数据库初始化和分区管理,集中在 SQL_Script 目录。 - 移除环境变量 ENABLE_DATABASE_INITIALIZATION,简化配置。 - 更新 package.json,新增数据库初始化和分区管理的 npm 脚本。 - 删除不再使用的初始化和分区管理相关文件。 - 提供统一的命令行接口,支持外部调用数据库初始化和分区创建。
1.5 KiB
1.5 KiB
SQL_Script
用于独立于业务服务的数据库初始化与分区管理。
目标:主服务
bls-rcu-action-backend只负责消费 Kafka 与写库,不再承担任何建库/建表/建分区职责。
文件说明
init_rcu_action.sql- 初始化
rcu_action.rcu_action_events主表与索引
- 初始化
init_room_status.sql- 初始化
room_status.room_status_moment主表与索引
- 初始化
partition_rcu_action.sqlrcu_action按天 RANGE 分区 SQL 模板
partition_room_status.sqlroom_status按hotel_idLIST 分区 SQL 模板
db_manager.js- Node 调用入口(CLI + 可 import)
环境变量
与主服务统一:
DB_HOST/POSTGRES_HOSTDB_PORT/POSTGRES_PORTDB_USER/POSTGRES_USERDB_PASSWORD/POSTGRES_PASSWORDDB_DATABASE/POSTGRES_DATABASEDB_SSL=true|falseDB_ADMIN_DATABASE(可选,默认postgres)
命令行调用
在 bls-rcu-action-backend 目录执行:
npm run db:init:all- 创建数据库(若不存在)+ 初始化两套主表
npm run db:init:rcu-actionnpm run db:init:room-statusnpm run db:partition:rcu-action- 默认预建未来 30 天分区
npm run db:partition:room-status -- 1001- 为 hotel_id=1001 建分区
其他程序直接 import
import {
initAll,
ensureDatabase,
ensureRcuPartitions,
ensureRoomStatusPartition
} from '../SQL_Script/db_manager.js';
await initAll();
await ensureRcuPartitions(45);
await ensureRoomStatusPartition(1001);