CN113505178A - 一种基于数据双写的票据同步方法及终端 - Google Patents

一种基于数据双写的票据同步方法及终端 Download PDF

Info

Publication number
CN113505178A
CN113505178A CN202110801225.7A CN202110801225A CN113505178A CN 113505178 A CN113505178 A CN 113505178A CN 202110801225 A CN202110801225 A CN 202110801225A CN 113505178 A CN113505178 A CN 113505178A
Authority
CN
China
Prior art keywords
bill
writing
bills
change
reconciliation
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
Application number
CN202110801225.7A
Other languages
English (en)
Other versions
CN113505178B (zh
Inventor
陈庸凯
刘盈
黄荣明
王航宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Boss Software Co ltd
Original Assignee
Fujian Boss Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Boss Software Co ltd filed Critical Fujian Boss Software Co ltd
Priority to CN202110801225.7A priority Critical patent/CN113505178B/zh
Publication of CN113505178A publication Critical patent/CN113505178A/zh
Application granted granted Critical
Publication of CN113505178B publication Critical patent/CN113505178B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing

Abstract

本发明公开了一种基于数据双写的票据同步方法及终端,接收票据写入请求,若需要新增票据则将票据写入第一对账表,同时异步写入主表,若需要变更票据则将票据写入第二对账表,同时异步写入变更表,因此每次写入票据都将会存入对账表和查询库表中,票据写入查询库之前都会使用代理组件进行缓冲,从而有效降低查询库的负载;通过判断第一对账表与主表是否存在差集,将遗漏的数据插入主表,通过判断第二对账表与变更表是否存在差集,将遗漏的数据插入变更表,将插入数据后的变更表合并至主表,保证查询库数据的完整性和准确性;因此通过数据双写并自动对账的方法,能够相对实时地查询到新增的业务数据,提高查询效率和票据同步的实时性。

Description

一种基于数据双写的票据同步方法及终端
技术领域
本发明涉及数据库技术领域,特别涉及一种基于数据双写的票据同步方法及终端。
背景技术
目前为了实现票据的同步,通常采用两种同步方法:
一种是解析抽取数据库的binlog,并将关注的数据同步至查询库。但是binlog解析相对复杂,解析抽取数据的成本较高,且不同数据库的binlog格式不一样,导致产品设计上无法统一方案;非税电子票据系统涉及到的数据库主要有Oracle、Mysql、HBase等,查询库可以与生产库同类型,亦有其他列式的数据库,比如ClickHouse、DorisDB、TiDb等,因此在技术选型上,无法提供通用的方案和技术。
另一种是日终增量抽取数据库的新增业务数据及变更数据,插入或者更新至查询库。通过日终抽取数据进行同步的方法相对简单,通过结合一定的业务规则,增量同步数据至查询库;但是同步的实时性较低,系统需要T+1的时间才能查询到昨日的数据变更情况,且当数据库数据量巨大时,同步耗费非常大,容易造成生产库的查询瓶颈。
发明内容
本发明所要解决的技术问题是:提供一种基于数据双写的票据同步方法及终端,能够提高票据同步的实时性,并减少票据同步的压力。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于数据双写的票据同步方法,包括步骤:
接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表;
判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表;
判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表;
将更新后的所述变更表合并至更新后的所述主表。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种基于数据双写的票据同步终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表;
判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表;
判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表;
将更新后的所述变更表合并至更新后的所述主表。
本发明的有益效果在于:接收票据写入请求,若需要新增票据则将票据写入第一对账表,同时异步写入主表,若需要变更票据则将票据写入第二对账表,同时异步写入变更表,因此每次写入票据都将会存入对账表和查询库表中,票据写入查询库之前都会使用代理组件进行缓冲,从而有效降低查询库的负载,减少票据同步的压力;通过判断第一对账表与主表是否存在差集,将遗漏的数据插入主表,通过判断第二对账表与变更表是否存在差集,将遗漏的数据插入变更表,将插入数据后的变更表合并至主表,实现了自动对账,保证查询库数据的完整性和准确性;因此通过数据双写并自动对账的方法,不需要在规定时间统一将数据写入查询库,能够相对实时地查询到新增的业务数据,提高查询效率和票据同步的实时性。
附图说明
图1为本发明实施例的一种基于数据双写的票据同步方法的流程图;
图2为本发明实施例的一种基于数据双写的票据同步终端的示意图;
图3为本发明实施例的一种基于数据双写的票据同步方法的新增票据流程图;
图4为本发明实施例的一种基于数据双写的票据同步方法的代理组件处理票据的流程图;
图5为本发明实施例的一种基于数据双写的票据同步方法的变更票据流程图;
图6为本发明实施例的一种基于数据双写的票据同步方法的对账流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1、图3至图6,本发明实施例提供了一种基于数据双写的票据同步方法,包括步骤:
接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表;
判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表;
判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表;
将更新后的所述变更表合并至更新后的所述主表。
从上述描述可知,本发明的有益效果在于:接收票据写入请求,若需要新增票据则将票据写入第一对账表,同时异步写入主表,若需要变更票据则将票据写入第二对账表,同时异步写入变更表,因此每次写入票据都将会存入对账表和查询库表中,票据写入查询库之前都会使用代理组件进行缓冲,从而有效降低查询库的负载,减少票据同步的压力;通过判断第一对账表与主表是否存在差集,将遗漏的数据插入主表,通过判断第二对账表与变更表是否存在差集,将遗漏的数据插入变更表,将插入数据后的变更表合并至主表,实现了自动对账,保证查询库数据的完整性和准确性;因此通过数据双写并自动对账的方法,不需要在规定时间统一将数据写入查询库,能够相对实时地查询到新增的业务数据,提高查询效率和票据同步的实时性。
进一步地,所述同时将票据异步缓冲至代理组件后写入查询库主表包括:
将所述票据异步缓冲至代理组件,将票据输入代理组件中的延时队列;
判断所述票据在所述延时队列中延时时间是否达到第一预设时间,若是,则将所述票据输入新增票据队列;
判断所述新增票据队列的票据数量是否超过预设个数或者所述新增票据队列是否超过第二预设时间未处理,若是,则将所述新增票据队列中的票据写入所述查询库主表。
由上述描述可知,在新增票据时,将票据同时异步缓冲至代理组件,代理组件中的延时队列能够缓冲新增的票据,再将票据发送至新增票据队列;新增票据队列中能够缓存并发的业务数据,当缓存的数据记录条数或者间隔时间到达阈值的时候,才将队列中的数据批量插入查询库主表,避免生产中的并发数据没有经过代理组件的缓冲而直接实时写入查询库,所造成冲击,因此代理组件的相关策略能有效的降低查询库的负载。
进一步地,所述同时将票据异步缓冲至代理组件后写入查询库变更表包括:
判断所述延时队列中是否存在相同主键的票据,若是,则直接更新所述票据的信息,否则,将所述票据输入变更票据队列;
判断所述变更票据队列的票据数量是否超过预设个数或者所述变更票据队列是否超过第三预设时间未处理,若是,则将所述变更票据队列中的票据写入所述查询库变更表。
由上述描述可知,在变更票据时,若延迟队列中存在该票据,则直接更新票据的信息,因此设置延时队列能够在等待票据直接换开的场景下,票据最终状态能直接更新,对于快速更新的票据能够直接通过延时队列更新到主表中,减少了变更表的压力。
进一步地,所述将更新后的所述变更表合并至更新后的所述主表包括:
将所述变更表中的更新内容插入查询库临时表,将所述查询库主表中未变更的数据合并至所述临时表;
根据所述票据的日期信息进行分区,将临时表通过切换分区把票据同步至所述主表。
由上述描述可知,先将遗漏的更新数据插入查询库临时表,而后再通过切换分区的方式将票据同步到查询库主表,分摊了生产库数据查询的压力,避免了日终大批量同步数据时回查生产库的情况。
进一步地,所述将票据写入对账表包括:
在所述对账表中建立第一分表和第二分表,将所述票据按照对应日期进行模2路由;
当所述日期为奇数日期时,所述第一分表为活跃表,当所述日期为偶数日期时,所述第二分表为活跃表。
由上述描述可知,通过按日期模2路由的方式,能够分出活跃表和非活跃表,以便于在对账成功后对非活跃表进行数据清理,避免用清理已对账的记录时生产库产生大量的日志。
请参照图2,本发明另一实施例提供了一种基于数据双写的票据同步终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表;
判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表;
判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表;
将更新后的所述变更表合并至更新后的所述主表。
由上述描述可知,接收票据写入请求,若需要新增票据则将票据写入第一对账表,同时异步写入主表,若需要变更票据则将票据写入第二对账表,同时异步写入变更表,因此每次写入票据都将会存入对账表和查询库表中,票据写入查询库之前都会使用代理组件进行缓冲,从而有效降低查询库的负载,减少票据同步的压力;通过判断第一对账表与主表是否存在差集,将遗漏的数据插入主表,通过判断第二对账表与变更表是否存在差集,将遗漏的数据插入变更表,将插入数据后的变更表合并至主表,实现了自动对账,保证查询库数据的完整性和准确性;因此通过数据双写并自动对账的方法,不需要在规定时间统一将数据写入查询库,能够相对实时地查询到新增的业务数据,提高查询效率和票据同步的实时性。
进一步地,所述同时将票据异步缓冲至代理组件后写入查询库主表包括:
将所述票据异步缓冲至代理组件,将票据输入代理组件中的延时队列;
判断所述票据在所述延时队列中延时时间是否达到第一预设时间,若是,则将所述票据输入新增票据队列;
判断所述新增票据队列的票据数量是否超过预设个数或者所述新增票据队列是否超过第二预设时间未处理,若是,则将所述新增票据队列中的票据写入所述查询库主表。
由上述描述可知,在新增票据时,将票据同时异步缓冲至代理组件,代理组件中的延时队列能够缓冲新增的票据,再将票据发送至新增票据队列;新增票据队列中能够缓存并发的业务数据,当缓存的数据记录条数或者间隔时间到达阈值的时候,才将队列中的数据批量插入查询库主表,避免生产中的并发数据没有经过代理组件的缓冲而直接实时写入查询库,所造成冲击,因此代理组件的相关策略能有效的降低查询库的负载。
进一步地,所述同时将票据异步缓冲至代理组件后写入查询库变更表包括:
判断所述延时队列中是否存在相同主键的票据,若是,则直接更新所述票据的信息,否则,将所述票据输入变更票据队列;
判断所述变更票据队列的票据数量是否超过预设个数或者所述变更票据队列是否超过第三预设时间未处理,若是,则将所述变更票据队列中的票据写入所述查询库变更表。
由上述描述可知,在变更票据时,若延迟队列中存在该票据,则直接更新票据的信息,因此设置延时队列能够在等待票据直接换开的场景下,票据最终状态能直接更新,对于快速更新的票据能够直接通过延时队列更新到主表中,减少了变更表的压力。
进一步地,所述将更新后的所述变更表合并至更新后的所述主表包括:
将所述变更表中的更新内容插入查询库临时表,将所述查询库主表中未变更的数据合并至所述临时表;
根据所述票据的日期信息进行分区,将临时表通过切换分区把票据同步至所述主表。
由上述描述可知,先将遗漏的更新数据插入查询库临时表,而后再通过切换分区的方式将票据同步到查询库主表,分摊了生产库数据查询的压力,避免了日终大批量同步数据时回查生产库的情况。
进一步地,所述将票据写入对账表包括:
在所述对账表中建立第一分表和第二分表,将所述票据按照对应日期进行模2路由;
当所述日期为奇数日期时,所述第一分表为活跃表,当所述日期为偶数日期时,所述第二分表为活跃表。
由上述描述可知,通过按日期模2路由的方式,能够分出活跃表和非活跃表,以便于在对账成功后对非活跃表进行数据清理,避免用清理已对账的记录时生产库产生大量的日志。
本发明的一种基于数据双写的票据同步方法及终端,适用于非税电子票据系统的数据同步,能够提高票据同步的实时性,并减少票据同步的压力,以下通过具体实施方式进行说明:
实施例一
请参照图1、图3至图6,一种基于数据双写的票据同步方法,包括步骤:
S1、接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表。
具体的,请参照图3,在新增票据时,在同事务内将票据写入票据对账表,记录票据主键FID、开票日期FDATE和业务类型FTYPE等,新增票据时FTYPE=0,用于对插入查询库失败的记录做对账。
其中,所述同时将票据异步缓冲至代理组件后写入查询库主表包括:
将所述票据异步缓冲至代理组件,将票据输入代理组件中的延时队列;
判断所述票据在所述延时队列中延时时间是否达到第一预设时间,若是,则将所述票据输入新增票据队列;
判断所述新增票据队列的票据数量是否超过预设个数或者所述新增票据队列是否超过第二预设时间未处理,若是,则将所述新增票据队列中的票据写入所述查询库主表。
具体的,请参照图4,将数据写入第一对账表的同时,将票据异步缓冲至代理组件,代理组件中包含延时队列,延时队列用于缓冲新增票据,票据在队列中延时60秒,以期望等待票据直接换开的场景下,票据最终状态能直接更新;
票据在延时队列中超时后,将移入新增票据队列,新增票据队列的票据数量超过10000个或者所述新增票据队列超过300秒未处理时,队列中的票据将通过单线程批量插入查询库中的票据主表、票据明细表和票据宽表。
具体的,请参照图5,在变更票据时,在同事务内将票据写入票据对账表,记录票据主键FID、开票日期FDATE、业务类型FTYPE等,变更票据时FTYPE=1,用于对插入查询库失败的记录做对账。
其中,所述同时将票据异步缓冲至代理组件后写入查询库变更表包括:
判断所述延时队列中是否存在相同主键的票据,若是,则直接更新所述票据的信息,否则,将所述票据输入变更票据队列;
判断所述变更票据队列的票据数量是否超过预设个数或者所述变更票据队列是否超过第三预设时间未处理,若是,则将所述变更票据队列中的票据写入所述查询库变更表。
具体的,请参照图4,将数据写入第二对账表的同时,将票据异步缓冲至代理组件,如果延时队列中存在相同的票据,则直接更新票据状态,否则,将数据输入变更票据队列;
变更票据队列的票据数量超过1000个或者所述新增票据队列超过300秒未处理时,队列中的票据将通过单线程批量插入查询库中的票据变更表。
S2、判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表。
具体的,使用票据主键计算第一对账表与主表的第一主键差集,若存在差集,则将遗漏的新增记录,直接插入查询库的主表和明细表中。
S3、判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表。
具体的,使用票据主键计算第二对账表与变更表的第二主键差集,若存在差集,则将遗漏的变更记录,直接插入查询库的变更表中。
S4、将更新后的所述变更表合并至更新后的所述主表。
其中,将所述变更表中的更新内容插入查询库临时表,将所述查询库主表中未变更的数据合并至所述临时表;
根据所述票据的日期信息进行分区,将临时表通过切换分区把票据同步至所述主表。
具体的,请参照图6,查询票务对账表中的业务日期列表,按日期进行循环,查询每一日期内票务对账表和票务主表的主键差集,若主表中有遗漏数据,则按主键查询遗漏数据并插入查询库;将变更表中的更新内容插入查询库临时表,将查询库主表中未变更的数据合并至临时表,将临时表通过切换分区使票据同步至主表。
实施例二
本实施例与实施例一的不同之处在于,进一步限定了如何将票据写入对账表,具体的:
在所述对账表中建立第一分表和第二分表,将所述票据按照对应日期进行模2路由;
当所述日期为奇数日期时,所述第一分表为活跃表,当所述日期为偶数日期时,所述第二分表为活跃表。
在本实施例中,例如,日期为1月1日时,将日期模2等于1,此时票据对账表1为当前活跃分表,对账数据将写入此表;日切后日期是1月2日,日期模2等于0,此时票据对账表0为当前活跃分表,而票据对账表1为非当前活跃分表,没有数据会写入此表,因此在对账成功后可以安全地对此表进行清空操作(Truncate Table)。这样处理的益处是:避免用delete指令删除已对账的记录时生产库产生大量的日志,且delete操作的执行性能效率较低。
实施例三
请参照图2,一种基于数据双写的票据同步终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一或实施例二的一种基于数据双写的票据同步方法的各个步骤。
综上所述,本发明提供的一种基于数据双写的票据同步方法及终端,接收票据写入请求,若需要新增票据则将票据写入第一对账表,同时异步写入代理组件后输入查询库主表,若需要变更票据则将票据写入第二对账表,同时异步写入代理组件后输入查询库变更表,因此每次写入票据都将会存入对账表和查询库表中,票据写入查询库之前都会使用代理组件进行缓冲,从而有效降低查询库的负载,减少票据同步的压力;通过判断第一对账表与主表是否存在差集,将遗漏的数据插入主表,通过判断第二对账表与变更表是否存在差集,将遗漏的数据插入变更表,将插入数据后的变更表合并至主表,即使双写同步失败也可以自省,实现了自动对账,保证查询库数据的完整性和准确性;因此通过数据双写并自动对账的方法,不需要在规定时间统一将数据写入查询库,能够相对实时地查询到新增的业务数据,提高查询效率和票据同步的实时性;其中,先将遗漏的更新数据插入查询库临时表,而后再通过切换分区的方式将票据同步到查询库主表,分摊了生产库数据查询的压力,避免了日终大批量同步数据时回查生产库的情况。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于数据双写的票据同步方法,其特征在于,包括步骤:
接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表;
判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表;
判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表;
将更新后的所述变更表合并至更新后的所述主表。
2.根据权利要求1所述的一种基于数据双写的票据同步方法,其特征在于,所述同时将票据异步缓冲至代理组件后写入查询库主表包括:
将所述票据异步缓冲至代理组件,将票据输入代理组件中的延时队列;
判断所述票据在所述延时队列中延时时间是否达到第一预设时间,若是,则将所述票据输入新增票据队列;
判断所述新增票据队列的票据数量是否超过预设个数或者所述新增票据队列是否超过第二预设时间未处理,若是,则将所述新增票据队列中的票据写入所述查询库主表。
3.根据权利要求2所述的一种基于数据双写的票据同步方法,其特征在于,所述同时将票据异步缓冲至代理组件后写入查询库变更表包括:
判断所述延时队列中是否存在相同主键的票据,若是,则直接更新所述票据的信息,否则,将所述票据输入变更票据队列;
判断所述变更票据队列的票据数量是否超过预设个数或者所述变更票据队列是否超过第三预设时间未处理,若是,则将所述变更票据队列中的票据写入所述查询库变更表。
4.根据权利要求1所述的一种基于数据双写的票据同步方法,其特征在于,所述将更新后的所述变更表合并至更新后的所述主表包括:
将所述变更表中的更新内容插入查询库临时表,将所述查询库主表中未变更的数据合并至所述临时表;
根据所述票据的日期信息进行分区,将临时表通过切换分区把票据同步至所述主表。
5.根据权利要求1至4中任一项所述的一种基于数据双写的票据同步方法,其特征在于,所述将票据写入对账表包括:
在所述对账表中建立第一分表和第二分表,将所述票据按照对应日期进行模2路由;
当所述日期为奇数日期时,所述第一分表为活跃表,当所述日期为偶数日期时,所述第二分表为活跃表。
6.一种基于数据双写的票据同步终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
接收票据写入请求,获取所述票据写入请求的请求类型,若所述请求类型为新增票据,则将票据写入第一对账表,同时将票据异步缓冲至代理组件后写入查询库主表,若所述请求类型为变更票据,则将票据写入第二对账表,同时将票据异步缓冲至代理组件后写入查询库变更表;
判断所述第一对账表与所述主表是否存在第一差集,若是,则将所述第一差集对应的第一对账表的票据插入所述主表;
判断所述第二对账表与所述变更表是否存在第二差集,若是,则将所述第二差集对应的第二对账表的票据插入所述变更表;
将更新后的所述变更表合并至更新后的所述主表。
7.根据权利要求6所述的一种基于数据双写的票据同步终端,其特征在于,所述同时将票据异步缓冲至代理组件后写入查询库主表包括:
将所述票据异步缓冲至代理组件,将票据输入代理组件中的延时队列;
判断所述票据在所述延时队列中延时时间是否达到第一预设时间,若是,则将所述票据输入新增票据队列;
判断所述新增票据队列的票据数量是否超过预设个数或者所述新增票据队列是否超过第二预设时间未处理,若是,则将所述新增票据队列中的票据写入所述查询库主表。
8.根据权利要求7所述的一种基于数据双写的票据同步终端,其特征在于,所述同时将票据异步缓冲至代理组件后写入查询库变更表包括:
判断所述延时队列中是否存在相同主键的票据,若是,则直接更新所述票据的信息,否则,将所述票据输入变更票据队列;
判断所述变更票据队列的票据数量是否超过预设个数或者所述变更票据队列是否超过第三预设时间未处理,若是,则将所述变更票据队列中的票据写入所述查询库变更表。
9.根据权利要求6所述的一种基于数据双写的票据同步终端,其特征在于,所述将更新后的所述变更表合并至更新后的所述主表包括:
将所述变更表中的更新内容插入查询库临时表,将所述查询库主表中未变更的数据合并至所述临时表;
根据所述票据的日期信息进行分区,将临时表通过切换分区把票据同步至所述主表。
10.根据权利要求6至9中任一项所述的一种基于数据双写的票据同步终端,其特征在于,所述将票据写入对账表包括:
在所述对账表中建立第一分表和第二分表,将所述票据按照对应日期进行模2路由;
当所述日期为奇数日期时,所述第一分表为活跃表,当所述日期为偶数日期时,所述第二分表为活跃表。
CN202110801225.7A 2021-07-15 2021-07-15 一种基于数据双写的票据同步方法及终端 Active CN113505178B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110801225.7A CN113505178B (zh) 2021-07-15 2021-07-15 一种基于数据双写的票据同步方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110801225.7A CN113505178B (zh) 2021-07-15 2021-07-15 一种基于数据双写的票据同步方法及终端

Publications (2)

Publication Number Publication Date
CN113505178A true CN113505178A (zh) 2021-10-15
CN113505178B CN113505178B (zh) 2023-01-03

Family

ID=78012808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110801225.7A Active CN113505178B (zh) 2021-07-15 2021-07-15 一种基于数据双写的票据同步方法及终端

Country Status (1)

Country Link
CN (1) CN113505178B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133591A1 (en) * 2001-03-16 2004-07-08 Iti, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
WO2009026819A1 (fr) * 2007-08-23 2009-03-05 Huawei Technologies Co., Ltd. Procédé et dispositif pour fusionner une facture et sauvegarder l'état de la file d'attente de tampon
CN103646309A (zh) * 2013-12-04 2014-03-19 广东创能科技有限公司 一种票务清分系统及方法
CN111953785A (zh) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 数据传输方法、系统及服务器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133591A1 (en) * 2001-03-16 2004-07-08 Iti, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
WO2009026819A1 (fr) * 2007-08-23 2009-03-05 Huawei Technologies Co., Ltd. Procédé et dispositif pour fusionner une facture et sauvegarder l'état de la file d'attente de tampon
CN103646309A (zh) * 2013-12-04 2014-03-19 广东创能科技有限公司 一种票务清分系统及方法
CN111953785A (zh) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 数据传输方法、系统及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邓杰等: "基于Zookeeper构建准实时索引更新系统及其监控", 《计算机时代》 *

Also Published As

Publication number Publication date
CN113505178B (zh) 2023-01-03

Similar Documents

Publication Publication Date Title
US10671594B2 (en) Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems
US8943029B2 (en) On-line transaction processing (OLTP) compression and re-compression of database data
CN110879813B (zh) 一种基于二进制日志解析的MySQL数据库增量同步实现方法
CN107818115B (zh) 一种处理数据表的方法及装置
US20050193041A1 (en) Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US8856083B2 (en) Framework to optimize delete all row operations on database objects to improve throughput, query ability and flashback
WO2021184761A1 (zh) 数据访问方法和装置、数据存储方法和装置
CN109086382B (zh) 一种数据同步方法、装置、设备及存储介质
CN104750720A (zh) 多线程并发访问环境下高性能数据处理的实现
CN108959587B (zh) 基于列存储的数据更新方法、装置、服务器及存储介质
CN110096509A (zh) 大数据环境下实现历史数据拉链表存储建模处理的系统及方法
TW201514734A (zh) 資料庫管理方法、資料庫管理系統,以及資料庫樹狀結構
KR20190063835A (ko) 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템
CN113868028A (zh) 一种在数据节点上回放日志的方法、数据节点及系统
CN112269802A (zh) 一种基于Clickhouse频繁删改查优化的方法及系统
CN113505178B (zh) 一种基于数据双写的票据同步方法及终端
WO2023197865A1 (zh) 一种信息存储方法及装置
CN110046172B (zh) 在线计算数据处理方法及系统
CN113934797A (zh) 一种银行业超大数据同步方法和系统
CN109358817B (zh) 用于复制数据的方法、装置和系统
CN113051274B (zh) 一种海量标签存储系统及方法
CN115827660B (zh) 数据更新方法、装置、电子设备及非易失性存储介质
CN115544096B (zh) 数据查询方法、装置、计算机设备及存储介质
US20230325382A1 (en) Horizontal processing of sequential data (hpsd), and detached field batch process (dfbp)
CN115756960B (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