一种数据存储方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:27975380 阅读:16 留言:0更新日期:2021-04-06 14:09
本发明专利技术公开一种数据存储方法、装置、计算机设备及存储介质,每日接收上游系统推送的数据,若为业务数据时,将业务数据按照指定格式存储至业务源表中,并生成备份表,若为业务数据修改记录时,依据修改记录更新对应的业务源表数据与备份表;同时备份所述触发数据对应的业务数据表快照并写入至对应日期的历史切片表;若判断历史切片表的数据错误时,则从备份表里抽取指定的数据填充到对应日期的历史切片表中以形成新的每日历史切片表,可有效的满足数据存储以及重跑历史某天报文的业务需求。

【技术实现步骤摘要】
一种数据存储方法、装置、计算机设备及存储介质
本专利技术属于数据处理领域,尤其涉及一种数据存储方法、装置、计算机设备及存储介质。
技术介绍
消费金融征信上报系统(CF-CRS)需要支持按指定日期精确还原历史征信数据的功能,以应对系统在正式接入人行前的多轮全量报文验证及正式上线后的重跑历史某天报文的业务需求。CF-CRS设计了一套业务数据表,与各上游系统(CF-CORE、AMS、CIS等)的相应业务表结构一致,上游系统通过Kafka实时推送业务表的变化情况,CF-CRS消费Kafka消息并更新对应的业务数据表。由于各业务数据表保存的都是最新态的业务数据,无法支持查看历史某日当天的快照数据,所以在重跑历史报文时,无法基于历史当日的快照数据精确还原当时的征信报文,对业务产生影响。
技术实现思路
本专利技术的目的是提供一种数据存储方法,以解决现有技术存在的问题。为实现上述目的,本专利技术提供一种数据存储方法,包括如下步骤:S1接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;S2将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;S3依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;S4备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表;S5当收到重跑报文指令时,依据所述历史切片表重跑报文;S6若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。优选的,所述备份表格式包括所述业务源表的全部字段,所述历史切片表格式与所述业务源表格式相同设计;优选的,所述步骤S3中,若所述推送数据为业务数据修改记录时,以业务日期和id_key的组合为唯一键,对推送所述业务数据修改记录进行CRUD操作(CRUD是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写),以更新所述备份表,其中不同用户的id_key不同且唯一设置。优选的,所述步骤S3中,所述备份表包括insert_date(插入日期)字段和op_type(操作类型)字段,所述insert_date字段记载业务日期,所述op_type字段包括“新增”和“更新”以及“删除”三种类型的操作,所述CRUD操作包括:若判断所述op_type字段为“新增”或“更新”时,以业务日期和id_key为唯一键查找所述备份表,若所述备份表无相应记录则往所述备份表中插入一条新的记录;若所述备份表已存在相应记录,则更新原有记录;若判断所述op_type字段为“删除”时,以业务日期和id_key为唯一键查找所述备份表并删除指定的记录。优选的,所述步骤S5中,所述重跑报文包括:(a)设置待操作业务源数据线程的上下文信息,所述上下文信息记载待处理的业务日期信息;(b)判断切片开关是否开启:若切片开关关闭,则不执行任何替换,若切片开关开启,转入步骤(c);(c)根据当前线程的上下文信息将业务表名替换为当前线程处理的业务日期对应的历史切片表;(d)执行替换后历史切片表中的SQL语句:若所述SQL语句无法执行,则重新恢复历史切片表后,转入步骤(c);若判断处理完毕后,清除上下文信息。进一步的,步骤(a)中,使用ThreadLocal(线程变量)存储线程上下文信息。和/或,步骤(d)中,经由JDBC(Java数据库连接,JavaDatabaseConnectivity)驱动执行替换后的SQL。优选的,所述步骤S6中,重新恢复所述历史切片表包括:从所述备份表取出insert_date不大于指定日期的记录;根据id_key对所述记录进行分组,且每个所述分组内按insert_date降序排列;选取每个所述分组的第一条数据进行组合以形成指定日期更新后的历史切片表。本专利技术还提供了一种数据存储装置,包括:推送数据接收模块,用于接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;推送数据存储模块,用于将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;推送数据修改模块,用于依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;历史切片表生成模块,用于备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表。重跑报文模块,用于当收到重跑报文指令时,依据所述历史切片表重跑报文;以及历史切片表恢复模块,用于若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。优选的,所述推送数据修改模块中,当接收上游系统推送的业务数据修改记录时,以业务日期和id_key的组合为唯一键,对推送过来的数据修改记录做CRUD操作,其中不同用户的id_key不同且唯一设置。进一步的,所述备份表还包括insert_date字段和op_type字段,所述insert_date字段记载业务日期,所述op_type字段包括“新增”和“更新”以及“删除”三种类型的操作,所述CRUD操作包括:若判断所述op_type字段为“新增”或“更新”类型操作时,根据以业务日期和id_key为唯一键进去查找备份表,若所述备份表无相应记录则往备份表终插入一条记录;若所述备份表已存在记录,则更新原有记录;若判断所述op_type字段为“删除”类型的操作,则据以业务日期和id_key为唯一键查找所述备份表并删除指定的记录。优选的,历史切片表恢复模块中,从所述备份表里抽取指定的数据填充到对应日期的历史切片表中以形成新的每日历史切片表包括:从所述备份表取出insert_date不大于指定日期的记录;根据id_key对所述记录进行分组,且每个所述分组内按insert_date降序排列;选取每个所述分组的第一条数据进行组合以形成指定日期更新后的历史切片表。优选的,所述重跑报文模块包括:上下文线程设置子模块,用于当收到重跑报文的指令时,设置待操作业务源数据的线程做上下文信息,所述上下文信息记载待处理的业务日期信息;切片开关开启判断子模块,用于判断切片开关是否开启:若切片开关关闭,则不执行任何替换;若切片开关开启,判断需要进行拦截,转入拦截子模块处理;拦截子模块,用于根据当前线程的上下文信息将业务表名替换为当前线程处理的业务日期对应的历史切片表;执行子模块,用于执行替换后的SQL语句;执行判断子模块,用于若判断替换后的SQL语句无法执行,则重新恢复历史切片表并转入历史切片表恢复模块中,将业务表名替换为当前线程处理的业务日期对应的历史切片表;进一步的本文档来自技高网...

