CN113377757B - 数据对账方法、装置、电子设备及机器可读存储介质 - Google Patents
数据对账方法、装置、电子设备及机器可读存储介质 Download PDFInfo
- Publication number
- CN113377757B CN113377757B CN202110706474.8A CN202110706474A CN113377757B CN 113377757 B CN113377757 B CN 113377757B CN 202110706474 A CN202110706474 A CN 202110706474A CN 113377757 B CN113377757 B CN 113377757B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- database
- target data
- target
- 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.)
- Active
Links
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/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/2365—Ensuring data consistency and integrity
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据对账方法、装置、电子设备及机器可读存储介质,所述方法应用于数据读取节点;数据库中存储有数据集与数据集描述信息之间的对应关系;所述方法包括:响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集和对应的数据集描述信息;响应于读取到所述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;如果不一致,则确定与所述目标数据集对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将所述目标数据集重新写入所述数据库。
Description
技术领域
本申请涉及数据对账技术领域,尤其涉及一种数据对账方法、装置、电子设备及机器可读存储介质。
背景技术
在分布式服务架构中,随着业务数据的处理链路越来越长,在进行跨部门、跨层级的数据交换时,数据可能会流经若干数据节点。针对多个数据节点之间需要交换的数据,各数据节点需要及时地进行数据对账,来检测是否存在数据丢失、传输错误等情况。
在实际应用中,各个数据节点之间进行数据对账时,可以创建一个用于数据对账的线程,并为其设置定时任务,以使该线程在预设的时间点,针对数据链路中的各个数据节点生成镜像,再通过对比各个镜像,来确定是否存在数据错漏的情况,以及确定在哪个数据节点出现了数据错漏。
由此可见,现有的数据对账方法存在滞后性,无法及时地发现不同的数据节点之间出现数据错漏的情况。
发明内容
本申请提供一种数据对账方法,应用于数据读取节点;数据写入节点将数据集写入数据库;所述数据集中包括一条或多条数据;所述数据库中存储有数据集与数据集描述信息之间的对应关系;所述方法包括:
响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集和对应的数据集描述信息;
响应于读取到所述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;
确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;
如果不一致,则确定与所述目标数据集对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将所述目标数据集重新写入所述数据库。
可选的,所述数据集描述信息包括:数据集中的数据条数和/或数据集的数据校验和。
可选的,所述数据写入节点按照不同的批次将数据写入所述数据库;不同的数据集中包括不同批次的数据;所述数据库中还存储有数据集与批次编号之间的对应关系;
所述响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集和对应的数据集描述信息,包括:
响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号;
所述如果不一致,则确定与所述目标数据集对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将所述目标数据集重新写入所述数据库,包括:
如果不一致,则确定与所述批次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库。
可选的,所述数据库中还存储有数据集、批次编号、与轮次编号之间的对应关系;
所述响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号,包括:
响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、以及与所述目标数据集对应的数据集描述信息、批次编号、和轮次编号;
所述如果不一致,则确定与所述批次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库,包括:
如果不一致,则确定与所述批次编号和所述轮次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库,并将所述批次编号作为与重新写入的目标数据集对应的批次编号,将所述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
本申请还提供另一种数据对账方法,应用于数据写入节点;所述数据写入节点将数据集写入数据库;所述数据集中包括一条或多条数据;所述数据库中存储有数据集与数据对账结果之间的对应关系;所述方法包括:
响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果;
如果所述数据对账结果为失败,则将所述目标数据集重新写入所述数据库。
可选的,所述数据写入节点按照不同的批次将数据写入所述数据库;不同的数据集中包括不同批次的数据;所述数据库中还存储有数据集与批次编号之间的对应关系;
所述响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果,包括:
响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号;
所述如果所述数据对账结果为失败,则将所述目标数据集重新写入所述数据库,包括:
如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库。
可选的,所述数据库中还存储有数据集、批次编号、与轮次编号之间的对应关系;
所述响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号,包括:
响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号和轮次编号;
所述如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库,包括:
如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库,并将所述批次编号作为与重新写入的目标数据集对应的批次编号,将所述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
可选的,在将与所述批次编号对应的目标数据集重新写入所述数据库之前,还包括:
确定所述轮次编号是否达到预设阈值;
如果未达到,则进一步地将与所述批次编号对应的目标数据集重新写入所述数据库;否则,确定与所述批次编号对应的目标数据集出现错误。
本申请还提供一种数据对账装置,应用于数据读取节点;数据写入节点将数据集写入数据库;所述数据集中包括一条或多条数据;所述数据库中存储有数据集与数据集描述信息之间的对应关系;所述装置包括:
读取单元,用于响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集和对应的数据集描述信息;
计算单元,用于响应于读取到所述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;
数据对账单元,用于确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;如果不一致,则确定与所述目标数据集对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将所述目标数据集重新写入所述数据库。
本申请还提供另一种数据对账装置,应用于数据写入节点;所述数据写入节点将数据集写入数据库;所述数据集中包括一条或多条数据;所述数据库中存储有数据集与数据对账结果之间的对应关系;所述装置包括:
读取单元,用于响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果;
写入单元,用于如果所述数据对账结果为失败,则将所述目标数据集重新写入所述数据库。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述任一数据对账方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述任一数据对账方法。
通过以上实施例,一方面,数据读取节点响应于数据写入节点将目标数据集写入数据库,可以从数据库中读取所述目标数据集和对应的数据集描述信息,并计算与读取到的目标数据集对应的数据集描述信息,进一步地,如果读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与所述目标数据集对应的数据对账结果为失败;因此,对于数据链路中的每个数据读取节点而言,在读取目标数据集的同时,就可以进行数据对账,从而在数据写入节点与数据读取节点之间出现数据错漏时能够及时发现。
另一方面,数据写入节点响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,可以从数据库中读取所述数据对账结果,如果读取到的数据对账结果为失败,则将所述目标数据集重新写入数据库;因此,根据数据读取节点获得的数据对账结果,数据写入节点可以及时解决数据对账过程中出现的问题,从而保证数据链路中各节点的数据一致性和完整性。
附图说明
图1是一示例性的实施例示出的一种数据对账方法的流程图;
图2是一示例性的实施例示出的另一种数据对账方法的流程图;
图3是一示例性的实施例示出的一种数据对账装置所在电子设备的硬件结构图;
图4是一示例性的实施例示出的一种数据对账装置的框图;
图5是一示例性的实施例示出的另一种数据对账装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对本说明书实施例涉及的数据对账的相关技术,进行简要说明。
在分布式服务架构中,数据可能会流经若干数据节点;为了保证数据链路中各个数据节点之间的数据一致性,各个数据节点之间需要进行数据对账,来检测是否存在数据丢失、传输错误等情况。
在实际应用中,各个数据节点之间进行数据对账时,可以在预设的时间点,针对数据链路中的各个数据节点生成镜像,再通过对比生成的各个镜像,来确定是否存在数据错漏的情况,以及确定在哪个数据节点出现了数据错漏。
由此可见,在数据链路中的各个数据节点之间进行海量数据交换的场景中,以上示出的数据对账方法存在一定的滞后性,无法及时地发现各个数据节点之间出现数据错漏的情况,也无法及时地解决数据对账失败的问题。
有鉴于此,本说明书旨在提出一种数据读取节点响应于数据写入节点将目标数据集写入数据库,在从数据库中读取上述目标数据集的同时,针对上述目标数据集进行数据对账的技术方案。
在实现时,数据写入节点将数据集写入数据库;上述数据集中包括一条或多条数据;上述数据库中存储有数据集与数据集描述信息之间的对应关系;数据读取节点可以响应于数据写入节点将目标数据集写入数据库,从数据库中读取上述目标数据集和对应的数据集描述信息;
进一步地,上述数据读取节点可以响应于读取到上述目标数据集,计算与读取到的目标数据集对应的数据集描述信息,并确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;
进一步地,如果上述数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与上述目标数据集对应的数据对账结果为失败,并将上述数据对账结果写入数据库,以使上述数据写入节点在从数据库中读取到上述数据对账结果时,将上述目标数据集重新写入数据库。
由此可见,在本说明书中的技术方案中,一方面,数据读取节点响应于数据写入节点将目标数据集写入数据库,可以从数据库中读取上述目标数据集和对应的数据集描述信息,并计算与读取到的目标数据集对应的数据集描述信息,进一步地,如果读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与上述目标数据集对应的数据对账结果为失败;因此,对于数据链路中的每个数据读取节点而言,在读取目标数据集的同时,就可以进行数据对账,从而在数据写入节点与数据读取节点之间出现数据错漏时能够及时发现。
另一方面,数据写入节点响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,可以从数据库中读取上述数据对账结果,如果读取到的数据对账结果为失败,则将上述目标数据集重新写入数据库;因此,根据数据读取节点获得的数据对账结果,数据写入节点可以及时解决数据对账过程中出现的问题,从而保证数据链路中各节点的数据一致性和完整性。
下面通过具体实施例,并结合具体的应用场景对本申请进行描述。
请参见图1,图1是一示例性的实施例示出的一种数据对账方法的流程图,上述方法应用于数据读取节点,上述方法执行以下步骤:
步骤102:响应于数据写入节点将目标数据集写入数据库,从上述数据库中读取上述目标数据集和对应的数据集描述信息;
步骤104:响应于读取到上述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;
步骤106:确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;
步骤108:如果不一致,则确定与上述目标数据集对应的数据对账结果为失败,并将上述数据对账结果写入上述数据库,以使上述数据写入节点在从上述数据库中读取到上述数据对账结果时,将上述目标数据集重新写入上述数据库。
在本说明书中,上述数据写入节点,可以包括数据链路中的将数据写入数据库的数据节点;上述数据读取节点,可以包括数据链路中的从数据库中读取数据的数据节点。
其中,上述数据节点可以通过硬件、软件、或者软硬件结合的方式实现,本说明书中不做限定;在实际应用中,上述数据节点可以包括一台服务器或者多台服务器形成的服务器集群,也可以包括节点设备上搭载的用于数据对账的软件,也可以包括上述二者的结合。
例如,数据写入节点具体可以包括与数据提供方对应的节点设备,数据读取节点具体可以包括与数据使用方对应的节点设备。
需要说明的是,上述数据写入节点和上述数据读取节点,可以分别属于数据链路中的上、下游节点,从而形成配合关系,也即,上述数据读取节点可以获取到上述数据写入节点提供的数据。
在本说明书中,上述数据写入节点可以将数据集写入数据库;其中,上述数据集中可以包括一条或多条数据。
例如,数据写入节点需要将1000条数据写入数据库时,可以将上述1000条数据作为一个数据集写入数据库,也可以将上述1000条数据划分为多个数据集分别写入数据库。
在本说明书中,上述数据集描述信息,可以包括用于针对数据集中的数据进行数据对账的信息。
例如,数据集描述信息,具体可以包括但不限于数据集的属性信息、元数据等等。
在示出的一种实施方式中,上述数据集描述信息,可以包括以下示出的任一:数据集中的数据条数,数据集的数据校验和,数据集中的数据条数和数据集的数据校验和。
需要说明的是,在以上示出的实施方式中,上述数据集描述信息为数据集中的数据条数、和/或数据集的数据校验和时,上述数据集描述信息易于计算,且占用内存小,有利于提高数据对账的效率;另外,上述数据集描述信息中包含的信息越多,可以获得的数据对账结果就越可靠;在实际应用中,除了以上示出的数据条数和数据校验和,本领域技术人员还可以根据需求,灵活地采用其他的数据集描述信息,本说明书不做限制。
在本说明书中,在上述数据写入节点将数据集写入数据库之后,上述数据库中可以存储有数据集与数据集描述信息之间的对应关系。
在实际应用中,上述数据库中存储的与数据集对应的数据集描述信息,可以包括由上述数据写入节点计算得出并写入上述数据库的、与上述数据集对应的数据集描述信息,也可以包括由上述数据库根据上述数据写入节点写入的上述数据集、计算得出并存储的对应的数据集描述信息,本领域技术人员可以根据需求进行设置,本说明书不做限定。
需要说明的是,上述数据库可以位于数据链路中的任一数据节点(也即上述数据写入节点或上述数据读取节点),也可以位于其他服务端,本说明书中不做限定;另外,上述数据写入节点和上述数据读取节点均可以针对上述数据库执行读操作和写操作。
在本说明书中,上述目标数据集,可以包括上述数据写入节点已写入上述数据库的、且上述数据读取节点未读取的数据集,可以理解为,上述数据库中需要进行数据对账的数据集。
在本说明书中,上述数据读取节点响应于上述数据写入节点将目标数据集写入上述数据库,可以从上述数据库中读取上述目标数据集、以及与上述目标数据集对应的数据集描述信息。
在实现时,响应于数据写入节点将目标数据集写入上述数据库,可以理解为,上述数据读取节点可以对上述数据库进行实时监控,当上述数据写入节点将一个数据集写入上述数据库时,上述数据读取节点可以将上述新写入的数据集作为目标数据集;也可以理解为,上述数据读取节点可以按照预设周期(预设周期可以很小,如:秒级),周期性地检测上述数据库中是否存在上述数据写入节点已写入的、且上述数据读取节点未读取的数据集,并可以将上述检测到的、符合条件的若干数据集作为目标数据集。
例如,数据读取节点响应于数据写入节点将目标数据集写入数据库,可以从数据库中读取上述目标数据集,以及根据数据库中存储的数据集与数据集描述信息之间的对应关系,可以从数据库中读取与上述目标数据集对应的数据集描述信息。
在本说明书中,上述数据读取节点响应于读取到上述目标数据集,可以计算与读取到的目标数据集对应的数据集描述信息。
例如,数据读取节点响应于从数据库中读取到目标数据集,可以基于读取到的上述目标数据集,计算对应的数据集描述信息。
在实际应用中,由于数据丢包、磁盘损坏等原因,在上述数据写入节点将目标数据集写入数据库的过程中、或者在上述数据读取节点从数据库中读取目标数据集的过程中、或者在目标数据集传输的过程中,可能出现数据错漏的情况;因此,对于同一个目标数据集,数据写入节点存储在本地的目标数据集、与数据写入节点实际写入数据库的目标数据集中的数据内容,可能并不相同,数据写入节点实际写入数据库的目标数据集中的数据内容、与数据节点从数据库中读取到的目标数据集中的数据内容也可能并不相同;进而,数据库中存储的与目标数据集对应的数据集描述信息、与数据读取节点基于从数据库中读取到的目标数据集计算得到的数据集描述信息可能也不相同。
需要说明的是,关于计算与目标数据集对应的数据集描述信息的具体方式,如统计目标数据集中的数据条数、或计算目标数据集的数据校验和等,请参见相关技术,在此不再赘述。
在本说明书中,上述数据读取节点在从上述数据库中读取到与上述目标数据集对应的数据集描述信息,并且计算得到与读取到的目标数据集对应的数据集描述信息之后,可以进一步地确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致。
在实际应用中,上述数据读取节点可以通过确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致,来判断上述数据写入节点写入数据库的目标数据集与上述数据读取节点从数据库中读取到的目标数据集是否一致,也即,判断是否出现数据错漏的情况。
例如,数据读取节点可以确定从数据库中读取到的与目标数据集对应的数据集描述信息、与基于读取到的目标数据集计算得出的数据集描述信息是否一致。
在本说明书中,如果上述数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与上述目标数据集对应的数据对账结果为失败;如果上述数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息一致,则可以确定与上述目标数据集对应的数据对账结果为成功;进一步地,上述数据读取节点可以将上述数据对账结果写入上述数据库。
例如,如果数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息不一致,说明数据写入节点写入数据库的目标数据集与数据读取节点从数据库中读取到的目标数据集不一致,则可以确定与目标数据集对应的数据对账结果为失败,并可以将上述失败的数据对账结果写入数据库。
又例如,如果数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息一致,说明数据写入节点写入数据库的目标数据集与数据读取节点从数据库中读取到的目标数据集一致,则可以确定与目标数据集对应的数据对账结果为成功,并可以将上述成功的数据对账结果写入数据库。
需要说明的是,在以上示出的实施例中,上述数据对账结果为失败或成功,并不局限于上述数据库中用于记录数据对账结果的字段值为“成功”或“失败”,可以理解为,上述数据读取节点写入数据库的上述数据对账结果,包括用于指示数据对账成功或数据对账失败的字段值;在实际应用中,上述字段值可以由本领域技术人员根据需求灵活设置,本说明书不做限制,例如,也可以用字段值“1”指示数据对账成功,用字段值“0”指示数据对账失败。
进一步地,在上述数据读取节点将上述数据对账结果写入上述数据库之后,上述数据库中可以存储有数据集与数据对账结果之间的对应关系。
在本说明书中,上述数据写入节点响应于上述数据读取节点将与上述目标数据集对应的数据对账结果写入数据库,可以从上述数据库中读取上述数据对账结果。
在实现时,上述数据写入节点可以对数据库进行实时监控,当监控到上述数据读取节点将与上述目标数据集对应的数据对账结果写入数据库时,可以读取上述数据对账结果;上述数据写入节点还可以按照预设周期(预设周期可以很小),周期性地检测数据库中是否存在上述数据读取节点新写入的数据对账结果,并可以读取上述数据读取节点新写入的数据对账结果。
例如,数据写入节点响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,可以从数据库中读取上述数据对账结果,上述数据对账结果可能为用于指示数据对账成功或数据对账失败的字段值。
在本说明书中,如果上述数据写入节点读取到的数据对账结果为失败,则可以将上述目标数据集重新写入上述数据库。
例如,如果数据写入节点读取到的数据对账结果为用于指示数据对账失败的字段值,说明数据写入节点写入数据库的目标数据集与数据读取节点从数据库中读取到的目标数据集不一致,也即,出现了数据错漏的情况;因此,数据写入节点可以将上述目标数据集重新写入数据库,以使数据读取节点可以读取数据写入节点重新写入数据库的目标数据集,并针对重新写入的目标数据集和重新读取的目标数据集进行数据对账。
在实际应用中,如果上述数据写入节点读取到的数据对账结果为成功,说明上述数据写入节点与上述数据读取节点之间没有出现数据的一致性问题,则可以认为针对上述目标数据集的数据对账已完成,也无需进行其他处理。
需要说明的是,由于大多数失败的数据对账结果,都是在数据读写或数据传输的过程中出现数据错漏导致的,因此,如果与上述目标数据集对应的数据对账结果为失败,通过数据写入节点重新将上述目标数据集写入数据库、并且数据读取节点读取上述重新写入的目标数据集并进行数据对账,可以解决大多数的数据对账失败问题,无需人工介入。
请参见图2,图2是一示例性的实施例示出的另一种数据对账方法的流程图,上述方法应用于数据写入节点,上述方法执行以下步骤:
步骤202:响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从上述数据库中读取上述数据对账结果;
步骤204:如果上述数据对账结果为失败,则将上述目标数据集重新写入上述数据库。
在本说明书中,上述步骤202-步骤204的具体实现方式,与上述步骤108的具体实现方式相似,请参见本说明书中关于步骤108的实施例,在此不再赘述。
通过以上技术方案可知,一方面,数据读取节点响应于数据写入节点将目标数据集写入数据库,可以从数据库中读取上述目标数据集和对应的数据集描述信息,并计算与读取到的目标数据集对应的数据集描述信息,进一步地,如果读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与上述目标数据集对应的数据对账结果为失败;因此,对于数据链路中的每个数据读取节点而言,在读取目标数据集的同时,就可以进行数据对账,从而在数据写入节点与数据读取节点之间出现数据错漏时能够及时发现。
另一方面,数据写入节点响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,可以从数据库中读取上述数据对账结果,如果读取到的数据对账结果为失败,则将上述目标数据集重新写入数据库;因此,根据数据读取节点获得的数据对账结果,数据写入节点可以及时解决数据对账过程中出现的问题,从而保证数据链路中各节点的数据一致性和完整性。
在示出的一种实施方式中,上述数据写入节点可以按照不同的批次,将数据写入上述数据库;其中,不同的数据集中包括不同批次的数据,也即,同一个数据集中可以包括同一批次写入数据库的若干条数据。
下面以不同的数据集中包括不同批次的数据、且上述数据集描述信息包括数据集中的数据条数和数据集的数据校验和为例,结合具体的应用场景对上述数据对账方法进行描述。
在实现时,上述数据库中还可以存储有数据集与批次编号之间的对应关系;具体地,上述数据库可以通过数据表来维护批次编号与数据之间的对应关系,还可以通过对账表来维护批次编号与数据集描述信息之间的对应关系,进而实现维护批次编号、数据集、与数据集描述信息之间的对应关系;其中,上述数据表,请参见表1所示例,上述对账表,请参见表2所示例。
批次编号 | 数据 |
DT202105010001 | d1 |
DT202105010001 | d2 |
DT202105010001 | …… |
DT202105010001 | d1000 |
…… | …… |
表1
批次编号 | 数据条数 | 数据校验和 |
DT202105010001 | 1000 | a |
…… | …… | …… |
表2
例如,数据库中存储有数据表和对账表,其中,数据表可以用于记录数据写入节点写入数据库中的数据集,对账表可以用于记录与写入的数据集对应的数据集描述信息;数据集DS1中包括1000条数据,分别为d1、d2、……、d1000,数据写入节点可以将数据集DS1中包括的1000条数据、以及与数据集DS1对应的批次编号“DT202105010001”,分别写入如表1所示的数据表中,并将与数据集DS1对应的批次编号“DT202105010001”、与数据集DS1对应的数据条数“1000”、以及与数据集DS1对应的数据校验和“a”,写入如表2所示的对账表中。
需要说明的是,在以上示出的实施例中,批次编号为“DT202105010001”仅仅是一种示例性的描述,关于上述批次编号的具体编号方式,本说明书不做限制;在实际应用中,上述批次编号可以由上述数据写入节点生成,用于唯一标识不同批次的数据。
另外,需要说明的是,上述数据表、对账表除了可以记录批次编号、数据集和数据集描述信息之外,还可以记录与数据集对应的写入时间、数据表项的序号、对账表项的序号等,本领域技术人员可以根据需求,在上述数据表、对账表中添加其他字段,本说明书不做限制。
在以上示出的实施方式中,上述数据读取节点响应于上述数据写入节点将目标数据集写入上述数据库,可以从上述数据库中读取上述目标数据集、与上述目标数据集对应的数据集描述信息、以及与上述目标数据集对应的批次编号。
例如,响应于数据写入节点将批次编号为“DT202105010001”的目标数据集DS1写入数据库,数据读取节点可以从如表1所示的数据表中读取目标数据集DS1中包括的数据d1、d2、……、d1000、以及对应的批次编号“DT202105010001”,并且根据读取到的上述批次编号,可以从如表2所示的对账表中读取与批次编号“DT202105010001”对应(也即与目标数据集DS1对应)的数据条数“1000”、以及与目标数据集DS1对应的数据校验和“a”。
又例如,响应于数据写入节点将目标数据集DS1、以及对应的批次编号“DT202105010001”写入如表1所示的数据表中,并且将批次编号“DT202105010001”、对应的数据条数“1000”、以及对应的数据校验和“a”写入如表2所示的对账表中,数据读取节点可以先从如表2所示的对账表中,读取与目标数据集DS1对应的批次编号“DT202105010001”、数据条数“1000”、以及数据校验和“a”,再从如表1所示的数据表中读取与批次编号“DT202105010001”对应的全部数据,即d1、d2、……、d1000。
进一步地,在以上示出的实施方式中,上述数据读取节点响应于读取到上述目标数据集,可以计算与读取到的目标数据集对应的数据集描述信息,并确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致。
例如,数据读取节点响应于从如表1所示的数据表中读取到与批次编号“DT202105010001”对应的全部数据,可以基于读取到的与目标数据集DS1对应的DS1’(DS1’用于表示数据读取节点实际读取到的目标数据集,也即,DS1’中可以包括上述读取到的与批次编号“DT202105010001”对应的全部数据),计算与DS1’对应的数据校验和a’,并统计与DS1’对应的数据条数;进一步地,数据读取节点可以确定从如表2所示的对账表中读取到的数据条数“1000”与上述统计得到的DS1’对应的数据条数是否一致,以及确定读取到的数据校验和a与上述计算得到的数据校验和a’是否一致。
进一步地,在以上示出的实施方式中,如果上述数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与上述批次编号对应的数据对账结果为失败,并可以将上述数据对账结果写入上述数据库。
例如,如果数据读取节点读取到的DS1对应的数据条数“1000”与统计得到的DS1’对应的数据条数不一致,或者读取到的数据集校验和a与计算得到的数据集校验和a’不一致,或者上述二者均不一致,则可以确定与批次编号“DT202105010001”对应的数据对账结果为失败,也即与目标数据集DS1对应的数据对账结果为失败,并可以将对应的数据对账结果写入数据库。
又例如,如果数据读取节点读取到的DS1对应的数据条数“1000”与统计得到的DS1’对应的数据条数、以及读取到的数据集校验和a与计算得到的数据集校验和a’均一致,则可以确定与批次编号“DT202105010001”对应的数据对账结果为成功,也即与目标数据集DS1对应的数据对账结果为成功,并可以将对应的数据对账结果写入数据库。
在实现时,上述数据库中还可以存储有数据集与数据对账结果之间的对应关系;具体地,上述数据库可以通过回执表来维护批次编号与数据对账结果之间的对应关系,进而实现维护数据集与数据对账结果之间的对应关系;其中,上述回执表,请参见表3所示例。
批次编号 | 数据对账结果 |
DT202105010001 | 失败 |
…… | …… |
表3
例如,数据库中存储有回执表,回执表可以用于记录数据读取节点获取到的、与数据写入节点写入数据库的数据集对应的数据对账结果;如果数据读取节点确定与目标数据集DS1对应的数据对账结果为失败,则可以将与目标数据集DS1对应的批次编号“DT202105010001”和数据对账结果“失败”,写入如表3所示的回执表中。
进一步地,在以上示出的实施方式中,上述数据写入节点响应于上述数据读取节点将与上述批次编号对应的数据对账结果写入数据库,可以从上述数据库中读取上述数据对账结果、以及与上述目标数据集对应的批次编号。
例如,数据写入节点响应于数据读取节点将与目标数据集DS1对应的数据对账结果写入如表3所示的回执表,可以从上述回执表中读取到与目标数据集DS1对应的批次编号“DT202105010001”、以及对应的数据对账结果“失败”。
进一步地,在以上示出的实施方式中,如果上述数据写入节点读取到的数据对账结果为失败,则可以将与上述批次编号对应的目标数据集重新写入上述数据库。
例如,当数据写入节点从如表3所示的回执表中读取到的数据对账结果“失败”用于指示数据对账失败时,可以将与从如表3所示的回执表中读取到的批次编号“DT202105010001”对应的目标数据集DS1,重新写入如表1所示的数据表中。
需要说明的是,在以上示出的实施方式中,上述数据写入节点将与上述批次编号对应的目标数据集重新写入上述数据库时,可以继续采用原先的批次编号来标识上述目标数据集,以使数据读取节点在针对重新写入的目标数据集进行数据对账时,可以得知之前已对上述目标数据集进行过数据对账;上述数据写入节点也可以在读取到的数据对账结果为失败时,直接删除之前写入数据库中的上述目标数据集,并为上述目标数据集生成新的批次编号,重新写入上述数据库。
另外,需要说明的是,在以上示出的实施方式中,在数据链路中的各个数据节点之间进行海量数据交换的场景中,数据读取节点可以按照不同的批次进行数据对账,从而在数据写入节点与数据读取节点之间出现数据错漏时能够及时发现,并且可以及时解决数据对账过程中出现的问题,保证数据链路中各节点的数据一致性和完整性。
在示出的另一种实施方式中,为了保证上述数据写入节点写入上述数据库中的每批数据都可以及时地完成数据对账、并且及时地解决数据对账过程中出现的问题,还可以在上述数据库中额外记录与数据集对应的轮次编号。
下面以上述数据集描述信息包括数据集的数据校验和为例,结合具体的应用场景对上述数据对账方法进行描述。
在实现时,上述数据库中还可以存储有数据集、批次编号、与轮次编号之间的对应关系;具体地,上述数据库可以通过如表4所示的数据表来维护批次编号、轮次编号与数据之间的对应关系;相应地,上述数据库可以通过如表5所示的对账表来维护批次编号、轮次编号与数据集描述信息之间的对应关系,进而实现维护批次编号、轮次编号、数据集、与数据集描述信息之间的对应关系。
批次编号 | 轮次编号 | 数据 |
DT202105010001 | 1 | d1 |
DT202105010001 | 1 | d2 |
DT202105010001 | 1 | …… |
DT202105010001 | 1 | d1000 |
…… | …… | …… |
表4
批次编号 | 轮次编号 | 数据校验和 |
DT202105010001 | 1 | a |
…… | …… | …… |
表5
其中,如表4所示,数据集DS1中可以包括1000条数据,分别为d1、d2、……、d1000,与数据集DS1对应的批次编号为“DT202105010001”、轮次编号为“1”,说明批次编号“DT202105010001”的数据集DS1是第一次写入上述数据表,也即,是第一次写入上述数据库。
需要说明的是,轮次编号的具体形式为“1”,仅仅是一种示例性的描述,并不对本说明书做限制;在实际应用中,上述轮次编号可以由上述数据写入节点生成,用于标识数据写入节点将对应批次的数据写入数据库的次数。
在以上示出的实施方式中,上述数据读取节点响应于上述数据写入节点将上述目标数据集写入上述数据库,可以从上述数据库中读取上述目标数据集、与上述目标数据集对应的批次编号、与上述目标数据集对应的轮次编号、以及与上述目标数据集对应的数据集描述信息。
例如,响应于数据写入节点第一次将批次编号为“DT202105010001”的目标数据集DS1写入数据库,数据读取节点可以从如表4所示的数据表中读取目标数据集DS1中包括的数据d1、d2、……、d1000、对应的批次编号“DT202105010001”、以及对应的轮次编号“1”,并且根据读取到的上述批次编号和轮次编号,可以从如表5所示的对账表中读取与上述批次编号和轮次编号对应(也即与目标数据集DS1对应)的数据校验和“a”。
又例如,响应于数据写入节点将目标数据集DS1、对应的批次编号“DT202105010001”、以及对应的轮次编号“1”写入如表4所示的数据表中,并且将批次编号“DT202105010001”、轮次编号“1”、以及对应的数据校验和“a”写入如表5所示的对账表中,数据读取节点可以先从如表5所示的对账表中,读取与目标数据集DS1对应的批次编号“DT202105010001”、轮次编号“1”、以及数据校验和“a”,再从如表4所示的数据表中读取与批次编号“DT202105010001”和轮次编号“1”对应的全部数据,即d1、d2、……、d1000。
进一步地,在以上示出的实施方式中,上述数据读取节点响应于读取到上述目标数据集,可以计算与读取到的目标数据集对应的数据集描述信息,并确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致。
例如,数据读取节点响应于从如表4所示的数据表中读取到与批次编号“DT202105010001”和轮次编号“1”对应的全部数据,可以基于读取到的与目标数据集DS1对应的DS1’(DS1’中可以包括上述读取到的与批次编号“DT202105010001”和轮次编号“1”对应的全部数据),计算与DS1’对应的数据校验和a’;进一步地,数据读取节点可以确定从如表5所示的对账表中读取到的数据集校验和a与上述计算得到的数据集校验和a’是否一致。
进一步地,在以上示出的实施方式中,如果上述数据读取节点读取到的数据集描述信息与计算得到的数据集描述信息不一致,则可以确定与上述批次编号和上述轮次编号对应的数据对账结果为失败,并可以将上述数据对账结果写入上述数据库。
例如,如果数据读取节点读取到的数据集校验和a与计算得到的数据集校验和a’不一致,则可以确定与批次编号“DT202105010001”和轮次编号“1”对应的数据对账结果为失败,也即与目标数据集DS1对应的数据对账结果为失败,并可以将对应的数据对账结果写入数据库。
又例如,如果数据读取节点读取到的数据集校验和a与计算得到的数据集校验和a’一致,则可以确定与批次编号“DT202105010001”和轮次编号“1”对应的数据对账结果为成功,也即与目标数据集DS1对应的数据对账结果为成功,并可以将对应的数据对账结果写入数据库。
在实现时,上述数据库可以通过如表6所示的回执表来维护批次编号、轮次编号与数据对账结果之间的对应关系,进而实现维护数据集与数据对账结果之间的对应关系。
批次编号 | 轮次编号 | 数据对账结果 |
DT202105010001 | 1 | 失败 |
…… | …… | …… |
表6
进一步地,在以上示出的实施方式中,上述数据写入节点响应于上述数据读取节点将与上述批次编号和上述轮次编号对应的数据对账结果写入数据库,可以从上述数据库中读取上述数据对账结果、以及与上述目标数据集对应的批次编号和轮次编号。
例如,数据写入节点响应于数据读取节点将与目标数据集DS1对应的数据对账结果写入如表6所示的回执表,可以从上述回执表中读取到与目标数据集DS1对应的批次编号“DT202105010001”、轮次编号“1”以及对应的数据对账结果“失败”。
进一步地,在以上示出的实施方式中,如果上述数据写入节点读取到的数据对账结果为失败,则可以将与上述批次编号对应的目标数据集重新写入上述数据库,并将上述批次编号作为与重新写入的目标数据集对应的批次编号,将上述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
例如,当数据写入节点从如表6所示的回执表中读取到的数据对账结果“失败”用于指示数据对账失败时,可以将与从如表6所示的回执表中读取到的批次编号“DT202105010001”对应的目标数据集DS1,重新写入如表4所示的数据表中,并且,与重新写入的目标数据集DS1对应的批次编号仍为“DT202105010001”,与重新写入的目标数据集DS1对应的轮次编号为“2”,用于表示该批次的数据已经是第二次写入数据库中。
在实际应用中,数据对账过程中出现的问题可能是通过重新写入无法解决的问题,如数据读写或数据对账的应用程序出现错误、数据写入节点与数据读取节点所采用的数据格式无法兼容等因素导致的数据对账失败;此时,为了避免上述数据写入节点自动针对与失败的数据对账结果对应的目标数据集执行重新写入,导致系统资源浪费,甚至导致程序陷入死循环,可以在数据写入节点将上述目标数据集重新写入数据库之前,先判断该批次的数据写入数据库的次数是否达到阈值。
在实现时,上述数据写入节点在将与上述批次编号对应的目标数据集重新写入上述数据库之前,还可以确定上述轮次编号是否达到预设阈值;如果上述轮次编号未达到预设阈值,则进一步地将与上述批次编号对应的目标数据集重新写入上述数据库;如果上述轮次编号已达到预设阈值,则可以确定与上述批次编号对应的目标数据集出现错误。
例如,如果数据写入节点从如表6所示的回执表中,读取到与批次编号“DT202105010001”和轮次编号“1”对应的数据对账结果为“失败”,可以先确定上述轮次编号是否达到预设阈值;如果预设阈值为3,则上述轮次编号未达到预设阈值,可以进一步地将与批次编号“DT202105010001”对应的目标数据集DS1,重新写入如表4所示的数据表中,并且,与重新写入的目标数据集DS1对应的批次编号仍为“DT202105010001”,与重新写入的目标数据集DS1对应的轮次编号为“2”。
又例如,如果数据写入节点读取到与批次编号“DT202105010001”和轮次编号“3”对应的数据对账结果为“失败”,并且预设阈值为3,上述轮次编号已达到预设阈值,说明数据写入节点将上述目标数据集写入数据库中的次数已经达到3次(即重新写入的次数已经达到2次),通过将上述目标数据集重新写入数据库可能无法解决数据对账失败的问题,则可以确定与批次编号“DT202105010001”对应的目标数据集DS1出现错误。
进一步地,上述数据库中还可以维护一张错误表,用于记录对应的数据对账结果为失败、且无法通过重新写入解决问题的数据集或批次编号,以使本领域技术人员可以采用人工方式,针对上述错误表中记录的数据集或者批次编号对应的数据进一步处理。
另外,需要说明的是,在以上示出的实施方式中,上述数据库可以分别维护上述数据表、对账表、回执表、错误表,也可以通过一张表来维护上述各表中所记录的信息,以上示出的仅仅是示例性的实施例,本说明书中不做特别限定。
与上述数据对账方法的实施例对应的,本说明书还提供了一种数据对账装置的实施例。
请参见图3,图3是一示例性的实施例示出的一种数据对账装置所在电子设备的硬件结构图。在硬件层面,该设备包括处理器302、内部总线304、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参见图4,图4是一示例性的实施例示出的一种数据对账装置的框图。该数据对账装置可以应用于图3所示的电子设备中,以实现本说明书的技术方案。其中,上述数据对账装置应用于数据读取节点,上述装置可以包括:
读取单元402,用于响应于数据写入节点将目标数据集写入数据库,从上述数据库中读取上述目标数据集和对应的数据集描述信息;
计算单元404,用于响应于读取到上述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;
数据对账单元406,用于确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;如果不一致,则确定与上述目标数据集对应的数据对账结果为失败,并将上述数据对账结果写入上述数据库,以使上述数据写入节点在从上述数据库中读取到上述数据对账结果时,将上述目标数据集重新写入上述数据库。
在本实施例中,上述数据集描述信息包括:数据集中的数据条数和/或数据集的数据校验和。
在本实施例中,上述数据写入节点按照不同的批次将数据写入上述数据库;不同的数据集中包括不同批次的数据;上述数据库中还存储有数据集与批次编号之间的对应关系;
上述读取单元402,具体用于响应于数据写入节点将目标数据集写入数据库,从上述数据库中读取上述目标数据集、与上述目标数据集对应的数据集描述信息、以及与上述目标数据集对应的批次编号;
上述数据对账单元404,具体用于如果不一致,则确定与上述批次编号对应的数据对账结果为失败,并将上述数据对账结果写入上述数据库,以使上述数据写入节点在从上述数据库中读取到上述数据对账结果时,将与上述批次编号对应的目标数据集重新写入上述数据库。
在本实施例中,上述数据库中还存储有数据集、批次编号、与轮次编号之间的对应关系;
上述读取单元402,具体用于响应于数据写入节点将目标数据集写入数据库,从上述数据库中读取上述目标数据集、以及与上述目标数据集对应的数据集描述信息、批次编号、和轮次编号;
上述数据对账单元404,具体用于如果不一致,则确定与上述批次编号和上述轮次编号对应的数据对账结果为失败,并将上述数据对账结果写入上述数据库,以使上述数据写入节点在从上述数据库中读取到上述数据对账结果时,将与上述批次编号对应的目标数据集重新写入上述数据库,并将上述批次编号作为与重新写入的目标数据集对应的批次编号,将上述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
请参见图5,图5是一示例性的实施例示出的另一种数据对账装置的框图。该数据对账装置可以应用于图3所示的电子设备中,以实现本说明书的技术方案。其中,上述数据对账装置应用于数据写入节点,上述装置可以包括:
读取单元502,用于响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从上述数据库中读取上述数据对账结果;
写入单元504,用于如果上述数据对账结果为失败,则将上述目标数据集重新写入上述数据库。
在本实施例中,上述数据写入节点按照不同的批次将数据写入上述数据库;不同的数据集中包括不同批次的数据;上述数据库中还存储有数据集与批次编号之间的对应关系;
上述读取单元502,具体用于响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从上述数据库中读取上述数据对账结果、以及与上述目标数据集对应的批次编号;
上述写入单元504,具体用于如果上述数据对账结果为失败,则将与上述批次编号对应的目标数据集重新写入上述数据库。
在本实施例中,上述数据库中还存储有数据集、批次编号、与轮次编号之间的对应关系;
上述读取单元502,具体用于响应于数据读取节点将与目标数据集对应的数据对账结果写入数据库,从上述数据库中读取上述数据对账结果、以及与上述目标数据集对应的批次编号和轮次编号;
上述写入单元504,具体用于如果上述数据对账结果为失败,则将与上述批次编号对应的目标数据集重新写入上述数据库,并将上述批次编号作为与重新写入的目标数据集对应的批次编号,将上述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
在本实施例中,上述写入单元504,还用于:
确定上述轮次编号是否达到预设阈值;
如果未达到,则进一步地将与上述批次编号对应的目标数据集重新写入上述数据库;否则,确定与上述批次编号对应的目标数据集出现错误。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (10)
1.一种数据对账方法,其特征在于,应用于数据链路中的数据读取节点;所述数据链路中的数据写入节点按照不同的批次将数据集写入数据库;所述数据集中包括一条或多条数据;不同的数据集中包括不同批次的数据;所述数据库中存储有数据集与数据集描述信息之间的对应关系,以及数据集与批次编号之间的对应关系;所述方法包括:
响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号;
响应于读取到所述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;
确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;
如果不一致,则确定与所述批次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库。
2.根据权利要求1所述的方法,其特征在于,所述数据集描述信息包括:数据集中的数据条数和/或数据集的数据校验和。
3.根据权利要求1所述的方法,其特征在于,所述数据库中还存储有数据集、批次编号、与轮次编号之间的对应关系;
所述响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号,包括:
响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、以及与所述目标数据集对应的数据集描述信息、批次编号、和轮次编号;
所述如果不一致,则确定与所述批次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库,包括:
如果不一致,则确定与所述批次编号和所述轮次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库,并将所述批次编号作为与重新写入的目标数据集对应的批次编号,将所述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
4.一种数据对账方法,其特征在于,应用于数据链路中的数据写入节点;所述数据写入节点按照不同的批次将数据集写入数据库;所述数据集中包括一条或多条数据;不同的数据集中包括不同批次的数据;所述数据库中存储有数据集与数据对账结果之间的对应关系,以及数据集与批次编号之间的对应关系;所述方法包括:
响应于所述数据链路中的数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号;其中,所述数据对账结果为失败,用于表征所述数据读取节点响应于所述数据写入节点将所述目标数据集写入所述数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号,计算与读取到的目标数据集对应的数据集描述信息,并确定读取到的数据集描述信息与计算得到的数据集描述信息不一致;
如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库。
5.根据权利要求4所述的方法,其特征在于,所述数据库中还存储有数据集、批次编号、与轮次编号之间的对应关系;
所述响应于所述数据链路中的数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号,包括:
响应于所述数据链路中的数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号和轮次编号;
所述如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库,包括:
如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库,并将所述批次编号作为与重新写入的目标数据集对应的批次编号,将所述轮次编号递增后作为与重新写入的目标数据集对应的轮次编号。
6.根据权利要求5所述的方法,其特征在于,在将与所述批次编号对应的目标数据集重新写入所述数据库之前,还包括:
确定所述轮次编号是否达到预设阈值;
如果未达到,则进一步地将与所述批次编号对应的目标数据集重新写入所述数据库;否则,确定与所述批次编号对应的目标数据集出现错误。
7.一种数据对账装置,其特征在于,应用于数据链路中的数据读取节点;所述数据链路中的数据写入节点按照不同的批次将数据集写入数据库;所述数据集中包括一条或多条数据;不同的数据集中包括不同批次的数据;所述数据库中存储有数据集与数据集描述信息之间的对应关系,以及数据集与批次编号之间的对应关系;所述装置包括:
读取单元,用于响应于数据写入节点将目标数据集写入数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号;
计算单元,用于响应于读取到所述目标数据集,计算与读取到的目标数据集对应的数据集描述信息;
数据对账单元,用于确定读取到的数据集描述信息与计算得到的数据集描述信息是否一致;如果不一致,则确定与所述批次编号对应的数据对账结果为失败,并将所述数据对账结果写入所述数据库,以使所述数据写入节点在从所述数据库中读取到所述数据对账结果时,将与所述批次编号对应的目标数据集重新写入所述数据库。
8.一种数据对账装置,其特征在于,应用于数据链路中的数据写入节点;所述数据写入节点按照不同的批次将数据集写入数据库;所述数据集中包括一条或多条数据;不同的数据集中包括不同批次的数据;所述数据库中存储有数据集与数据对账结果之间的对应关系,以及数据集与批次编号之间的对应关系;所述装置包括:
读取单元,用于响应于所述数据链路中的数据读取节点将与目标数据集对应的数据对账结果写入数据库,从所述数据库中读取所述数据对账结果、以及与所述目标数据集对应的批次编号;其中,所述数据对账结果为失败,用于表征所述数据读取节点响应于所述数据写入节点将所述目标数据集写入所述数据库,从所述数据库中读取所述目标数据集、与所述目标数据集对应的数据集描述信息、以及与所述目标数据集对应的批次编号,计算与读取到的目标数据集对应的数据集描述信息,并确定读取到的数据集描述信息与计算得到的数据集描述信息不一致;
写入单元,用于如果所述数据对账结果为失败,则将与所述批次编号对应的目标数据集重新写入所述数据库。
9.一种电子设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1-3或4-6任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1-3或4-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110706474.8A CN113377757B (zh) | 2021-06-24 | 2021-06-24 | 数据对账方法、装置、电子设备及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110706474.8A CN113377757B (zh) | 2021-06-24 | 2021-06-24 | 数据对账方法、装置、电子设备及机器可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377757A CN113377757A (zh) | 2021-09-10 |
CN113377757B true CN113377757B (zh) | 2023-08-25 |
Family
ID=77579004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110706474.8A Active CN113377757B (zh) | 2021-06-24 | 2021-06-24 | 数据对账方法、装置、电子设备及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377757B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108345621A (zh) * | 2017-01-24 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种数据对账方法、系统及数据系统 |
CN110389985A (zh) * | 2019-06-18 | 2019-10-29 | 深圳壹账通智能科技有限公司 | 数据核对方法、装置、计算机设备和存储介质 |
CN111124744A (zh) * | 2019-12-26 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种数据完整性校验方法、系统、电子设备及存储介质 |
CN111241593A (zh) * | 2020-01-02 | 2020-06-05 | 支付宝(杭州)信息技术有限公司 | 用于区块链节点的数据同步方法及装置 |
CN111708755A (zh) * | 2020-05-20 | 2020-09-25 | 北京奇艺世纪科技有限公司 | 数据迁移方法、装置、系统、电子设备以及可读存储介质 |
CN111858139A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种检测静默数据错误的方法及装置 |
WO2021003968A1 (zh) * | 2019-07-09 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 数据核对方法、装置、计算机设备和存储介质 |
WO2021027363A1 (zh) * | 2019-08-15 | 2021-02-18 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10671496B2 (en) * | 2016-05-31 | 2020-06-02 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US20180330412A1 (en) * | 2017-05-11 | 2018-11-15 | Amadeus S.A.S. | Systems and methods for processing and reconciling an invoice data file |
CN107729553A (zh) * | 2017-11-07 | 2018-02-23 | 北京京东金融科技控股有限公司 | 系统数据对账方法及装置、存储介质、电子设备 |
CN110209523A (zh) * | 2019-05-31 | 2019-09-06 | Oppo广东移动通信有限公司 | 数据读写异常处理方法及装置、存储介质和电子设备 |
CN112162976A (zh) * | 2020-09-29 | 2021-01-01 | 北京锐安科技有限公司 | 一种数据对账方法、装置、设备及存储介质 |
-
2021
- 2021-06-24 CN CN202110706474.8A patent/CN113377757B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108345621A (zh) * | 2017-01-24 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种数据对账方法、系统及数据系统 |
CN110389985A (zh) * | 2019-06-18 | 2019-10-29 | 深圳壹账通智能科技有限公司 | 数据核对方法、装置、计算机设备和存储介质 |
WO2021003968A1 (zh) * | 2019-07-09 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 数据核对方法、装置、计算机设备和存储介质 |
WO2021027363A1 (zh) * | 2019-08-15 | 2021-02-18 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN111124744A (zh) * | 2019-12-26 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种数据完整性校验方法、系统、电子设备及存储介质 |
CN111241593A (zh) * | 2020-01-02 | 2020-06-05 | 支付宝(杭州)信息技术有限公司 | 用于区块链节点的数据同步方法及装置 |
CN111708755A (zh) * | 2020-05-20 | 2020-09-25 | 北京奇艺世纪科技有限公司 | 数据迁移方法、装置、系统、电子设备以及可读存储介质 |
CN111858139A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种检测静默数据错误的方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于数据块链的数据自动对账技术研究;尹为强;;信息通信技术(02);54-59 * |
Also Published As
Publication number | Publication date |
---|---|
CN113377757A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3034034C (en) | Data storage, data check, and data linkage method and apparatus | |
CN111898139B (zh) | 数据读写方法及装置、电子设备 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN111383031B (zh) | 一种区块链中的智能合约执行方法、系统和电子设备 | |
CN108846749A (zh) | 一种基于区块链技术的分片化的交易执行系统及方法 | |
US10761948B1 (en) | Method, apparatus, and electronic device for restoring state data of blockchain | |
US20210256012A1 (en) | Methods and apparatuses for reading and updating data structures, and electronic devices | |
CN111459948B (zh) | 一种基于中心化块链式账本的交易完整性验证方法 | |
EP3816924A1 (en) | Method for accepting blockchain evidence storage transaction and system | |
CN111506580B (zh) | 一种基于中心化块链式账本的交易存储方法 | |
CN107609011B (zh) | 一种数据库记录的维护方法和装置 | |
CN110119947B (zh) | 共享工作量证明算力生成共生区块链的方法和设备 | |
CN113377757B (zh) | 数据对账方法、装置、电子设备及机器可读存储介质 | |
CN111309746A (zh) | 异步并行数据同步方法及装置 | |
CN114003172B (zh) | 存储容量校正方法、装置、计算机设备以及存储介质 | |
CN115858471A (zh) | 业务数据变更记录方法、装置、计算机设备及介质 | |
CN110908587A (zh) | 一种用于存储时序数据的方法及其装置 | |
CN112488708B (zh) | 区块链账户关联性查询方法及虚假交易筛选方法 | |
CN115357594A (zh) | 一种基于区块链的数据模型更新方法及相关设备 | |
CN114356768A (zh) | 通过占位符减少交易读写冲突的方法与装置 | |
CN115543685A (zh) | 一种数据库回滚方法、装置、电子设备及存储介质 | |
CN110019507B (zh) | 数据同步的方法及装置 | |
CN111625502A (zh) | 数据读取方法及装置、存储介质、电子装置 | |
CN111435331A (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 | |
CN115617570A (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 |