## 任务概览 根据 [.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 文件。