1背景公司物料种类繁多,存货种类不同,价值管理也不同。库存系统目前主要对接包装耗材和商品数据。目的是:管理进出库价格、数量、库龄等业务数据,便于管理部门追溯和财务控制,协助仓库提高库存和物料管理能力。管理仓库物资和商品的成本价值,提高核算和业务效率,实现业务信息集成和凭证自动化。协助计划或采购部门盘点库存,为采购计划提供数据支持。库存系统首先访问包装耗材数据。这类数据的特点是数据的行数不多,但每行的个数很大。接入商品库存后,由于行数据量增加了N倍以上,而且随着业务的不断增长,数据量越来越大,考虑到原来的底层设计不能很好地支持这么大的数据量数据量,有这一次升级了系统的型号。2面临的问题2.1数据中转点问题原业务流程在数据中转中跨越了核心P0环节,才实现数据到库存应用(造成一定的技术风险,历史上确实存在技术故障,消费有上游报文代码bug,导致P0清结算链路数据阻塞,影响部分结算单据处理时间:(1)单据系统存入数据(2)关联订单数据(3)未税单价(4)组装后,库存重构前设计下达,成本表存储逻辑:无论成本价每天是否变化,都会维护一条记录;账表的存储逻辑:如果每天都有数据出入库,则按业务类型汇总+起止数据2条,如果没有出入库数据,则只有2条开始和结束数据将被保存。从存储逻辑不难看出,存储了很多冗余数据,将账表的首尾数据以行的形式存储是不合理的。以下为示例数据2.2.1每日入库、调价明细表(记录)数据2.2.2成本表(cost_price)所有物料每天需要计算一个成本价2.2.3账本表(ledger)每日账本:Summarizethedetaileddataoftheday,以及期初期末价格和数量月账:汇总当月的明细数据,以及期初期末价格和数量分析显示,接入后仓库商品数据,页面查询界面耗时较长,界面性能存在问题。2.3.2日/月发票也面临同样的问题。文件池登陆信息表3.1.2具体实现过程3.2优化数据存储设计问题3.2.1简单示例例如某物料,3月1日的成本价为100元,然后3月30日的成本价为另一件是200元人民币同款素材,我们仓库的记录信息如下,2条数据就够了,【不用每天更新数据,只在当前素材有入库和价格的情况下更新】当日调整数据,需插入当天最新数据],实际场景,业务代码查询3月10日成本价时,可向前查询03.01的数据。3.2.2预期的数据存储方式不是30条数据(从03.02到03.29,这28条数据是冗余数据)3.2.3页面数据查询性能瓶颈解决方案由于数据存储逻辑改变,只有改??变的数据才会存储起来,无论数据是否发生变化,每天都需要生成进销存报表。结合目前的业务逻辑和数据量,最终决定将数据同步到数据仓库。数据仓库完成数据后,通过报表平台拉取报表信息。数据同步过程如下:报表平台具备生成类似Excel的数据展示和任意维度查询信息的能力,同时具备Excel导出功能4重构后的价值4.1量化商业价值:约30小时的核算和审核时间每个月都节省下来,占会计团队每月结账总时间的30%。4.2不可量化的商业价值将仓库业务纳入库存系统,海量数据通过系统自动计算,并输出表格,节省人工计算时间,提高核算数据的准确性,解决无法核算的困境通过形式实现;在提高会计质量的同时,可以完成更多的存货和销售数据分析,如周转率分析、入库渠道分析、减值准备等。分析结果改进了公司退货管理和库存管理。对基础数据、存储模型、调价单、成本计算、发货模型、重计算、报表进行了功能重构,在数据接收和成本计算过程中增加了检查逻辑和修复数据的功能。4.3技术价值(1)技术价值:首次尝试了线上TIDB切换流程(包括数据复制、数据同步、数据比对、数据切换),积累了TIDB切换经验,为后续TIDB迁移提供了经验积累项目。(2)技术价值:将P0级清结算应用中的部分功能迁移到库存应用,解决大流量仓库数据被下载到清结算应用的风险,实现交易与非交易的解决。应用程序级别的事务耦合和隔离。(3)团队价值:通过比赛锻炼。通过本次项目,团队成员得到了数据仓库平台和报表平台实践和使用的培训,拓宽了团队的整体技术栈,积累了相应的数据开发经验。提供数据仓库平台和报表平台的操作使用文档(节省后续团队成员数据开发熟悉和访问的成本)。
