转:对账

2023-12-20 23:58
文章标签 对账

本文主要是介绍转:对账,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、目前对账的算法:

1、从上游渠道(银行、银联等金融机构)获取对账文件,程序逐行解析入库

2、在存储过程中,以上游对账文件的表为基准,程序逐行读取并与我们系统的交易记录/账务记录(有账务系统情况下,合理方案应该是于账务记录)对比,查找出差异记录。

3、以我们系统的交易记录/账务记录为基准,程序逐行读取与上游对账文件对比,查找出差异记录

二、目前对账算法问题:

1、使用存储过程,对账过程都在数据库端完成,对数据库性能影响较大,而且对账逻辑扩展极为麻烦

2、逐行比对算法效率较低,但算法上并无好的优化余地。如果采用数据库INTERSECT、MINUS对数据库压力也高。

3、在业务量大的情况下(例如有上百家上游渠道需要对,每一家都有几十万条交易记录),对账服务器及数据库服务器负荷较高。即便采用读写分离,对账时候使用读库,压力一样很大。

4、导入批量文件,逐行入库效率较为低下(每一次都需要建立网络连接、关闭连接)

三、对账算法优化思路:

1、涉及网络传输的,尽量采用批量方式操作,减少网络消耗及时间消耗

2、使用Redis等NOSQL数据库,降低数据库服务器的压力。同时在扩展上也容易,一台Redis服务器不够,可以无限制增加用于对账用的服务器。

3、使用Redis的set集合的sdiff功能,利用Redis sdiff算法的高性能,比对上游记录和我方记录的差异

四、对账算法说明:

1、利用Oracle/Mysql的load data infile将对账文件批量导入到数据库

2、程序读取上游账务记录表,对上游账户记录执行select  concat(channel_id, “:” , order_id , “:” , HASH_MD5(channel_id , order_id , amount , status , timestamp1 , timestamp2 ,…) )  as hashid from table ,得到对应的SET集合。

这里思路是将需要对账的记录拼成格式为:channel_id:order_id:hashid形式的串,以便作为Redis SET集合的item。

其中channel_id和order_id用于标识对应的渠道及订单,只是例子,根据实际需要补充。之所以要在hashid前面带上channel_id和order_id,主要目的是在sdiff后,能够作为主键,根据set结合的item查找出对应的数据库记录。

3、对我方的交易记录表/账户历史表采用上一步的类似算法,得到对应的SET结合

4、采用Redis的pipeline功能(Redis的各种客户端,包括java客户端jedis 都提供此功能),将上游账务记录SET集合和我方的交易记录/账务历史记录SET集分别批量执行sadd插入Redis,得到两个SET集合。

由于单条记录sadd 插入Redis效率较差(每一次都涉及网络open、close、传输消耗),因此使用Redis的pipeline功能,已实现批量入库功能。

可以参考: http://redis.io/topics/mass-insert

5、利用redis的sdiff功能查找出上游账务集合与我方记录集合的差值

6、从sdiff 集合中channel_id:order_id:hash,定位对应的数据库记录,更新对账状态。

具体性能及实现可以在实现后测试对比一下,应该会有大幅的性能提升。

--------------------- 本文来自 skiof007 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/skiof007/article/details/51909615?utm_source=copy

这篇关于转:对账的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517988

相关文章

【Flink】双流处理:实时对账实现

Flink双流处理:实时对账实现 一、基础概念二、双流处理的方法ConnectUnionJoin 三、实战:实时对账实现需求描述需求分析代码实现 相关阅读 更多内容详见:https://github.com/pierre94/flink-notes 一、基础概念 主要是两种处理模式: Connect/JoinUnion 二、双流处理的方法 Connect DataStr

YonSuite银账通,助力企业618更快对账

随着618年中大促的临近,各大电商平台和实体企业都迎来了业务的高峰期。然而,随之而来的订单激增、资金流动加快也给企业的财务管理带来了不小的挑战。其中,银行回单及银企对账的管理更是成为了许多企业关注的焦点。YonSuite银账通帮助成长型企业高效解决这些难题,为企业提供更为便捷、智能的对账解决方案。 成长型企业银行回单 及银企对账的管理难点 1  数据量大,处理效率低 在618等大促

