多客户多承运商-运单状态数据结构设计

映射表方案

  • 映射表结构:

数据流演化推演:

最终数据结构:

 数据库相关:

业务分析:

  1. 客户A :
    1. 运单状态需求: 运单所有状态流程环节
  2. 客户B:
    1. 运单状态需求:客户B(含)之后的,运单所有状态流程环节。不包括客户A状态。
  3. 客户C:
    1. 运单状态需求:客户C(含)之后的,运单所有状态流程环节。不包括客户A状态。
  4. 平台:
    1. 运单状态需求: 运单所有状态流程环节。

客户只需关注自身也必须只能关注创建订单之后的运单状态流程环节数据。

  1. 平台
    1. 平台提供给客户C自身创建订单状态之前的(客户B与客户A)运单状态数据的是否合理?
      1. 信息隔离
      2. 数据安全
      3. 订单数据泄露
    2. 平台自身需求订单所有流程数据用于数据分析。
      1. 数据全部经过平台流转,必然需要有据可查(记录)
      2. 多客户与多承运商关系复杂,需要全流程管理。
  2. 客户
    1. 订单在交付自身之前状态与客户自身无关。

方案优点:

  1. 数据只留存一份,不会产生多份存储问题,减少数据库成本。
  2. 可同时提供 客户状态数据、全流程数据查询功能。
  3. 数据库选型可轻易组合,如 MongoDB+ES、MongoDB+Hbase、MongoDB+Mysql 等。
    1. 数据关系映射通过 MongoDB保持。
    2. 其他数据库提供数据写入与查询。
  4. 拓展性强
    1. 不会存在较高性能瓶颈
      1. 映射表数据结构简洁,索引与内存利用率高。MongoDB数据库该结构几乎都在内存中。
    2. 其他数据库只做写入,与查询。不存在更新。

原文地址:https://www.cnblogs.com/atliwen/p/14473018.html