feat: 外置数据库初始化与分区管理功能
- 删除主服务中的数据库初始化与分区管理逻辑,降低复杂度。 - 新增 SQL 脚本用于数据库初始化和分区管理,集中在 SQL_Script 目录。 - 移除环境变量 ENABLE_DATABASE_INITIALIZATION,简化配置。 - 更新 package.json,新增数据库初始化和分区管理的 npm 脚本。 - 删除不再使用的初始化和分区管理相关文件。 - 提供统一的命令行接口,支持外部调用数据库初始化和分区创建。
This commit is contained in:
58
SQL_Script/README.md
Normal file
58
SQL_Script/README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# 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.sql`
|
||||
- `rcu_action` 按天 RANGE 分区 SQL 模板
|
||||
- `partition_room_status.sql`
|
||||
- `room_status` 按 `hotel_id` LIST 分区 SQL 模板
|
||||
- `db_manager.js`
|
||||
- Node 调用入口(CLI + 可 import)
|
||||
|
||||
## 环境变量
|
||||
|
||||
与主服务统一:
|
||||
|
||||
- `DB_HOST` / `POSTGRES_HOST`
|
||||
- `DB_PORT` / `POSTGRES_PORT`
|
||||
- `DB_USER` / `POSTGRES_USER`
|
||||
- `DB_PASSWORD` / `POSTGRES_PASSWORD`
|
||||
- `DB_DATABASE` / `POSTGRES_DATABASE`
|
||||
- `DB_SSL=true|false`
|
||||
- `DB_ADMIN_DATABASE`(可选,默认 `postgres`)
|
||||
|
||||
## 命令行调用
|
||||
|
||||
在 `bls-rcu-action-backend` 目录执行:
|
||||
|
||||
- `npm run db:init:all`
|
||||
- 创建数据库(若不存在)+ 初始化两套主表
|
||||
- `npm run db:init:rcu-action`
|
||||
- `npm run db:init:room-status`
|
||||
- `npm run db:partition:rcu-action`
|
||||
- 默认预建未来 30 天分区
|
||||
- `npm run db:partition:room-status -- 1001`
|
||||
- 为 hotel_id=1001 建分区
|
||||
|
||||
## 其他程序直接 import
|
||||
|
||||
```js
|
||||
import {
|
||||
initAll,
|
||||
ensureDatabase,
|
||||
ensureRcuPartitions,
|
||||
ensureRoomStatusPartition
|
||||
} from '../SQL_Script/db_manager.js';
|
||||
|
||||
await initAll();
|
||||
await ensureRcuPartitions(45);
|
||||
await ensureRoomStatusPartition(1001);
|
||||
```
|
||||
Reference in New Issue
Block a user