首页 / 数据流转 / 核心数据模型与数据库演进
核心数据模型与数据库演进
业务实体分组、冷热数据边界、索引与分区、迁移版本、备份恢复及历史方案冲突处理。
本页目录
实体分组与存储边界
| 领域 | 主要实体 | 主存储原则 |
|---|---|---|
| 身份与组织 | 用户、会话、角色、组织/家庭、权限、审计 | 关系型业务库;敏感字段加密、访问留痕。 |
| 设备资产 | 产品、设备、激活、绑定、分享、分组、影子、SIM | 关系型主事实 + Redis 在线/影子缓存;缓存不是归属事实。 |
| 位置与行程 | 原始定位、清洗轨迹、停留点、地点、围栏、行程 | 高频明细进入时序库/分区表;关系型库保存行程摘要、配置与索引。 |
| 规则与通知 | 规则、条件/动作、告警、处理、通知任务、回执 | 关系型事务事实;事件总线用于解耦投递和补偿。 |
| 商业与支持 | 套餐、订阅、Seat、订单、支付、发票、工单、保修/理赔 | 关系型库、强一致事务和可对账外部流水;不与遥测库混放。 |
| 文件与分析 | 固件、诊断包、云媒体(若启用)、匿名事件、报表 | 对象存储保存文件,列式/分析库保存聚合事件;业务库保存索引和授权关系。 |
演进路线
- 起步:按业务域建关系型库,明确主键、外键/逻辑关联、唯一约束、审计字段和删除语义;不要过早按服务复制主数据。
- 增长:将高频位置明细、日志和分析事件移出业务交易库;为时间范围、设备维度和状态查询建立分区/复合索引。
- 规模化:根据实际压力采用区域隔离、读写扩展、分库分表或时序集群;迁移前定义路由键、历史回填、双写/回读和回滚。
- 全球化:数据驻留、备份和删除策略按区域执行;跨区查询走聚合/匿名化路径,不以复制所有原始 PII 为默认方案。
建模、索引与迁移规则
- ID 与时间:主键策略、业务唯一键、事件 ID、设备时间和接收时间必须分别定义;所有写路径保留幂等依据。
- 索引:从真实查询出发设计复合索引(如设备 + 时间窗、状态 + 计划时间);避免为每个字段建立单列索引和在高频写入表上无限追加索引。
- JSON:仅存演进快、非核心过滤字段;需要关联、约束、查询和审计的字段仍应结构化。JSON Schema/版本须可追溯。
- 删除:业务可见性、法定留存、物理删除和不可逆匿名化是不同动作;删除任务要有范围、执行状态、失败重试和审计。
- 迁移:每个迁移有唯一版本、前置检查、数据回填、索引创建方式、回滚/补偿、备份和性能验证。大表 DDL 需单独演练。
- 备份恢复:按业务 RPO/RTO 明确全量、增量、跨区、恢复演练和密钥恢复;“有备份”不等于“可恢复”。
历史方案冲突
database/数据库设计任务.md 同时包含初期单库、分库分表和混合架构的规划,并出现多租户设计。其他架构/合规文档对数据区域和租户策略提出不同方向。因此这些内容应被视为方案集,不应混合生成当前 Schema。
| 决策项 | 冻结前必须确认 |
|---|---|
| 租户模型 | 是否真实存在多租户产品需求、隔离粒度、现有数据和权限模型;不能仅因历史表中有 tenant_id 就全链路强制注入。 |
| 时序明细 | 数据量、查询窗口、区域、保留期、时序库与关系型摘要的双向关联策略。 |
| 时间字段 | 统一存储精度、时区表达、设备时间/服务端接收时间及旧数据迁移策略。 |
| 数据库引擎 | 当前线上引擎、连接池、迁移工具、备份能力和服务代码依赖;不能从文档标题推断已完成迁移。 |
来源:database/数据库设计任务.md、specs/车载安防平台-完整需求文档*.md、security/数据发片合规存储.md。存储全景见数据存储地图。