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