美文网首页
增量统计系统设计

增量统计系统设计

作者: 三余无梦_ | 来源:发表于2016-11-15 16:49 被阅读335次

    统计系统

    标签(空格分隔):NNK商户开放平台


    目录

    • 1.统计系统设计
    • 1.1 模块功能图
    • 1.2 统计数据模型(订单状态变动模型)
    • 2.数据库设计
    • 2.1 统计模块(statistics.sql)
    • 3.模块接口设计
    • 3.1 统计任务管理
    • 3.2 交易统计
    • 3.4 上游统计
    • 3.5 资金统计

    1. 统计系统设计

    1.1 模块功能图

    系统模块.png

    1.2 统计数据模型(订单状态变动模型)

    状态变动图.png
    统计日期 变动状态 数量
    2016-01-01 订单不存在 0
    2016-01-02 1.NULL->3.中间状态 1
    2016-01-03 3.中间状态->5.中间状态 1
    2016-01-04 5.中间状态->6.当前状态 1

    【1.NULL】:订单未创建之前的状态描述
    【2.初始状态】:刚创建时的订单状态,此状态为固定状态,可看作是逻辑状态,以订单表-创建时间为操作时间;
    【3.4.5.中间状态】:中间变化的订单状态,记录在订单快照表上,以快照表-订单更新时间为操作时间,快照记录的情况有:后台修改已完成订单的状态时会记录、统计到处于处理中的订单会被记录,中间状态不一定存在;
    【6.当前状态】:订单表当前的记录状态,以订单表-更新时间为操作时间
    说明:以上表示一笔订单的状态变化流程,下面利用【订单状态变动模型】模拟一笔订单统计的结果

    统计日期 变动状态 数量
    2016-01-01 订单不存在 0
    2016-01-02 1.NULL->3.中间状态 1
    2016-01-03 3.中间状态->5.中间状态 1
    2016-01-04 5.中间状态->6.当前状态 1

    2. 数据库设计

    2.1 统计模块(statistics.sql)

    1. 统计数据项表:ecsys_statistics_itemInfo
    2. 交易统计维度表:ecsys_statistics_tradeDimensionInfo
    3. 交易统计快照表:ecsys_statistics_tradeSnapshotInfo
      说明:统计时记录未处理完成的订单,业务系统针对处理完成订单修改时记录快照

    针对交易订单表:更新任何字段都需要更新updateTime,针对已处理完成的订单更新时需记录快照

    1. 上游统计维度表:ecsys_statistics_externDimensionInfo
    2. 上游统计快照表:ecsys_statistics_externSnapshotInfo
    3. 资金统计表:ecsys_statistics_balanceInfo
    4. 对账单记录表:ecsys_statistics_StatementInfo

    3. 模块接口设计

    3.1 统计任务管理

    1. 执行统计任务
      说明:可调用此接口执行统计任务,如交易统计,上游统计,资金统计等,可指定一些通用的任务参数,如统计时段,数据查询频率时长等。
      交易统计流程
      【环节1-统计时段内创建的订单】
      (1)以ecsys_tradeOrder_orderInfo.nnkOrderCreateTime为条件查询时段内订单,进入步骤-2
      (2)判断ecsys_tradeOrder_orderInfo.updateTime是否在时段内
      如果是,则进入【环节4:建立订单状态变动模型】
      如果否,则进入步骤-3
      (3)根据ecsys_tradeOrder_orderInfo.nnkOrderId查询ecsys_statistics_tradeSnapshotInfo快照记录,得到交易订单和快照记录集合,进入【环节4:建立订单状态变动模型】


      【环节2-统计时段内ecsys_tradeOrder_orderInfo变动的订单】
      (1)在ecsys_tradeOrder_orderInfo中,查询条件:updateTime在时段内,nnkOrderCreateTime不在时段内的订单,进步步骤-2
      (2)根据ecsys_tradeOrder_orderInfo.nnkOrderId查询ecsys_statistics_tradeSnapshotInfo快照记录,得到交易订单和快照记录集合,进入【环节4:建立订单状态变动模型】
      (3)把nnkOrderId记录缓存标记已处理


      【环节3-统计时段内ecsys_statistics_tradeSnapshotInfo变动的订单】
      (1)在ecsys_statistics_tradeSnapshotInfo中,查询条件:snapshotCreateTime在时段内,nnkOrderCreateTime不在时段内的快照订单,进入步骤-2
      (2)根据【环节2-3缓存】查询订单是否已处理,
      如果已处理,则结束
      如果未处理,则进入步骤-3
      (3)根据nnkOrderId在ecsys_statistics_tradeSnapshotInfo中查询其他快照记录,在ecsys_tradeOrder_orderInfo中查询交易记录,得到交易订单和其快照记录集合,进入【环节4:建立订单状态变动模型】
      (4)把nnkOrderId记录缓存标记已处理


      【环节4-建立订单状态变动模型】
      (1)根据接受交易订单或快照记录建立【订单状态变动模型】,进入步骤-2
      (2)根据【订单状态变动模型】得到时段内最初的记录,取时段之前最近的记录,如果不存在则取NULL,进入步骤-3
      (3)根据【订单状态变动模型】得到时段内最后的记录,取时段内最后一条记录,如果不存在则取NULL,进入步骤-4
      (4)根据以上处理得到了时段内,最初以及最后的记录,判断最初与最后记录状态不同相同 且 最后记录不为NULL
      如果条件成立,则按【统计条件】分类统计:【最初记录状态-> 最后记录状态 +1】,并把统计结果记录缓存,进入步骤-5
      如果条件不成立,则进入步骤-5
      (5)判断订单是否处理完成,如果未处理完成,则记录到ecsys_statistics_tradeSnapshotInfo快照表中


      【环节5-统计最后处理】
      (1)把缓存内的统计结果,存储到交易统计维度表(ecsys_statistics_tradeDimensionInfo)与统计数据项表(ecsys_statistics_itemInfo),如果交易统计维度表存在对应的【统计条件】记录则使用现有的,如不存在则新增;


      上游统计流程:同【交易统计】流程类似
      资金统计流程:根据任务条件:(统计时段、数据查询频率时长),在资金流水表(ecsys_account_balanceSubLog),按统计条件(交易日期、账户ID、渠道ID、资金流水类型)分类统计变化的资金,变化冻结的资金,然后把统计结果存储到资金统计表(ecsys_statistics_balanceInfo)上
    2. 取消统计任务
      说明:可调用此接口取消正在执行的统计任务,需要调用正在执行此任务的APP的接口(调用执行统计任务的时候需要记录APP_ID),并指明统计任务ID。

    3.2 交易统计

    1. 查询交易统计记录
      说明:
      根据统计条件:渠道ID、业务类型、产品类型、产品单位数量、产品供应商、产品省份、产品区号、统计日期范围(可选择合计或不合计)
      得到统计结果数据:(接单订单统计项、成功订单统计项、部分成功订单统计项、超额成功订单统计项、失败订单统计项、待定订单统计项),其中每个统计项都包括:(订单笔数总计、产品单位数量总计、已支付金额总计)。

    流程:
    (1)交易统计维度表(ecsys_statistics_tradeDimensionInfo)与统计数据项表(ecsys_statistics_itemInfo)连表查询,根据【统计条件】查询出对应记录,由于可能查询的记录数很多,所以请考虑分段查询;
    (2)根据以上统计记录,计算每笔统计记录的【统计结果数据】,此处需判断订单是否接单成功,是否处理成功等,请按【交易统计维度表】的原始状态和当前状态来判断,其中根据原始状态得到的【统计结果数据】为负数(状态为NULL不计入),根据当前状态得到的【统计结果数据】为正数,两者都需要判断统计;
    (3)根据以上得到的【统计结果数据】,按【统计条件】再分类统计,得到最终统计结果后返回。

    1. 查询交易快照记录

    3.3 上游统计

    1. 查询上游统计记录
      说明:同【查询交易统计记录】流程类似
    2. 查询上游快照记录

    3.4 资金统计

    1. 查询资金统计记录
      说明:在资金统计表(ecsys_statistics_balanceInfo)中,根据查询条件:账户ID、渠道ID、资金流水类型、统计日期范围(可选择合计或不合计),统计总资金流水、总冻结资金流水,总流水次数

    相关文章

      网友评论

          本文标题:增量统计系统设计

          本文链接:https://www.haomeiwen.com/subject/glhlpttx.html