【技术保护点】
1.一种数据存储方法,其特征在于,包括如下步骤:/nS1接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;/nS2将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;/nS3依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;/nS4备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表;/nS5当收到重跑报文指令时,依据所述历史切片表重跑报文;/nS6若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。/n

【技术特征摘要】
1.一种数据存储方法,其特征在于,包括如下步骤:
S1接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;
S2将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;
S3依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;
S4备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表;
S5当收到重跑报文指令时,依据所述历史切片表重跑报文;
S6若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。


2.根据权利要求1所述的数据存储方法,其特征在于:所述备份表格式包括所述业务源表的全部字段,所述历史切片表格式与所述业务源表格式相同设计。


3.根据权利要求1所述的数据存储方法,其特征在于,所述依据所述业务数据修改记录更新对应的所述备份表包括:
以业务日期和id_key的组合为唯一键,对推送所述业务数据修改记录进行CRUD操作,其中,从解析所述业务业务数据修改记录以获取所述业务日期和所述id_key,不同用户的id_key不同且唯一设置。


4.根据权利要求3所述的数据存储方法,其特征在于,所述备份表包括insert_date字段和op_type字段,所述insert_date字段记载业务日期,所述op_type字段包括“新增”和“更新”以及“删除”三种类型的操作,对推送所述业务数据修改记录进行CRUD操作包括:
若判断所述op_type字段为“新增”或“更新”时,以业务日期和id_key为唯一键查找所述备份表,若所述备份表无相应记录则往所述备份表中插入一条新的记录;若所述备份表已存在相应记录,则更新原有记录;
若判断所述op_type字段为“删除”时,以业务日期和id_key为唯一键查找所述备份表并删除指定的记录。


5.根据权利要求1所述的数据存储方法,其特征在于,所述步骤S5,当收到重跑报文指令时,依据所述历史切片表重跑报文包括:
(a)设置待操作业务源数据线程的上下文信息,所述上下文信息记载待处理的业务日期信息;
(b)判断切...

【专利技术属性】
技术研发人员:谈叶勇
申请(专利权)人:平安消费金融有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1