支付系统的对账处理

可以说,对账是支付系统最头疼的事情。每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。 对电商系统来说,每一笔交易,在所有相关主体侧都要能对得上: 交易主体,如果发起人是个人,必须能够从个人交易历史记录中找到这笔交易。但大部分人不会保留电子记录,所以一般是提供可以下载的账单或交易记录,让用户

对接浦发银行支付(八)-- 对账接口

一、背景 本文不是要讲述支付服务的对账模块具体怎么做,仅是介绍如何对接浦发银行的对账接口。 也就是说,本文限读取到对账文件的内容,不会进一步去讲述如何与支付平台进行对账。 如果要获取商户的对账单,需要遵循以下步骤,涉及到浦发银行的两个接口。 对公收单API对账单下载公共文件下载 二、对接流程 三、浦发银行开放平台 上文说到,要想获取对账文件内容,需要对接两个接口。所以,你需要在

RPA-财务对账邮件应用自动化(客户对账机器人)

《财务对账邮件应用自动化》,将会使用邮箱的SMTP服务,小北把资源包绑定在这篇博客了 Uibot (RPA设计软件)———机器人的小项目友友们可以参考小北的课前材料五博客~  (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~) 紧接着小北的前两篇博客,友友们我们即将开展新课的学习~ RPA 培训前期准备指南——安装Uibot(RPA设计软件)-CSDN博客https:/

百度交易中台之系统对账篇

作者 | 天空 导读 introduction 百度交易中台作为集团移动生态战略的基础设施,面向收银交易与清分结算场景,赋能业务、提供高效交易生态搭建。目前支持百度体系内多个产品线,主要包括:度小店、小程序、地图打车、文心一言等。本文主要介绍了百度交易中台的交易链路系统数据一致性的对账系统,主要从准实时对账和大数据离线对账两个方向进行介绍。 01 前言 交易中台为百度小程序、百度地

固定资产与总账对账,业务系统出不来数据?

1、【财务会计】-【固定资产】-【与总账对账】 2、【财务会计】-【总账】-【对账执行】 以上两个节点都可以进行 “固定资产与总账” 对账执行 操作。 问题: 固定资产与总账对账,业务系统出不来数据?如下图 : 原因: 固定资产对账要确保,对账月是最早对账月才行,即检查该月固定资产是否结账,要取最小未结账月的数据。也就是说如果你的固定资产最小结账月是1月,但是1月已结账导致实际最小结

对账中心系统架构设计与实现的实践总结

随着数字化时代的到来,越来越多的企业开始使用对账中心系统来管理其财务交易。对于一个成功的对账中心系统,其架构设计和实现非常关键。本文将探讨对账中心系统架构设计与实现的重要性、关键原则和实施过程中需要考虑的要点,帮助企业构建强大的对账中心系统,提高财务管理效率和效果。 ### 1. 对账中心系统架构设计的重要性 对账中心系统作为企业财务管理的核心工具,其架构设计直接影响了企业财务交易的效率和

Java 支付宝对账功能(查询+文件下载+解压+遍历文件+读文件)

Java 支付宝对账功能(查询+文件下载+解压+遍历文件+读文件) **需求****流程**1 、调用支付宝接口, 获取zip 下载地址2、工具类代码3、目录4、开发环境5、更新实际收益到本地数据库查询C#实现支付宝对账 需求 定时任务:每天统计昨天的公司支付宝账户实际收益(扣除手续费)。 流程 1 、调用支付宝接口, 获取zip 下载地址 package com.

微信支付服务端自动对账

微信支付服务端自动对账 支付及对账流程链接 自动对账说明 微信支付后每天的商户系统的自动对账还是比较繁琐的,所谓自动对账实际上就是将商户某天交易成功的订单信息与微信某天的账单进行逐一匹配的过程。其涉及到三个专业名词短款、长款和金额不一致,以下对其进行解释: **短款:**平台资金流有,而支付公司没有的差异,可能是因为支付公司日切早于平台的账务,一旦出现,会出现短款的现象,银行日切导致段差异,