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

增量统计系统设计

作者: 三余无梦_ | 来源:发表于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、资金流水类型、统计日期范围(可选择合计或不合计),统计总资金流水、总冻结资金流水,总流水次数

相关文章

  • 增量统计系统设计

    统计系统 标签(空格分隔):NNK商户开放平台 目录 1.统计系统设计 1.1 模块功能图 1.2 统计数据模型(...

  • 4.千万日活的系统如何统计UV?

    HyperLogLog 假设有个千万日活的统计系统,需要统计系统每天的UV。如果是你的话你该怎么设计? 如果统计 ...

  • Elasticsearch数据分析二三事

    Elasticsearch,最初的设计是分布式搜索引擎。由于可以支持对海量数据的快速地进行筛选和统计,再加上可增量...

  • 8月23日 星期二

    工作日志 所收任务 尝试设计“水污染行动调度系统_统计分析”功能设计 完成情况 基本完成 “统计分析”功能设计 存...

  • 增量模型

    3.1什么是增量模型 增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集...

  • 基于C++实现的运动会统分系统

    一、需求分析 本系统主要是运动会分数统计方案设计。运动会分数统计方案适合采用结构体数组,为了实现系统功能,主要应实...

  • 工具产品初期统计系统设计

    统计模块是工具性2B系统的核心模块之一,它可以帮助用户快速的从“传统工作模式——收集—>整理—>分析—>总结”直接...

  • 秒杀系统设计——数据统计

    活动做完了,数据该怎么统计? 1. 前端埋点,在前端做一些设置可以帮助统计 2. 数据⼤盘,通过后台服务的打点配合...

  • GeekBand C++系统设计与实践 第一周

    1.系统设计介绍 2.系统设计七剑客 同步 网络 数据库 分布式 性能 估算 面向对象 案例社交网站信息流日志统计...

  • 投注策略与3种超盘

    先说下两种投注策略: 达朗贝尔系统,黑+单位增量,红-单位增量进行投注(适合命中率55%以上,较稳健) 帕罗利系统...

网友评论

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

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