59 lines
1.5 KiB
Markdown
59 lines
1.5 KiB
Markdown
|
|
# 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);
|
|||
|
|
```
|