Files
Web_BLS_SQL_Temp/.trae/documents/创建数据库及房间状态表初始化脚本计划.md

35 lines
1.6 KiB
Markdown
Raw Normal View History

## 任务概览
根据 [.env](file:///e:/Project_Class/BLS/Web_BLS_SQL/.env) 的配置和 [project.md](file:///e:/Project_Class/BLS/Web_BLS_SQL/project.md) 中的需求,创建 PostgreSQL 数据库初始化脚本。该脚本将包含数据库创建、模式Schema定义、以及 `room_status_moment` 表的详细设计。
## 技术要点分析
1. **高性能读写**:针对高频查询和写入,我们将为关键字段(如 `hotel_id`, `room_id`, `device_id`, `guid` 等)建立索引。
2. **并发处理**:使用复合主键 `(hotel_id, room_id, device_id, guid)` 来确保数据的唯一性,并利用 PostgreSQL 的 `ON CONFLICT` 特性处理并发写入冲突。
3. **后期规划(分片存储)**
* 虽然目前数据量预计在十万级别,但为了后期扩展,我们将采用 **PostgreSQL 原生声明式分区Declarative Partitioning**
* 按照 `hotel_id` 进行 `LIST` 分区,方便后期根据酒店 ID 将数据分布到不同的物理存储或分表中。
4. **字段类型优化**
* `guid`: 使用 `uuid` 类型,存储空间更小且索引效率高。
* `ts_ms`: 使用 `timestamptz` (timestamp with time zone) 确保时区正确。
## 实施步骤
1. **创建初始化 SQL 文件**:在根目录下创建 `init_db.sql`
2. **编写 SQL 内容**
* 创建模式 `room_status`
* 定义 `room_status_moment` 主表,并配置分区规则。
* 创建索引以支持快速检索。
* 添加必要的注释以提高可维护性。
3. **验证脚本**:检查 SQL 语法是否符合 PostgreSQL 规范。
请确认以上计划,完成后我将直接生成 SQL 文件。