首页 / 数据流转 / 核心数据模型与数据库演进

实体分组与存储边界

领域主要实体主存储原则
身份与组织用户、会话、角色、组织/家庭、权限、审计关系型业务库;敏感字段加密、访问留痕。
设备资产产品、设备、激活、绑定、分享、分组、影子、SIM关系型主事实 + Redis 在线/影子缓存;缓存不是归属事实。
位置与行程原始定位、清洗轨迹、停留点、地点、围栏、行程高频明细进入时序库/分区表;关系型库保存行程摘要、配置与索引。
规则与通知规则、条件/动作、告警、处理、通知任务、回执关系型事务事实;事件总线用于解耦投递和补偿。
商业与支持套餐、订阅、Seat、订单、支付、发票、工单、保修/理赔关系型库、强一致事务和可对账外部流水;不与遥测库混放。
文件与分析固件、诊断包、云媒体(若启用)、匿名事件、报表对象存储保存文件,列式/分析库保存聚合事件;业务库保存索引和授权关系。

演进路线

  1. 起步:按业务域建关系型库,明确主键、外键/逻辑关联、唯一约束、审计字段和删除语义;不要过早按服务复制主数据。
  2. 增长:将高频位置明细、日志和分析事件移出业务交易库;为时间范围、设备维度和状态查询建立分区/复合索引。
  3. 规模化:根据实际压力采用区域隔离、读写扩展、分库分表或时序集群;迁移前定义路由键、历史回填、双写/回读和回滚。
  4. 全球化:数据驻留、备份和删除策略按区域执行;跨区查询走聚合/匿名化路径,不以复制所有原始 PII 为默认方案。

建模、索引与迁移规则

  • ID 与时间:主键策略、业务唯一键、事件 ID、设备时间和接收时间必须分别定义;所有写路径保留幂等依据。
  • 索引:从真实查询出发设计复合索引(如设备 + 时间窗、状态 + 计划时间);避免为每个字段建立单列索引和在高频写入表上无限追加索引。
  • JSON:仅存演进快、非核心过滤字段;需要关联、约束、查询和审计的字段仍应结构化。JSON Schema/版本须可追溯。
  • 删除:业务可见性、法定留存、物理删除和不可逆匿名化是不同动作;删除任务要有范围、执行状态、失败重试和审计。
  • 迁移:每个迁移有唯一版本、前置检查、数据回填、索引创建方式、回滚/补偿、备份和性能验证。大表 DDL 需单独演练。
  • 备份恢复:按业务 RPO/RTO 明确全量、增量、跨区、恢复演练和密钥恢复;“有备份”不等于“可恢复”。

历史方案冲突

database/数据库设计任务.md 同时包含初期单库、分库分表和混合架构的规划,并出现多租户设计。其他架构/合规文档对数据区域和租户策略提出不同方向。因此这些内容应被视为方案集,不应混合生成当前 Schema。

决策项冻结前必须确认
租户模型是否真实存在多租户产品需求、隔离粒度、现有数据和权限模型;不能仅因历史表中有 tenant_id 就全链路强制注入。
时序明细数据量、查询窗口、区域、保留期、时序库与关系型摘要的双向关联策略。
时间字段统一存储精度、时区表达、设备时间/服务端接收时间及旧数据迁移策略。
数据库引擎当前线上引擎、连接池、迁移工具、备份能力和服务代码依赖;不能从文档标题推断已完成迁移。

来源:database/数据库设计任务.mdspecs/车载安防平台-完整需求文档*.mdsecurity/数据发片合规存储.md。存储全景见数据存储地图