CN112612775A - 一种数据存储方法、装置、计算机设备及存储介质 - Google Patents
一种数据存储方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112612775A CN112612775A CN202011494323.2A CN202011494323A CN112612775A CN 112612775 A CN112612775 A CN 112612775A CN 202011494323 A CN202011494323 A CN 202011494323A CN 112612775 A CN112612775 A CN 112612775A
- Authority
- CN
- China
- Prior art keywords
- data
- service
- date
- backup
- slice
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/03—Credit; Loans; Processing thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种数据存储方法、装置、计算机设备及存储介质,每日接收上游系统推送的数据,若为业务数据时,将业务数据按照指定格式存储至业务源表中,并生成备份表,若为业务数据修改记录时,依据修改记录更新对应的业务源表数据与备份表;同时备份所述触发数据对应的业务数据表快照并写入至对应日期的历史切片表;若判断历史切片表的数据错误时,则从备份表里抽取指定的数据填充到对应日期的历史切片表中以形成新的每日历史切片表,可有效的满足数据存储以及重跑历史某天报文的业务需求。
Description
技术领域
本发明属于数据处理领域,尤其涉及一种数据存储方法、装置、计算机设备及存储介质。
背景技术
消费金融征信上报系统(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数据库连接,Java Database Connectivity)驱动执行替换后的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语句无法执行,则重新恢复历史切片表并转入历史切片表恢复模块中,将业务表名替换为当前线程处理的业务日期对应的历史切片表;
进一步的,上下文线程设置子模块中,使用ThreadLocal变量存储线程上下文信息;
进一步的,拦截子模块中,所述拦截为拦截业务源数据抽取和处理的SQL语句;
进一步的,执行子模块中,经由JDBC驱动执行替换后的SQL。
本发明还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本发明还,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述方法的步骤。
本发明所示的一种数据存储方法、装置、计算机设备及存储介质,针对历史数据存储,系统设计了两层备份方案,一级备份为历史切片表存储,只按需备份需要的业务数据,避免了全量数据备份造成的不必要的存储开销,二级备份获取最新态业务数据(业务源表)与每日终态业务数据(备份表),当一级备份里备份的数据有问题时,直接从二级备份中的备份表中里抽取指定的数据填充到相应的一级备份表,这样设置,后续需要重跑历史征信报文时,从相应日期的历史切片表中取数来组装报文,同时,若判断历史切片表的数据错误时,通过备份表恢复历史切片表的数据;,然后在进行报文组装,从而在进行数据存储的同时,还可有效的满足重跑历史某天报文的业务需求。
附图说明
图1为本发明数据存储方法工作状态示意图;
图2为本发明数据存储方法的工作流程示意图;
图3为本申请数据存储装置一个实施例的结构框图;
图4为本申请计算机设备的一个实施例的硬件架构。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,而非以任何方式限制本发明的保护范围。
在说明书的全文中,相同的附图标号指代相同的元件。表述“和/或”包括相关联的所列相目中的一个或多个的任何和全部组合。在附图中,为了便于说明,已稍微夸大了物体的厚度、尺寸和形状。附图仅为示例而非严格按比例绘制。
还应理解的是,用语“包括”、“包括有”、“具有”、“包含”和/或“包含有”,当在本说明书中使用时表示存在所陈述的特征、步骤、整体、操作、元件和/或部件,但不排除存在或附加有一个或多个其它特征、步骤、整体、操作、元件、部件和/或它们的组合。
如在说明书中使用的用语“基本上”、“大约”以及类似的用于用作表示近似的用语,而不用作表示程度的用语,并且旨在说明将由本领域普通技术人员认识到的、测量值或计算值中的固有偏差。
除非另有限定,否则本文中使用的所有用语(包括技术用语和科学用语)均具有与本申请所属领域普通技术人员的通常理解相同的含义。还应理解的是,用语(例如在常用词典中定义的用语)应被解释为具有与它们在相关技术的上下文中的含义一致的含义,并且将不被以理想化或过度正式意义解释,除非本文中明确如此限定。
需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
实施例一
如图1和图2所示,本发明公开了一种数据存储方法,可用于精确重跑历史报文,包括如下步骤:
S1接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;
S2将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;
S3依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;
S4备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表;
S5当收到重跑报文指令时,依据所述历史切片表重跑报文;
S6若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。
本发明所示的一种数据存储方法,针对历史数据存储,系统设计了两层备份方案,一级备份为历史切片表存储,只按需备份需要的业务数据(即触发征信上报的业务数据),避免了全量数据备份造成的不必要的存储开销,二级备份获取业务源表(最新态业务数据)与备份表(每日终态业务数据),当一级备份里备份的数据有问题时,直接从二级备份中的备份表中里抽取指定的数据填充到相应的一级备份表,这样设置,后续需要重跑历史征信报文时,从相应日期的历史切片表中取数来组装报文,同时,若判断历史切片表的数据错误时,通过备份表恢复历史切片表的数据;,然后在进行报文组装,从而在进行数据存储的同时,还可有效的满足重跑历史某天报文的业务需求。
步骤S1中,接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据
本实施例中,上游系统与CF-CRS系统的业务源表格式相同,各上游业务系统主动推送数据至Kafka,CF-CRS消费Kafka消息后做相应的处理和保存以进行二级备份。其中,业务数据包括业务数据、业务数据修改记录以及触发数据。
步骤S2中,当接收上游系统推送的业务数据时,将业务数据按照指定格式实时存储至业务源表,同时生成备份表。
当上游系统推送为业务数据时,CF-CRS将上游系统推送的业务数据存储在自身的业务源表中,并生成对应的备份表,备份表保存的是业务源表数据变化的流水,通过备份表可以恢复历史切片表的数据;作为一优选方案,本实施例中,备份表格式包括业务源表的全部字段。
步骤S3中,依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表。
当接收上游系统推送的业务数据修改记录时,对同一份业务数据变动记录,CF-CRS系统做两种处理:直接更新CF-CRS系统中对应的业务源表数据,业务源表始终保存着最新态的数据;同时,对同一条业务数据修改记录,备份表消费修改记录并按天保存每日的终态数据至备份表。
本实施例中,CF-CRS系统在接收上游系统推送的业务数据修改记录时,针对需要按天备份每日终态数据的业务表的每条业务数据(由id_key唯一标识),按id_key+业务日期为唯一键,对推送过来的数据修改记录做相应的CRUD操作。其中,业务日期和id_key均通过解析业务数据修改记录获得,备份表除了包括业务源表的字段外,还新增了两个字段insert_date(数据变动日期)和op_type(数据变动类型)。
更进一步的,“op_type”可取值有“I”(新增)。“U”(更新)和“D”(删除)。在消费Kafka消息时,若判断op_type字段为“新增”或“更新”类型操作时,根据以业务日期和id_key作为唯一键进去查找备份表,若备份表无相应记录则往备份表终插入一条记录;若备份表已存在记录,则更新原有记录;对于“I”和“U”类型的操作,根据“updated_date”字段对应的日期(如20200908)和数据唯一键(如id_key为d1e539fe759342c79b0354a7444ff8b8”)查找对应的备份表(BIZ_COMP_PLAN_BAK)有无记录,若不存在,则往备份表终插入一条记录;若已存在记录,则更新原有记录;若判断op_type字段为“D”类型的操作,则据以业务日期和id_key为唯一键查找备份表并删除指定的记录。经过上述操作后,可以保证对于同一id_key的业务数据,在备份表中每一天最多保留一条最新态的数据。
S4备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表。
本实施例,每日(T日)指定的时间点按需备份前一日(T-1日)触发征信上报账户的业务数据,并写入前一日(T-1日)的历史切片表,历史切片表格式与业务源表的报文格式相同设计。
步骤S4中每日历史切片表为一级备份:一级备份只按需备份需要的业务数据,即每天扫描完成后,针对扫描出的账户(触发了上报场景)备份业务数据,避免了全量数据备份造成的不必要的存储开销。具体而言,每日凌晨(T日)按需备份前一日(T-1日)触发了征信上报的账户相关的业务数据,写入T-1日的历史切片表,比如8。20日只备份8。20日触发了上报的账户的业务数据(8。21日凌晨进行备份工作),8。21日只备份8。21日触发了上报的账户的业务数据(8。22日凌晨进行备份工作)。
作为一优选方案,本实施例中,依据央行二代征信的上报场景的要求,判断是否账户的业务数据是否触发征信上报。人行对于征信上报的触发有一些预定义好的规范,比如个人授信开始、额度调整、借贷账户开立、每月应还日、账户关闭等,本申请根据这些特定的场景从业务原数据中抽取出当天需要上报的账户,再组装报文进行上报。
S5当收到重跑报文指令时,依据所述历史切片表重跑报文。
步骤S5中,当收到重跑报文的指令时,需要从相应日期的历史切片表中取数来组装报文并运行,以基于历史当日的快照数据精确还原当时的征信报文。
作为一优选方案,当需要重跑报文时,本申请基于Mybatis插件机制的动态替换SQL语句,从相应日期的历史切片表中取数来组装报文,该机制能优雅地将原先的SQL中涉及到的业务表名替换为指定的历史切片表名,而不改变原先的SQL逻辑,做到对原有代码和逻辑无侵入性。
当收到重跑报文指令时,依据所述历史切片重跑报文包括如下步骤:
(a)设置待操作业务源数据线程的上下文信息,所述上下文信息记载待处理的业务日期信息;
(b)判断切片开关是否开启:若切片开关关闭,则不执行任何替换,若切片开关开启,转入步骤(c);
(c)根据当前线程的上下文信息将业务表名替换为当前线程处理的业务日期对应的历史切片表;若切片开关开启,判断需要进行拦截,根据当前线程的上下文信息将业务表名替换为当前线程处理的业务日期对应的历史切片表;
(d)执行替换后历史切片表中的SQL语句:若所述SQL语句无法执行,则转入步骤S6重新恢复历史切片表后,再次转入步骤(c);若判断处理完毕后,清除上下文信息。
本实施例中,切片插件通过配置在Apollo配置中心的切片开关判断是否需要进行替换,切片插件在拦截SQL时,如果切片开关关闭,则不执行任何替换;否则,解析其中涉及到的业务源表,将当前执行的SQL语句替换为当前运行上下文所对应的历史切片表,然后再执行替换后的SQL语句。
同时,为保证各线程互不干扰,可独立按照自己上下文信息中的业务日期来替换SQL语句,本发明同时考虑了插件上下文的设计,本实施例中,进一步的,使用ThreadLocal变量来隔离各线程的业务日期,处理完成后清除当前线程的ThreadLocal变量以免线程池复用后污染后续的线程。使用ThreadLocal变量存储线程上下文信息,每个线程开始工作前,CF-CRS会将该线程要处理的业务日期信息写入该线程的上下文;线程在实际工作时,根据当前上下文中的信息来决定替换后的目标,线程执行完毕后再清除该线程对应的ThreadLocal变量信息。
进一步的,本实施例中,拦截时切片插件只拦截业务源数据抽取和处理的SQL语句,对于段表和报文相关操作以及Kafka消费者执行的SQL语句,则无需拦截,进一步的,通过在插件实现中排除掉指定namespace的DAO来实现,判断当前执行的SQL语句对应的MappedStatement的Id,如果属于无需拦截的namespace,则不执行拦截逻辑,拦截器直接返回。
进一步的,本实施例中,通过JDBC驱动执行替换后的SQL。
S6若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。
若重跑时,报文无法正常运行(比如预校验失败),则判断历史切片表的数据错误,需要重新恢复历史切片表中的数据。
作为一优选方案,本实施例中,恢复历史切片表中的数据,包括如下步骤:
从备份表中取出insert_date不大于指定日期的所有记录;
根据id_key对上述记录进行分组,且每个分组内按insert_date降序排列;
选取每个分组的第一条数据进行组合以恢复指定日期的历史切片表。
如图1所示,假如要恢复20200815的biz_comp_plan表(即20200815日的历史切片表)的数据,从biz_comp_plan_bak表(备份表)抽取insert_date<=‘20200815’的记录,再按照id_key分组,组内按insert_date降序排列,每个分组只选取第一条数据,最终组合所有分组数据就可以还原出biz_comp_plan表在20200815日终时的快照,即历史切片表。
实施例二
如图3所示,本发明还提供了一种数据存储装置10,包括:
推送数据接收模块11,用于接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;
推送数据存储模块12,用于将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;
推送数据修改模块13,用于依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;
历史切片表生成模块14,用于备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表;
重跑报文模块15,用于当收到重跑报文指令时,依据所述历史切片表重跑报文;
以及历史切片表恢复模块16,用于若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。
优选的,所述推送数据修改模块13中,当接收上游系统推送的业务数据修改记录时,以业务日期和id_key的组合为唯一键,对推送过来的数据修改记录做CRUD操作,其中不同用户的id_key不同且唯一设置。
进一步的,所述备份表还包括insert_date字段和op_type字段,所述insert_date字段记载业务日期,所述op_type字段包括“新增”和“更新”以及“删除”三种类型的操作,所述CRUD操作包括:
若判断所述op_type字段为“新增”或“更新”类型操作时,根据以业务日期和id_key为唯一键进去查找备份表,若所述备份表无相应记录则往备份表终插入一条记录;若所述备份表已存在记录,则更新原有记录;
若判断所述op_type字段为“删除”类型的操作,则据以业务日期和id_key为唯一键查找所述备份表并删除指定的记录。
优选的,历史切片表恢复模块16中,从所述备份表里抽取指定的数据填充到对应日期的历史切片表中以形成新的每日历史切片表包括:
从所述备份表取出insert_date不大于指定日期的记录;
根据id_key对所述记录进行分组,且每个所述分组内按insert_date降序排列;
选取每个所述分组的第一条数据进行组合以形成指定日期更新后的历史切片表。
优选的,所述重跑报文模块15包括:
上下文线程设置子模块,用于当收到重跑报文的指令时,设置待操作业务源数据的线程做上下文信息,所述上下文信息记载待处理的业务日期信息;
切片开关开启判断子模块,用于判断切片开关是否开启:若切片开关关闭,则不执行任何替换;若切片开关开启,判断需要进行拦截,转入拦截子模块处理;
拦截子模块,用于根据当前线程的上下文信息将业务表名替换为当前线程处理的业务日期对应的历史切片表;
执行子模块,用于执行替换后的SQL语句;
执行判断子模块,用于若判断替换后的SQL语句无法执行,则重新恢复历史切片表并转入历史切片表恢复模块中,将业务表名替换为当前线程处理的业务日期对应的历史切片表;
进一步的,上下文线程设置子模块中,使用ThreadLocal变量存储线程上下文信息;
进一步的,拦截子模块中,所述拦截为拦截业务源数据抽取和处理的SQL语句;
进一步的,执行子模块中,经由JDBC驱动执行替换后的SQL。
本发明所示的一种数据存储装置10,针对历史数据存储,系统设计了两层备份方案,一级备份为历史切片表存储,只按需备份需要的业务数据,避免了全量数据备份造成的不必要的存储开销,二级备份获取最新态业务数据(业务源表)与每日终态业务数据(备份表),当一级备份里备份的数据有问题时,直接从二级备份中的备份表中里抽取指定的数据填充到相应的一级备份表,这样设置,后续需要重跑历史征信报文时,从相应日期的历史切片表中取数来组装报文,同时,若判断历史切片表的数据错误时,通过备份表恢复历史切片表的数据;,然后在进行报文组装,从而可有效的满足重跑历史某天报文的业务需求。
实施例三
如图4所示是本发明实施例提供的一种计算机设备的结构示意图,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图4所示。需要指出的是,图4仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器21(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如方法实施例中的数据存储装置10的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行数据存储装置10,以实现方法实施例中的数据存储方法。
实施例四
本申请还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储数据存储装置,被处理器执行时实现方法实施例的数据存储方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
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)判断切片开关是否开启:若切片开关关闭,则不执行任何替换,若切片开关开启,转入步骤(c);
(c)根据当前线程的上下文信息将业务表名替换为当前线程处理的业务日期对应的历史切片表;
(d)执行替换后历史切片表中的SQL语句:若所述SQL语句无法执行,则重新恢复历史切片表后,转入步骤(c);若判断处理完毕后,清除上下文信息。
6.根据权利要求5所述的数据存储方法,其特征在于,所述步骤(a)中,使用ThreadLocal变量存储线程上下文信息;
和/或,所述步骤(d)中,经由JDBC驱动执行替换后的SQL。
7.根据权利要求1所述的数据存储方法,其特征在于,所述步骤S6,重新恢复所述历史切片表包括:
从所述备份表取出insert_date不大于指定日期的记录;
根据id_key对所述记录进行分组,且每个所述分组内按insert_date降序排列;
选取每个所述分组的第一条数据进行组合以形成指定日期更新后的历史切片表。
8.一种数据存储装置,其特征在于,包括:
推送数据接收模块,用于接收上游系统推送数据,所述推送数据包括业务数据、业务数据修改记录以及触发数据,所述触发数据为触发征信上报账户的业务数据;
推送数据存储模块,用于将所述业务数据按照指定格式存储至业务源表中,依据所述业务源表生成备份表;
推送数据修改模块,用于依据所述业务数据修改记录更新对应的所述业务源表数据与所述备份表;
历史切片表生成模块,用于备份所述触发数据对应的业务数据表快照,并写入至对应日期的历史切片表;
重跑报文模块,用于当收到重跑报文指令时,依据所述历史切片表重跑报文;
以及历史切片表恢复模块,用于若所述历史切片表中的数据错误,从所述备份表里抽取指定的数据填充到对应日期的所述历史切片表中,重新恢复所述历史切片表。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011494323.2A CN112612775B (zh) | 2020-12-17 | 2020-12-17 | 一种数据存储方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011494323.2A CN112612775B (zh) | 2020-12-17 | 2020-12-17 | 一种数据存储方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612775A true CN112612775A (zh) | 2021-04-06 |
CN112612775B CN112612775B (zh) | 2023-06-27 |
Family
ID=75240850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011494323.2A Active CN112612775B (zh) | 2020-12-17 | 2020-12-17 | 一种数据存储方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612775B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190381A (zh) * | 2021-04-28 | 2021-07-30 | 平安消费金融有限公司 | 数据备份方法、系统、设备及存储介质 |
CN113568936A (zh) * | 2021-07-30 | 2021-10-29 | 多点生活(成都)科技有限公司 | 实时流数据存储方法、装置、终端设备 |
CN114020534A (zh) * | 2021-11-05 | 2022-02-08 | 中远海运科技股份有限公司 | 一种航运数据快照生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140081920A1 (en) * | 2012-09-19 | 2014-03-20 | Fujitsu Limited | Medium, control method, and information processing apparatus |
CN105320576A (zh) * | 2014-05-30 | 2016-02-10 | 中国电信股份有限公司 | 数据库备份装置与方法 |
US20180107561A1 (en) * | 2016-10-19 | 2018-04-19 | International Business Machines Corporation | Block level backup of virtual machines for file name level based file search and restoration |
CN108121774A (zh) * | 2017-12-08 | 2018-06-05 | 平安科技(深圳)有限公司 | 一种数据表备份方法及终端设备 |
CN111367883A (zh) * | 2020-02-25 | 2020-07-03 | 平安科技(深圳)有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
-
2020
- 2020-12-17 CN CN202011494323.2A patent/CN112612775B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140081920A1 (en) * | 2012-09-19 | 2014-03-20 | Fujitsu Limited | Medium, control method, and information processing apparatus |
CN105320576A (zh) * | 2014-05-30 | 2016-02-10 | 中国电信股份有限公司 | 数据库备份装置与方法 |
US20180107561A1 (en) * | 2016-10-19 | 2018-04-19 | International Business Machines Corporation | Block level backup of virtual machines for file name level based file search and restoration |
CN108121774A (zh) * | 2017-12-08 | 2018-06-05 | 平安科技(深圳)有限公司 | 一种数据表备份方法及终端设备 |
CN111367883A (zh) * | 2020-02-25 | 2020-07-03 | 平安科技(深圳)有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190381A (zh) * | 2021-04-28 | 2021-07-30 | 平安消费金融有限公司 | 数据备份方法、系统、设备及存储介质 |
CN113568936A (zh) * | 2021-07-30 | 2021-10-29 | 多点生活(成都)科技有限公司 | 实时流数据存储方法、装置、终端设备 |
CN113568936B (zh) * | 2021-07-30 | 2023-06-13 | 多点生活(成都)科技有限公司 | 实时流数据存储方法、装置、终端设备 |
CN114020534A (zh) * | 2021-11-05 | 2022-02-08 | 中远海运科技股份有限公司 | 一种航运数据快照生成方法 |
CN114020534B (zh) * | 2021-11-05 | 2022-05-10 | 中远海运科技股份有限公司 | 一种航运数据快照生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112612775B (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112612775B (zh) | 一种数据存储方法、装置、计算机设备及存储介质 | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US10496672B2 (en) | Creating replicas at user-defined points in time | |
CN104040481B (zh) | 用于融合、存储和检索增量式备份数据的方法和系统 | |
US20190073277A1 (en) | Transaction Recovery Method in Database System, and Database Management System | |
US20150154234A1 (en) | Using versioning to back up multiple versions of a stored object | |
CN102609337A (zh) | 一种内存数据库快速数据恢复方法 | |
CN105373448A (zh) | 数据库中故障数据的恢复方法和系统 | |
US9542279B2 (en) | Shadow paging based log segment directory | |
EP3089051B1 (en) | Database rollback using wal | |
CN102541691B (zh) | 面向内存数据库oltp应用的日志检查点恢复方法 | |
CN106970856B (zh) | 对数据进行备份、恢复及挂载的数据管理系统及方法 | |
CN104572920A (zh) | 一种数据整理方法和装置 | |
US10503605B2 (en) | Method of detecting source change for file level incremental backup | |
CN111143323B (zh) | Mpp数据库管理方法、装置及系统 | |
CN112100182A (zh) | 数据入库处理方法、装置和服务器 | |
CN113821382B (zh) | 一种实时数据库数据处理方法、系统和设备 | |
CN110737504B (zh) | 一种深度学习模型训练容错方法、系统、终端及存储介质 | |
CN105659214B (zh) | 数据单元集合的检查点设置 | |
CN103177026A (zh) | 数据管理方法和数据管理系统 | |
CN110147355B (zh) | 数据同步方法、装置及服务器 | |
CN115329391A (zh) | 一种文本数据库的防护方法、装置、设备及介质 | |
CN114564445A (zh) | 适用于Hive数据仓库进行数据写入与更新的方法及系统 | |
JPH0277950A (ja) | データベース処理システム | |
CN117874087A (zh) | 一种数据报送方法、装置、服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |