| name | data-architecture-spec |
| description | 当需要设计数据架构时使用。数据架构设计规范产出,从PRD和API契约自动设计业务数据字典、ER模型、表结构、索引策略、缓存方案和数据迁移方案。内建业务数据字典提取确保数据标准统一。产出经人类审查后,交由data-architecture-impl生成代码。关键词:数据模型、ER图、表结构、索引、缓存策略、数据迁移、数据字典、建表、数据库设计。 |
| metadata | {"module":"后端架构与开发","sub-module":"数据架构","type":"pipeline","version":"4.0","domain_tags":["电商","金融","SaaS","通用"],"trigger_examples":["设计数据库表","建表和索引","系统响应慢怎么加缓存","Redis缓存怎么设计","改表结构","数据库升级"],"interaction_mode":"ai_suggest_human_approve"} |
数据架构设计规范
核心原则
- 业务数据标准先行:从PRD提取业务数据字典,确保数据定义统一
- 范式与反范式平衡:写密集场景遵循3NF,读密集场景适度反范式
- 缓存有据:每个缓存项有明确的命中率目标和失效策略
- 迁移可回滚:每个迁移必须有对应的回滚脚本
交互模式
🤖→👤 AI建议人类审批
输入
| 输入项 | 类型 | 必填 | 来源 | 说明 |
|---|
| PRD | markdown | 是 | output/pm-design/design-prd/prd.md | 业务实体和关系需求 |
| PRD结构化数据 | JSON | 是 | output/pm-design/design-prd/prd.json | PRD机器可消费版本,包含entities[]/features[],供数据模型设计编程式消费 |
| API契约 | YAML/JSON | 是 | output/backend-api-design/api-design-spec/openapi.yaml | 接口数据结构定义 |
| database_type | string | 是 | 用户提供 | 数据库类型(PostgreSQL/MySQL/MongoDB/SQLite) |
| 数据量预估 | JSON | ○ | 用户提供 | 核心表数据量级和增长速度 |
| 并发量预估 | JSON | ○ | 用户提供 | QPS/TPS峰值和均值 |
| 当前Schema | SQL/JSON | ○ | 用户提供 | 现有数据库表结构(增量项目必填) |
执行步骤
Step 1: 业务数据字典提取
从PRD中提取业务数据实体定义,建立产品数据标准:
- 识别核心业务实体和属性
- 定义数据类型、约束和业务规则
- 建立实体间关系和引用完整性
- 生成业务数据字典(供下游消费)
阶段卡口:核心业务实体100%有数据字典定义
Step 2: 实体识别与关系建模
从PRD、API契约和数据字典中提取数据实体:
- 识别核心业务实体(名词提取)
- 确定实体间关系(1:1 / 1:N / N:M)
- 标注关系的基数和可选性
- 生成ER图
关系映射规则:
- 1:1 → 主表加外键 + UNIQUE约束
- 1:N → 子表加外键
- N:M → 创建关联表
Step 3: 表结构与索引设计
为每个实体设计表结构(主键、外键、时间戳、软删除、状态字段等通用字段规范),设计索引策略和分库分表方案。
阶段卡口:ER图+DDL+数据字典完整
Step 4: 缓存策略设计
识别需要缓存的数据访问模式,设计多级缓存架构、一致性策略和穿透/击穿/雪崩防护。
阶段卡口:穿透/击穿/雪崩防护全覆盖
Step 5: 数据迁移方案
对比当前Schema和目标Schema,生成迁移脚本+回滚脚本+校验方案。新项目跳过此步骤。
阶段卡口:100%变更有回滚脚本,数据模型人类已确认
输出
元数据输出:output/backend-data-architecture/data-architecture-spec/
输出文件:
- data_dictionary.json — 业务数据字典
- er_model.json — ER模型+DDL+索引策略
- cache_strategy.json — 缓存方案
- migration_plan.json — 迁移方案(增量项目)
- data-coverage.json — API对齐覆盖报告
决策规则
| 条件 | 决策 |
|---|
| 写密集场景 | 遵循3NF |
| 读密集场景 | 适度反范式 |
| 读写比>10:1 | 高缓存价值 |
| 热点数据 | 多级缓存+预热 |
| 大表迁移 | 在线DDL或双写策略 |
| 多租户+租户数>100 | 共享数据库+tenant_id |
质量检查
降级策略
| 缺失的上游输入 | 降级方案 | 输出影响 |
|---|
| API契约缺失 | 从PRD推导数据结构 | 数据模型可能不完整 |
| PRD缺失 | 无法设计数据架构 | 输出为空 |
| 当前Schema缺失 | 仅设计新表结构,不生成迁移脚本 | 无迁移方案 |
| 并发量预估缺失 | 按中等并发设计缓存 | 缓存方案可能不足或过度 |
| database_type未指定 | 默认PostgreSQL | SQL方言可能不兼容 |
上游变更响应
| 上游变更 | 影响范围 | 响应策略 |
|---|
| PRD实体增删 | 数据模型+数据字典 | 标注受影响的实体,生成变更清单 |
| API契约变更 | 表结构和索引 | 标注受影响的字段,评估迁移需求 |