交易对账功能设计思路:
通常数据是以文件方式提供给对账系统,不太建议通过接口,或者kafka等异步队列接收,不可靠
步骤数据解析,数据文件读取需要注意
关键字段提取,数据库表设计必须要包含关键对账字段。
数据分区,尽量避免对所有数据进行一次行对账,应该在数据读取时就按照统一规则将数据进行分区,
特殊数据处理,关键对账字段缺失的数据一般需要按照业务功能要求另行处理。
步骤对账数据预处理
将数据分类:
能严格对账的对账数据,
例两个文件的数据按照唯一流水号对账,由于流水号有唯一性,条件设置简单,在进行此条件对账时
建议增加冗余条件对账,比如增加卡号,金额等字段,关键字段数据拼成字符串,置于集合中对账备用
不能严格对账的对账数据
例两个文件的数据按照交易日期,卡号,金额,该中条件数据常常因为数据关键字相同,导致存在多对多的情况,此种数据可以直接入库
步骤对账
严格条件对账的集合数据存放,可以存放在内存,也可以放在redis,或者是其他可以提供集合运算的中间件内,建议存放在redis中
涉及对账的集合运算基本上就是差集为单边,交集为平账,需要注意单边方向。
非严格条件对账对账时
可以按照比较简单的思路,查出数据后一条一条对账,并更新结果,
也可以在步骤一入库时直接做好标记,关键字段相同的数据在入库完成后,统计并增加序列号。使用类似于严格对账条件的方法。
步骤结果导出
严格条件对账在对账结束后将,平账结果,单边结果更新到数据,对于对账系统,一般来说,平账的数据业务意义不大。
碰到大交易量数据对账,通常是两种对账思路结合起来,在数据入库是按照流水号,或者其他字段将交易均匀分布切片,然后进行严格条件对账,尽量减少非严格条件对账的数据。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点