【思考点滴】
作者 : 杨考 微信号 :devin_cn_hd_09_16
做结算的,不做余额快照,那是不能的事情
仅将自己的实践分享出来,希望能帮到更多结算的工作人员和对结算感兴趣的人员
目标:用余额快照完成资金的无缝对接+财务报表秒级提取
按指定的时间段【日、月、年、或者任意时间段】、指定账户、指定子账户、指定城市、指定订单类型【业务】、指定交易类型统计相应的金额数据、交易频次、出入账金额。
1. 快照类比简介
似水流年,回忆过去,照片里有我们年轻的身影,照片可以帮我们找回曾经的记忆。
这里的照片就是当时的一个快照。
账户的余额是实时在变化,我们怎么制作账户余额的快照呢?
2. 业务、数据和需求
2.1 【业务】特征介绍
2.1.1 外卖商户端账户特征
2.1.2 账单
账单包含 : 账户,户名,交易日期,交易机器标号、交易类型、起始金额、发生金额、交易完成后金额 ...
2.2 【需求】对账关注维度
2.3 【紧急需求】实时的、隔日的、月度的余额随时导出
3. 设计
3.1 常见余额快照设计方案
3.2 余额快照准确性的践行之路
一步留神,初始设计就选择了方案1,指定时间对账户的余额直接进行SUM
3.3 余额快照制作思路
可以选择制作期初余额,或者期末余额
如下是以”期初余额制作”图示,相应的”期末余额制作”方法相似。
余额快照准确性校验,”T时刻期初余额”+”N秒内交易入账金额”-”N秒内交易出账金额”=“T+N时刻期初余额”
3.4 余额快照制作注意点
3.5 多维度信息存储-数据库动态字段扩展设计
3.5.1 基本信息【含账户、账期、子账户金额、城市 ...】
3.5.2 动态可扩展字段【一种格式化的json数据】
如上的detail_info字段,其中包含了最细的统计维度【trade_type交易类型、flow_type出入账类型】和基础数据【金额、交易笔数】
3.5.3 可扩展性说明
1、格式化的detail_info,以json方式存储,存储了交易类型金额、交易类型数量、当日总的出账金额、当日总的入账金额
2、为格式化的json提供了一套生成深层次信息的lib函数,同时也提供了一个将深层次json扁平化的lib函数。
例如上如上的 $detailInfo[‘trade_type’][29][‘amount’] 完成到 $detailList[‘trade_type_29_amount’] 的互转
3、统计维度可扩展
和trade_type, flow_type 并列的统计维度,直接加入一个类似的信息即可
属于 trade_type, flow_type 的上一级,即直接在将这几个维度再归类到不同的维度下,如加入订单类型维度,按订单类型,可以导出某种订单类型下的指定交易类型的数据
4. 发现的问题
4.1 T日期初余额和T-1日期末余额对不齐
4.2 账单中子账户类型错误
4.3 原始数据错误,金额更新有问题
4.4 余额更新没有按照实际的交易次序进行更新【先交易先更新余额的原则】
4.5 余额更新跨日,且更新延时严重
5.收益
5.1 通过余额快照数据准确性,发现了深层次的业务设计问题
5.2 余额快照的数据现在已经完全准确,余额快照的准确性已经成为结算的一张王牌。
5.3 余额快照统计的维度,更贴近于财务报表的维度,现在大部分的导数已经停用了,线上秒级完成定制的余额账务信息导出,比传统的财务报表导出快很多【N天】
5.4 余额快照可以对线上业务进行监控
如果觉得《mysql 备份数据库结账_用余额快照秒级导出实现财务报表》对你有帮助,请点赞、收藏,并留下你的观点哦!