CN114896641A - 数据校验方法、装置、电子设备及计算机可读存储介质 - Google Patents

数据校验方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114896641A
CN114896641A CN202210489950.XA CN202210489950A CN114896641A CN 114896641 A CN114896641 A CN 114896641A CN 202210489950 A CN202210489950 A CN 202210489950A CN 114896641 A CN114896641 A CN 114896641A
Authority
CN
China
Prior art keywords
execution result
database
transaction
target
determining
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.)
Pending
Application number
CN202210489950.XA
Other languages
English (en)
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.)
Pingkai Star Beijing Technology Co ltd
Original Assignee
Pingkai Star Beijing Technology 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 Pingkai Star Beijing Technology Co ltd filed Critical Pingkai Star Beijing Technology Co ltd
Priority to CN202210489950.XA priority Critical patent/CN114896641A/zh
Publication of CN114896641A publication Critical patent/CN114896641A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据校验方法、装置、电子设备及计算机可读存储介质,涉及数据处理技术领域。该方法包括:本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,确定目标事务的事务标识和第一执行结果;获取所述第二数据库中与所述目标事务的事务标识存在关联关系的目标快照,从目标快照中确定所述第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,本申请实施例实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,一方面使得可以对增量数据进行准确校验,另一方面有效缩短了增量数据的迁移和校验之间的时间差。

Description

数据校验方法、装置、电子设备及计算机可读存储介质
技术领域
本申请涉及数据处理技术领域,具体而言,本申请涉及一种数据校验方法、装置、电子设备及计算机可读存储介质。
背景技术
数据迁移是指将存储在第一数据库中的数据迁移到第二数据库的过程;数据校验是指在数据迁移完成后,对第一数据库中的数据和迁移到第二数据库中的数据进行一致性校验的过程。数据迁移过程可划分为两个过程:全量迁移和增量迁移。其中,全量数据迁移是指在预设时间点暂停对第一数据库的写入,将第一数据库当前的所有数据迁移至第二数据库,全量迁移过程迁移的数据称之为全量数据;增量迁移是指在迁移完所有的全量数据后,恢复对第一数据库中数据的写入,对第一数据库中变更的数据进行迁移的过程,增量迁移过程迁移的数据成为增量数据。
在全量数据迁移完成后,对全量数据进行校验,即将第一、第二数据库中的数据进行比对,判断第一与第二数据库中的数据是否一致,这一过程第一、第二数据库都是暂停写入的也没有变化的数据,因此能够对全量数据进行准确校验;增量数据在迁移的过程中,因为第一数据库中的数据在不断变更,而迁移过程不断将第一数据库中的增量数据同步到第二数据库,所以第一、第二数据库中的数据在不断变化中,因此在增量数据的迁移过程中对增量数据进行校验十分困难。
现有方案对增量数据的校验方式同对全量数据的校验方式一样,在对增量数据进行校验时,暂停对第一、第二数据库的写入,使得第一、第二数据库中的数据不会变化,对目标时间段内迁移的增量数据进行校验,这种方式虽然可以对增量数据进行准确校验,但这种校验方式耗时较久,对时间是一种浪费;另外,由于业务维护周期一般较长,采用这种校验方式很可能导致无法及时发现不一致的数据,容易对后续业务的进行产生影响。
发明内容
本申请实施例提供了一种数据校验方法、装置、电子设备、计算机可读存储介质及计算机程序产品,可以解决对增量数据校验过程耗时长的问题。所述技术方案如下:
根据本申请实施例的第一方面,提供了一种数据校验法,该方法包括:
确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;
确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;
获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;
从至少一个执行结果中确定第一执行结果对应的第二执行结果;
确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。
在一个可能的实现方式中,确定目标事务的事务标识和第一执行结果,包括:
将目标事务存储至缓存,解析缓存中的目标事务,得到目标事务的事务标识和第一执行结果。
在一个可能的实现方式中,执行结果中包括对应数据行的主键;
从至少一个执行结果中确定第一执行结果对应的第二执行结果,包括:
从至少一个执行结果中确定与第一执行结果具备相同的主键的第二执行结果。
在一个可能的实现方式中,目标事务包括至少一个事件;确定目标事务的事务标识和第一执行结果之前,还包括:
若确定目标事务中的两个事件的数据行的主键相同,则对两个事件进行合并,得到一个新的事件。
在一个可能的实现方式中,对两个事件进行合并,得到一个新的事件,包括:
确定两个事件分别为第一事件和第二事件;第一事件的顺序先于第二事件;
确定第一事件和第二事件的事件类型,事务类型包括插入类型、更新类型以及删除类型;
若第一事件的事件类型和第二事件的类型符合预设的合并规则,则重新确定第二事件为将第一事件和第二事件进行合并后得到的新的事件,并删除第一事件。
在一个可能的实现方式中,获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,包括:
第二数据库生成与至少一个执行结果对应的快照并生成与快照对应的快照标识;建立事务标识和快照标识之间的关联关系,其中,至少一个事务标识包括目标事务的事务标识;
获取与目标事务的事务标识存在关联关系的目标快照标识,根据目标快照标识从第二数据库中确定目标快照,其中,目标快照标识是确定目标快照的唯一标识。
在一个可能的实现方式中,确定目标事务的事务标识和第一执行结果之后,还包括:
若确定第二数据库中不存在目标快照,则从第二数据库的数据表中确定与第一执行结果具备相同主键的第三执行结果;
确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,第二校验结果用于表征第一执行结果和第三执行结果是否一致。
在一个可能的实现方式中,确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果之后,还包括:
若第一校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
若第一校验结果为不一致,则发送第一报告信息,第一报告信息用于报告第一执行结果和第二执行结果不一致。
在一个可能的实现方式中,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果之后,还包括:
若第二校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
若第二校验结果为不一致,则在预设时长后重新在第二数据库的数据表确定第一执行结果对应的第三执行结果,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,直至一致性校验次数达到预设次数。
根据本申请实施例的第二方面,提供了一种数据校验装置,该装置包括:
迁移确定模块,用于确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的事务;
第一执行结果确定模块,用于确定目标事务的事务标识和第一执行结果;
目标快照确定模块,用于获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果;至少一个数据库事务中包括目标事务;
第二执行结果确定模块,用于从至少一个执行结果中确定第一执行结果对应的第二执行结果;
校验模块,用于确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。
根据本申请实施例的第三方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行程序时实现如第一方面所提供的方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
根据本申请实施例的第五方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行实现如第一方面所提供的方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;从至少一个执行结果中确定第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,使得可以对增量数据进行准确校验,同时使得增量数据的迁移和校验实时、同步进行,有效缩短了增量数据的迁移和校验之间的时间差,从而能实时或准实时的对增量数据迁移结果进行校验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的实现数据校验方法的系统架构示意图;
图2为本申请实施例提供的一种数据校验方法的流程示意图;
图3为本申请实施例提供的目标事务的事务标识和快照标识之间的关联关系的示意图;
图4为本申请实施例提供的又一种数据校验方法的流程示意图;
图5为本申请实施例提供的一种数据校验装置的结构示意图;
图6为本申请实施例提供的又一种数据校验装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
事件,即数据事件(DML事件),代表数据库发生的数据行变更,包括数据行插入(insert)、数据行更新(update)以及数据行删除(delete),这些事件会以二进制日志事件的形式记录下来。
数据库事务在数据库的工作单元中,由一组数据事件组成,这一组数据事件要么完全执行,要么完全不执行,具备原子性、一致性、隔离性和持久性等特性。其中,数据库事务中包括其对应的数据行的原值(原始数据行)、变更操作以及变更后得到的执行结果。二进制日志中的每个数据库事务可由一个唯一的事务标识来确定该数据库事务,该事务标识可以由数据库事务所在的二进制日志文件和在二进制日志中的结束位置组成,即事务结束位置,事务结束位置表示某个事务所在的二进制日志文件和事务末尾在二进制日志中的偏移量。
二进制日志(binary log),数据库在执行数据库事务之前会将该数据库事务写入到日志中,二进制日志通常由多个有序的binlog文件组成。
快照(snapshot),即数据快照,快照是一种备份方式,就是对某一个磁盘在某一个时间点上的数据进行备份。一些数据库(如TiDB)支持读取历史数据,即数据快照,比如10分钟前的数据,但是数据库一般仅保存一段时间的数据快照,过期的快照会被回收而无法访问。快照一般会有唯一标识,通过该唯一标识可访问该快照对应的数据,下文中通过“快照标识”来表示。
在银行、证券等行业,对数据进行迁移是比较常见的,数据迁移是指将存储在第一数据库中的数据迁移到第二数据库的过程,数据迁移过程可划分为两个过程:全量迁移和增量迁移。其中,全量数据迁移是指在预设时间点暂停对第一数据库的写入,将第一数据库当前的所有数据迁移至第二数据库,全量迁移过程中迁移的数据称之为全量数据;增量迁移是指在迁移完所有的全量数据后,恢复对第一数据库中数据的写入,然后对第一数据库中变更的数据进行迁移的过程,增量迁移过程中迁移的数据称为增量数据。
数据迁移完成后,一般需对迁移数据进行一致性校验(后续简称数据检验),保证第一数据库中的数据完整、准确的迁移到第二数据库中。同数据迁移一样,数据校验同样可分为两个过程:对全量数据进行校验和对增量数据进行校验。
对全量数据进行校验,即将第一数据库与第二数据库中的数据进行比对,判断上述第一、第二数据库中的数据是否一致,这一过程第一、第二数据库都是暂停写入的,没有变化的数据,能够对全量数据进行准确校验;增量数据在迁移的过程中,第一数据库中的数据在不断变更,迁移过程不断将第一数据库中的增量数据同步到第二数据库,第一、第二数据库中的数据在不断变化中,因此在增量数据的迁移过程中对增量数据进行校验十分困难。
现有方案对增量数据的校验方式同对全量数据的校验方式一样,在对增量数据进行校验时,暂停对第一、第二数据库的写入,使得第一、第二数据库中的数据不会变化,然后对目标时间段内迁移的增量数据进行校验,这种方式虽然可以对增量数据进行准确校验,但这种校验方式耗时较久,对时间是一种浪费;另外,由于业务维护周期一般较长,采用这种校验方式很可能导致无法及时发现不一致的数据,容易对后续业务的进行产生影响。
本申请提供的数据校验方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图1为本申请实施例提供的实现数据校验方法的系统架构示意图,整个系统10包括第一数据库110、第二数据库120以及数据迁移和校验工具130。其中,第一数据库、第二数据库可以为任何存储数据的数据库,先对第一数据库110写入数据后,可将第一数据库110中的数据迁移至第二数据库120,第二数据库120中的数据来源于第一数据库110,即第二数据库120中的数据取决于第一数据库110;迁移和校验工具130用于将第一数据库中的数据迁移至第二数据库,并对迁移的数据进行一致性校验。本申请实施例的执行主体即为数据迁移和校验工具130。
本申请实施例中提供了一种数据校验方法,如图2所示,该方法包括:
步骤S201,确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务。
本申请实施例第一数据库和第二数据库是任意的、可存储数据的数据库,在进行数据迁移时,通常情况下是将上游数据库中的数据库迁移至下游数据库,即本申请第一数据库也可称之为上游数据库,第二数据库也可称之为下游数据库。
本申请实施例数据库事务是数据库中执行的工作单元,由一组数据事件组成,这一组事件要么完全执行,要么完全不执行,具有原子性、一致性、隔离性和持久性等特性。事件用于对数据库中的数据行进行变更,一个数据库事务中包括一组事件,由此,数据库事务也用于对数据库中的数据行进行变更。
可以理解的是,将第一数据库中的数据迁移至第二数据库,也就是说第二数据库中的数据的变化是随着第一数据库中数据的变化而变化。
本申请实施例第一数据库中的数据的变化是随着数据库事务的执行而变化,第一数据库执行完数据库事务后,得到的变化的数据行即为增量数据,因此,在对数据进行迁移之前,需保证第一数据库已执行该数据库事务。
本申请实施例第一数据库的数据库事务记录于第一数据库的二进制日志中,对第一数据库中的增量数据的迁移实际上是对相应的数据库事务的迁移,若第一数据库中的数据库事务迁移至第二数据库中,则可实现将第一数据库中相应的增量数据迁移至第二数据库。
本申请实施例执行主体为迁移和校验工具,用于对数据进行迁移和迁移后进行一致性校验,在对第一数据库中的目标事务进行校验前,一方面需保证该目标事务为第一数据库已执行的数据库事务,第一数据库已执行的数据库事务即可实现将增量数据写入第一数据库;另一方面需保证该目标事务已由第一数据库迁移至第二数据库,迁移后才可进行数据校验。
本申请实施例从第一数据库的二进制日志中拉取一个或多个数据库事务为目标事务至缓存,该目标事务为第一数据库已执行的数据库事务,迁移和校验工具并不会对二进制日志中的数据库事务做出改变。
步骤S202,确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果。
本申请实施例第一数据库的数据库事务记录于第一数据库的二进制日志中,每个数据库事务都有其对应的唯一的事务标识,该事务标识能够唯一确定对应的数据库事务的唯一标识,本申请实施例事务标识为该事务在二进制日志中的事务结束位置。
本申请实施例数据库事务中包括被变更之前的原始的数据行、对原始的数据行进行变更的操作指令以及变更后得到的第一执行结果,第一执行结果是目标事务在第一数据库中执行完成后得到的执行结果。
本申请实施例进行变更的操作指令包括插入指令、更新指令以及删除指令,对于插入指令,第一数据库中的原始数据中不存在目标事务所对应的原始数据行,第一数据库执行该目标事务以插入对应的新数据行后,得到插入的对应的新数据行,第一执行结果即为该插入的新数据行;对于更新指令,数据库事务中包括对应的原始数据行,第一数据库执行该目标事务对该对应的原始数据行进行更新,得到更新的数据行,第一执行结果即为该更新的数据行;对于删除指令,数据库事务中包括对应的原始数据行,对该对应的原始数据行删除后,该对应的原始数据行将不存在于第一数据库中,第一执行结果即为第一数据库中不存在该对应的原始数据行。
数据库事务中包括一组事件,各个事件用于对数据行进行变更,这意味着一个数据库事务所对应数据行可能是多个数据行,因此本申请实施例中原始数据行以及第一执行结果对应的数据行并不一定是单独的数据行,可能是多个数据行的组合。对于全是删除指令的事件,该数据库事务对应的第一执行结果中不包括对应的原始数据行。
本申请实施例从第一数据库的二进制日志中拉取目标事务至缓存,在缓存中对该目标事务进行解析,得到该目标事务的事务标识和第一执行结果。
步骤S203,获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务。
快照,也称数据快照,是对在线数据进行备份和恢复的一种手段,快照可以是其所表示数据的一个副本,也可以是数据的一个复制品,绝大多数数据库都具备快照机制,即绝大多数数据库中存储的数据都有其对应的快照。
对于存在快照机制的第二数据库,本申请实施例第二数据库在执行完迁移的数据库事务之后,会将该数据库事务的执行结果存储于快照中,会记录当前的快照标识,在后续过程中,可通过查询快照标识对应的快照找到相应的执行结果。
值得注意的是,一个快照对应的是第二数据库执行完迁移完成的至少一个数据库事务后得到的至少一个执行结果,可以是一段时间的数据库事务的执行结果,也可以是批处理过程中一批或多批数据库事务的执行结果,本申请实施例对此不作限制。
在批处理过程中,可以一次确定多个目标事务,对应的一个快照中记录有多个数据库事务对应的数据行,可以同时对多个目标事务进行校验,提高校验效率。
在迁移过程中,第二数据库在执行完该目标事务得到目标快照后,迁移和校验工具会建立该目标事务的事务标识和该目标快照的快照标识之间的关联关系,该目标快照中记录的是第二数据库执行完迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,至少一个数据库事务中包括当前正在校验的目标事务,以使得在校验过程可根据该目标事务的事务标识和该目标快照的快照标识之间的关联关系,找到与该目标事务存在关联关系的目标快照,进而从该目标快照中的至少一个执行结果中找到第一执行结果对应的第二执行结果,详细过程见后续部分。
步骤S204,从至少一个执行结果中确定第一执行结果对应的第二执行结果。
本申请实施例在从目标快照中确定至少一个执行结果后,从至少一个该执行结果中确定与第一执行结果对应的第二执行结果。其中,该第二执行结果的主键和该第一执行结果的主键相同,表征该第一执行结果和该第二执行结果分别是第一数据库和第二数据库执行完相同的目标事务后得到的。
步骤S205,确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。
本申请实施例在确定第一执行结果和第二执行结果之后,对该第一执行结果和该第二执行结果进行一致性校验,得到第一校验结果,该第一校验结果用于表征第一执行结果和第二执行结果是否一致。
本申请实施例目标事务是由一组事件组成,这一组事件要么完全执行,要么完全不执行,每个事件都有其对应的数据行,事件用于对数据行进行变更,有三种事件类型,事件类型是根据事件中的操作指令确定的,分别是插入类型、更新类型以及删除类型,分别用于数据行插入、数据行更新以及数据行删除。
对于数据行插入,即在上游数据库中插入一个新的数据行,第一执行结果即为插入的新的数据行,第二执行结果即为目标快照中与该第一执行结果具备相同主键的数据行,此时可逐列比较第一执行结果中各列的数值和第二执行结果中各列的数值,或者计算校验和来确定该第一执行结果和第二执行结果是否一致,若校验结果为一致,则表征该第一执行结果和第二执行结果一致;否则,该第一执行结果和第二执行结果不一致。
对于数据行更新,即上游数据库中对已经存在的某数据行进行更新,第一执行结果即为该更新后的数据行,第二执行结果即为目标快照中与该第一执行结果具备相同主键的数据行,此时同样可以逐列比较该第一执行结果中各列的数值和第二执行结果中各列的数值,或者计算校验和来确定该第一执行结果和第二执行结果是否一致,若校验结果为一致,则表征该第一执行结果和第二执行结果一致,否则,该第一执行结果和第二执行结果不一致。
对于数据行删除,即上游数据库对已经存在的某数据行进行删除,第一执行结果为不存在该数据行,同样的,目标快照中若同样不存在与该第一执行结果存在相同主键的数据行,则表明第二执行结果为不存在该数据行,则表明校验结果为一致;否则,第二校验结果为不一致。
本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,确定目标事务的事务标识和第一执行结果;获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,从至少一个执行结果中确定第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致,本申请实施例实现了将第一数据库中的目标事务中的第一执行结果和第二数据库的目标快照存储的第二执行结果进行一致性校验,而非直接将第一数据库中的第一执行结果和第二数据库中的第二执行结果进行比对,实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,使得可以对增量数据进行准确校验,同时使得增量数据的迁移和校验实时、同步进行,有效缩短了增量数据的迁移和校验之间的时间差,从而能实时或准实时的对增量数据迁移结果进行校验。
本申请实施例提供了一种可能的实现方式,确定目标事务的事务标识和第一执行结果,包括:
将目标事务存储至缓存,解析缓存中的目标事务,得到目标事务的事务标识和第一执行结果。
本申请实施例在校验第一数据库和第二数据库进行数据一致性校验时,先从第一数据库中拉取一个或多个数据库事务,从一个或多个数据库事务中确定目标事务,解析缓存中的目标事务,得到该目标事务的事务标识和第一执行结果。
其中,事务标识用于唯一确定相应的一个数据库事务,事务标识可以由相应的数据库事务所在的二进制日志文件和在该二进制日志文件中的结束位置组成,即事务结束位置,事务结束位置表示某个数据库事务所在的二进制日志文件和事务末尾在二进制日志中的偏移量。
本申请实施例任何一个数据库事务包括原始数据行、对该原始数据行进行的变更操作以及执行变更操作后得到的执行结果,数据库执行数据库事务实质上时根据原始数据行以及变更操作对原始数据行进行变更得到执行结果。
本申请实施例第一执行结果为第一数据库执行该目标事务后得到的变更后的数据行,该第一执行结果同样记录于数据库事务中,本申请实施例解析缓存中的目标事务得到目标事务的事务标识和第一执行结果。
本申请实施例提供了一种可能的实现方式,执行结果中包括对应数据行的主键;
从至少一个执行结果中确定第一执行结果对应的第二执行结果,包括:
从至少一个执行结果中确定与第一执行结果具备相同的主键的第二执行结果。
本申请实施例执行结果中包括对应的数据行的主键,主键是数据表中一个或多个字段,主键用于唯一的标识数据表中的数据行。
本申请实施例第二执行结果的主键和第一执行结果中的主键相同,第一执行结果和第二执行结果分别是第一数据库和第二数据库执行完相同的目标事务后得到的,在确定第一执行结果的主键后,从至少一个执行结果中确定和第一执行结果具备相同主键的数据行为第二执行结果。
本申请实施例提供了一种可能的实现方式,数据库事务包括至少一个事件;确定目标事务的事务标识和第一执行结果之前,还包括:
对于数据库事务中的任意两个事件,若确定两个事件的数据行的主键相同,则对两个事件进行合并,得到一个新的事件。
本申请实施例事务中包括一组事件,一组事件中包括至少一个事件,每个事件都有用于对对应的数据行进行变更,即数据库事务中包括的执行结果是一组数据行,是各个事件变更后得到的数据行。
本申请实施例在确定目标事务的事务标识和第一执行结果之前,若确定目标事务中的两个事件的数据行的主键相同,则表明这两个事件可以进行合并,合并后得到一个新的事件,详细件后续内容。
本申请实施例提供了一种可能的实现方式,对两个事件进行合并,得到一个新的事件,包括:
确定两个事件分别为第一事件和第二事件;第一事件的顺序先于第二事件;
确定第一事件和第二事件的事件类型,事件类型包括插入类型、更新类型以及删除类型;
若第一事件的事件类型和第二事件的类型符合预设的合并规则,则重新确定第二事件为将第一事件和第二事件进行合并后得到的新的事件,并删除第一事件。
本申请实施例确定上述可进行合并的两个事件分别为第一事件和第二事件,第一事件的顺序优先于第二事件,即第一事件先被第一数据库执行,第二事件后被第一数据库执行,同样的,第一事件在第一数据库中的事务结束位置先于第二事件在第一数据库中的事务结束位置。
本申请实施例在确定可合并的第一事件和第二事件后,确定第一事件和第二事件的事件类型,事件类型包括插入(insert)类型、更新(update)类型以及删除(delete)类型;
若第一事件的事件类型和第二事件的类型符合预设的合并规则,则确定第二事件为将第一事件和第二事件进行合并后得到的新的事件,并删除第一事件。
具体而言,若第一事件的事件类型为insert,第二事件的事件类型件为update,合并后得到的新的事件的类型为update,即先insert后update,合并为update;
若第一事件的事件类型为insert,第二事件的事件类型件为delete,合并后得到的新的事件的类型为delete,即先insert后delete,合并为delete;
若第一事件的事件类型为update,第二事件的事件类型件为update,合并后得到的新的事件的类型为update,即先update后update,合并为update;
若第一事件的事件类型为update,第二事件的事件类型件为delete,合并后得到的新的事件的类型为delete,即先update后delete,合并为delete;
若第一事件的事件类型为delete,第二事件的事件类型件为insert,,合并后得到的新的事件的类型为insert,,即先delete后insert,合并为insert。
本申请实施例提供了一种可能的实现方式,获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,包括:
第二数据库生成与至少一个执行结果对应的快照并生成与快照对应的快照标识;
建立事务标识和快照标识之间的关联关系,其中,至少一个事务标识包括目标事务的事务标识;
获取与目标事务的事务标识存在关联关系的目标快照标识,其中,目标快照标识是确定目标快照的唯一标识;
根据目标快照标识从第二数据库中确定目标快照。
本申请实施例在确定任意一个数据库事务由第一数据库迁移至第二数据库之后,对于存在快照机制的第二数据库,在第二数据库在执行完该至少一个数据库事务之后,得到至少一个执行结果,同时会对应生成该至少一个执行结果对应的快照以及快照对应的快照标识,建立事务标识和快照标识之间的关联关系,将该关联关系存储于元数据,即元数据中的关联关系表征该数据库事务已迁移至第二数据库,事务标识通常为事务结束位置。
如图3所示为本申请实施例提供的事务标识和快照标识之间的关联关系的示意图,其中,包括数据库事务:事务1、事务2……,事务标识为事务结束位置;事务1的结束位置和快照标识A之间存在关联关系,即在确定事务1的事务结束位置后,可确定快照标识A,进而查找到目标快照A;事务2的结束位置和快照标识B之间存在关联关系,即在确定事务2的事务结束位置后,可确定快照标识B,进而查找到目标快照B等等,本申请实施例在此不再进行一一举例。
对于目标事务而言,第二数据库在执行完该目标事务后,生成包含该目标事务的执行结果的目标数据快照,该目标数据快照对应的目标快照标识是确定该目标快照的唯一标识,迁移和校验工具会建立该目标事务的事务标识和目标数据快照的快照标识之间的关联关系。在校验阶段,可通过获取与目标事务的事务标识存在关联关系的目标快照标识,根据目标快照标识从第二数据库中确定目标快照,进而从目标快照中确定第一执行结果对应的第二执行结果。
本申请实施例提供了一种可能的实现方式,确定目标事务的事务标识和第一执行结果之后,还包括:
若确定第二数据库中不存在目标快照,则从第二数据库的数据表中确定与第一执行结果具备相同主键的第三执行结果;
确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,第二校验结果用于表征第一执行结果和第三执行结果是否一致。
对于存在快照机制的第二数据库,可通过确定第二数据库中的目标快照,进而确定第二执行结果,对第一执行结果和第二执行结果进行一致性校验,然并非所有的第二数据库都存在快照机制,有的第二数据库并不存在快照机制。另外,快照一般具备一定的保存时间,例如保存时间为10分钟,即第二数据库会保持一段时间的快照,过期的快照可能会被收回而无法访问。
本申请实施例在确定第二目标数据库中不存在目标快照,即第二目标数据库中不存在快照机制或快照过期被收回时,直接从第二数据库的数据表中确定与第一执行结果具备相同主键的第三执行结果,对第一执行结果和第三执行结果进行一致性校验后得到第二校验结果,第二校验结果用于表征第一执行结果和第三执行结果是否一致。
同第一执行结果和第二执行结果的一致性校验一样,对于数据行插入,即在上游数据库中插入一个新数据行,第一执行结果即为插入的新数据行,第三执行结果即为第二数据库的数据表中与该第一执行结果具备相同主键的数据行,此时可逐列比较第一执行结果中各列的数值和第三执行结果中各列的数值,或者计算校验和来确定第一执行结果和第三执行结果是否一致,若校验结果为一致,则表征该第一执行结果和第三执行结果一致;否则,第一执行结果和第三执行结果不一致。
对于数据行更新,即上游数据库中对已经存在的某数据行进行更新,第一执行结果即为该更新后的数据行,第三执行结果即为第二数据库的数据表中与该第一执行结果具备相同主键的数据行,此时同样可以逐列比较第一执行结果中各列的数值和第三执行结果中各列的数值,或者计算校验和来确定第一执行结果和第三执行结果是否一致,若校验结果为一致,则表征该第一执行结果和该第三执行结果一致,否则,第一执行结果和第三执行结果不一致。
对于数据行删除,即上游数据库对已经存在的某数据行进行删除,第一执行结果为不存在该数据行,同样的,目标快照中若同样不存在与第一执行结果存在相同主键的数据行,则第三执行结果为不存在该数据行,这种情况下第二校验结果为一致;否则,第二校验结果为不一致。
本申请实施例提供了一种可能的实现方式,确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果之后,还包括:
若第一校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
若第一校验结果为不一致,则发送第一报告信息,第一报告信息用于报告第一执行结果和第二执行结果不一致。
本申请实施例若第一校验结果为一致,则无需再次对该目标事务对应的第一执行结果和第二数据库的快照中的第二执行结果进行校验,可直接在缓存中删除该目标事务,并解析下一目标事务。
若第一校验结果为不一致,此时记录不一致的数据行的信息,并发送第一报告信息,第一报告信息用于包括第一执行结果和第二执行结果不一致,在发送完包括信息后继续解析下一目标事务。
本申请实施例提供了一种可能的实现方式,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果之后,还包括:
若第二校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
若第二校验结果为不一致,则在预设时长后重新在第二数据库的数据表确定第一执行结果对应的第三执行结果,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,直至一致性校验次数达到预设次数。
本申请实施例在确定第二校验结果一致时,同样可以在缓存中直接删除目标事务,并解析下一目标事务;若第二校验结果为不一致,则在预设时长后重新在第二数据库的数据表确定第一执行结果对应的第三执行结果,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,直至一致性校验次数达到预设次数。
由于第一数据库和第二数据库在不断的变化中,若第一数据库中的第一执行结果在不断变化,那么第二数据库中的第二执行结果同样在不断变化,若在目标事务发生后,第一数据库再次对第一执行结果进行了变更,得到了新的第一执行结果,并将该变更对应的新的数据库事务同步到了第二数据库,此时将第一执行结果和第三执行结果的一致性校验结果为不一致,这种属于“假阳性”状况,此时应将新的第一执行结果和第二执行结果进行一致性校验,因此需要多次重复校验,以降低“假阳性”状况的概率,在预设次数内,若校验结果一致,则从缓存中删除该目标事务,若超过该预设次数后,校验结果仍然为不一致,则同样在缓存中删除该目标事务,发送第二报告,第二报告用于表征多次校验后,第二校验结果仍然为不一致,需要人工判断是否是真的不一致。
如图4所示为本申请实施例提供的一种数据校验方法的流程示意图,包括:
步骤S401,确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的事务;
步骤S402,在缓存中解析目标事务,得到目标事务的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;
步骤S403,判断在第二数据库中是否能获取到与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行完迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;
步骤S404,若步骤S403判断结果为是,则从目标快照中确定第一执行结果对应的第二执行结果;
步骤S405,确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。
步骤S406,若第一校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
步骤S407,若第一校验结果为不一致,则发送第一报告信息,第一报告信息用于报告第一执行结果和第二执行结果不一致。
步骤S404’,若步骤S403判断结果为否,则从第二数据库的数据表中确定与第一执行结果对应的第三执行结果;
步骤S405’,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,第二校验结果用于表征第一执行结果和第三执行结果是否一致。
步骤S406’,若第二校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
步骤S407’,若第二校验结果为不一致,则在预设时长后重新在第二数据库的数据表确定第一执行结果对应的第三执行结果,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,直至一致性校验次数达到预设次数。
上述步骤S401-S407’的具体实施过程和前述实施例一致,本申请实施例在此不再进行赘述。
本申请实施例提供了一种数据校验装置50,如图5所示,该数据校验装置50可以包括:
迁移确定模块510,用于确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;
第一执行结果确定模块520,用于确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;
目标快照确定模块530,用于获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;
第二执行结果确定模块540,用于从至少一个执行结果中确定第一执行结果对应的第二执行结果;
校验模块550,用于确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。
本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;从至少一个执行结果中确定第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,使得可以对增量数据进行准确校验,同时使得增量数据的迁移和校验实时、同步进行,有效缩短了增量数据的迁移和校验之间的时间差,从而能实时或准实时的对增量数据迁移结果进行校验。
本申请实施例中提供了一种可能的实现方式,第一执行结果确定模块具体用于将目标事务存储至缓存,解析缓存中的目标事务,得到目标事务的事务标识和第一执行结果。
本申请实施例中提供了一种可能的实现方式,执行结果中包括对应数据行的主键;
第二执行结果确定模块具体用于从至少一个执行结果中确定与第一执行结果具备相同的主键的第二执行结果。
本申请实施例中提供了一种可能的实现方式,目标事务包括至少一个事件;该装置还包括:
合并模块,用于若确定目标事务中的两个事件的数据行的主键相同,则对两个事件进行合并,得到一个新的事件。
本申请实施例中提供了一种可能的实现方式,合并模块包括:
合并事件确定单元,用于确定两个事件分别为第一事件和第二事件;第一事件的顺序先于第二事件;
事件类型确定单元,用于确定第一事件和第二事件的事件类型,事务类型包括插入类型、更新类型以及删除类型;
合并单元,用于若第一事件的事件类型和第二事件的类型符合预设的合并规则,则重新确定第二事件为将第一事件和第二事件进行合并后得到的新的事件,并删除第一事件。
本申请实施例中提供了一种可能的实现方式,该目标快照确定模块包括:
关系建立子模块,第二数据库生成与至少一个执行结果对应的快照并生成与快照对应的快照标识;建立目事务标识和快照标识之间的关联关系,其中,至少一个事务标识包括目标事务的事务标识;
目标快照确定子模块,具体用于获取与目标事务的事务标识存在关联关系的目标快照标识,其中,目标快照标识是确定目标快照的唯一标识;根据目标快照标识从第二数据库中确定目标快照。
本申请实施例中提供了一种可能的实现方式,该装置还包括:
第三执行结果确定模块,用于若确定第二数据库中不存在目标快照,则从第二数据库的数据表中确定与第一执行结果具备相同主键的第三执行结果;
校验模块,还用于确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,第二校验结果用于表征第一执行结果和第三执行结果是否一致。
本申请实施例中提供了一种可能的实现方式,该装置还包括:
删除模块,用于若第一校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
报告模块,用于若第一校验结果为不一致,则发送第一报告信息,第一报告信息用于报告第一执行结果和第二执行结果不一致。
本申请实施例中提供了一种可能的实现方式,删除模块还用于若第二校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;
校验模块还用于若第二校验结果为不一致,则在预设时长后重新在第二数据库的数据表确定第一执行结果对应的第三执行结果,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,直至一致性校验次数达到预设次数。
如图6所示,其示例性示出了本申请实施例所提供的又一种数据校验装置60,该数据校验装置60包括:
迁移确定模块6010、合并模块6020、第一执行结果确定模块6030、目标快照确定模块6040、第二执行结果确定模块6050、第三执行结果确定模块6060、校验模块6070、删除模块6080、报告模块6090。
其中,迁移确定模块6010用于确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的事务;迁移确定模块6010用于确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的事务;合并模块6020用于若确定目标事务中的两个事件的数据行的主键相同,则对两个事件进行合并,得到一个新的事件;合并模块6020包括合并事件确定单元6021、事件类型确定单元6022以及合并单元6023;合并事件确定单元6021,用于确定两个事件分别为第一事件和第二事件;第一事件的顺序先于第二事件;事件类型确定单元6022,用于确定第一事件和第二事件的事件类型,事务类型包括插入类型、更新类型以及删除类型;合并单元6023,用于若第一事件的事件类型和第二事件的类型符合预设的合并规则,则重新确定第二事件为将第一事件和第二事件进行合并后得到的新的事件,并删除第一事件;第一执行结果确定模块6030具体用于将目标事务存储至缓存,解析缓存中的目标事务,得到目标事务的事务标识和第一执行结果;目标快照确定模块6040,用于获取与目标事务的事务标识存在关联关系的目标快照标识;根据目标快照标识从第二数据库中确定目标快照,目标快照中记录第二数据库执行完迁移完成的至少一个数据库事务后对应得到的至少一个执行结果;至少一个数据库事务中包括目标事务;目标快照确定模块6040包括:关系建立子模块6041以及目标快照确定子模块6042,关系建立子模块6041为第二数据库生成与至少一个执行结果对应的快照并生成与快照对应的快照标识;建立事务标识和快照标识之间的关联关系,其中,至少一个事务标识包括目标事务的事务标识;目标快照确定子模块6042,具体用于获取与目标事务的事务标识存在关联关系的目标快照标识,其中,目标快照标识是确定目标快照的唯一标识;根据目标快照标识从第二数据库中确定目标快照;第二执行结果确定模块6050,具体用于从至少一个执行结果中确定与第一执行结果具备相同的主键的第二执行结果;第三执行结果确定模块6060,用于若确定第二数据库中不存在目标快照,则从第二数据库的数据表中确定与第一执行结果具备相同主键的第三执行结果;校验模块6070,用于确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致;校验模块6070,还用于确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,第二校验结果用于表征第一执行结果和第三执行结果是否一致;删除模块6080,用于若第一校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;删除模块6080还用于若第二校验结果为一致,则在缓存中删除目标事务,解析下一目标事务;报告模块6090用于若第一校验结果为不一致,则发送第一报告信息,第一报告信息用于报告第一执行结果和第二执行结果不一致;校验模块6070还用于若第二校验结果为不一致,则在预设时长后重新在第二数据库的数据表确定第一执行结果对应的第三执行结果,确定对第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果,直至一致性校验次数达到预设次数。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现数据校验方法的步骤,与相关技术相比可实现:本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;从至少一个执行结果中确定第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,使得可以对增量数据进行准确校验,同时使得增量数据的迁移和校验实时、同步进行,有效缩短了增量数据的迁移和校验之间的时间差,从而能实时或准实时的对增量数据迁移结果进行校验。
在一个可选实施例中提供了一种电子设备,如图7所示,图7所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7所示的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;从至少一个执行结果中确定第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,使得可以对增量数据进行准确校验,同时使得增量数据的迁移和校验实时、同步进行,有效缩短了增量数据的迁移和校验之间的时间差,从而能实时或准实时的对增量数据迁移结果进行校验。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:本申请实施例通过确定目标事务由第一数据库迁移至第二数据库,其中,目标事务为第一数据库中已执行的数据库事务;确定目标事务对应的事务标识和第一执行结果,其中,事务标识是确定数据库事务的唯一标识,并且第一执行结果是目标事务在第一数据库中执行完成后对应得到的执行结果;获取第二数据库中与目标事务的事务标识存在关联关系的目标快照,其中,目标快照中记录第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且至少一个数据库事务中包括目标事务;从至少一个执行结果中确定第一执行结果对应的第二执行结果;确定对第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,第一校验结果用于表征第一执行结果和第二执行结果是否一致。实现了在增量数据迁移的过程中,对各个增量数据的已迁移至下游数据库的数据事件进行校验,使得可以对增量数据进行准确校验,同时使得增量数据的迁移和校验实时、同步进行,有效缩短了增量数据的迁移和校验之间的时间差。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。

Claims (12)

1.一种数据校验方法,其特征在于,包括:
确定目标事务由第一数据库迁移至第二数据库,其中,所述目标事务为所述第一数据库中已执行的数据库事务;
确定所述目标事务对应的事务标识和第一执行结果,其中,所述事务标识是确定所述数据库事务的唯一标识,并且所述第一执行结果是所述目标事务在所述第一数据库中执行完成后对应得到的执行结果;
获取所述第二数据库中与所述目标事务的事务标识存在关联关系的目标快照,其中,所述目标快照中记录所述第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且所述至少一个数据库事务中包括所述目标事务;
从所述至少一个执行结果中确定所述第一执行结果对应的第二执行结果;
确定对所述第一执行结果和所述第二执行结果进行一致性校验后得到的第一校验结果,所述第一校验结果用于表征所述第一执行结果和所述第二执行结果是否一致。
2.根据权利要求1所述的方法,其特征在于,所述确定所述目标事务的事务标识和第一执行结果,包括:
将所述目标事务存储至缓存,解析所述缓存中的所述目标事务,得到所述目标事务的事务标识和第一执行结果。
3.根据权利要求1或2任意一项所述的方法,其特征在于,所述执行结果包括对应数据行的主键;
所述从所述至少一个执行结果中确定所述第一执行结果对应的第二执行结果,包括:
从所述至少一个执行结果中确定与所述第一执行结果具备相同的主键的第二执行结果。
4.根据权利要求3所述的方法,其特征在于,所述目标事务包括至少一个事件;所述确定所述目标事务的事务标识和第一执行结果之前,还包括:
若确定所述目标事务中的两个事件的数据行的主键相同,则对所述两个事件进行合并,得到一个新的事件。
5.根据权利要求4所述的方法,其特征在于,所述对所述两个事件进行合并,得到一个新的事件,包括:
确定所述两个事件分别为第一事件和第二事件;所述第一事件的顺序先于所述第二事件;
确定所述第一事件和所述第二事件的事件类型,所述事务类型包括插入类型、更新类型以及删除类型;
若所述第一事件的事件类型和所述第二事件的事件类型符合预设的合并规则,则重新确定所述第二事件为将所述第一事件和所述第二事件进行合并后得到的新的事件,并删除所述第一事件。
6.根据权利要求1所述的方法,其特征在于,所述获取所述第二数据库中与所述目标事务的事务标识存在关联关系的目标快照,包括:
所述第二数据库生成与所述至少一个执行结果对应的快照并生成与所述快照对应的快照标识;
建立所述事务标识和所述快照标识之间的关联关系,其中,至少一个所述事务标识包括所述目标事务的事务标识;
获取与所述目标事务的事务标识存在所述关联关系的目标快照标识,其中,所述目标快照标识是确定所述目标快照的唯一标识;
根据所述目标快照标识从所述第二数据库中确定目标快照。
7.根据权利要求3所述的方法,其特征在于,所述确定所述目标事务的事务标识和第一执行结果之后,还包括:
若确定所述第二数据库中不存在所述目标快照,则从所述第二数据库的数据表中确定与所述第一执行结果对应的第三执行结果;
确定对所述第一执行结果和所述第三执行结果进行一致性校验后得到的第二校验结果,所述第二校验结果用于表征所述第一执行结果和所述第三执行结果是否一致。
8.根据权利要求2所述的方法,其特征在于,所述确定对所述第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果之后,还包括:
若所述第一校验结果为一致,则在所述缓存中删除所述目标事务,解析下一目标事务;
若所述第一校验结果为不一致,则发送第一报告信息,所述第一报告信息用于报告所述第一执行结果和第二执行结果不一致。
9.根据权利要求7所述的方法,其特征在于,所述确定对所述第一执行结果和第三执行结果进行一致性校验后得到的第二校验结果之后,还包括:
若所述第二校验结果为一致,则在所述缓存中删除所述目标事务,解析下一目标事务;
若所述第二校验结果为不一致,则在预设时长后重新在所述第二数据库的数据表确定所述第一执行结果对应的第三执行结果,确定对所述第一执行结果和所述第三执行结果进行一致性校验后得到的所述第二校验结果,直至一致性校验次数达到预设次数。
10.一种数据校验装置,其特征在于,包括:
迁移确定模块,用于确定目标事务由第一数据库迁移至第二数据库,其中,所述目标事务为第一数据库中已执行的数据库事务;
第一执行结果确定模块,用于确定所述目标事务对应的事务标识和第一执行结果,其中,所述事务标识是确定所述数据库事务的唯一标识,并且所述第一执行结果是所述目标事务在所述第一数据库中执行完成后对应得到的执行结果;
目标快照确定模块,用于获取所述第二数据库中与所述目标事务的事务标识存在关联关系的目标快照,其中,所述目标快照中记录所述第二数据库执行迁移完成的至少一个数据库事务后对应得到的至少一个执行结果,并且所述至少一个数据库事务中包括所述目标事务;
第二执行结果确定模块,用于从所述至少一个执行结果中确定所述第一执行结果对应的第二执行结果;
校验模块,用于确定对所述第一执行结果和第二执行结果进行一致性校验后得到的第一校验结果,所述第一校验结果用于表征所述第一执行结果和所述第二执行结果是否一致。
11.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-9任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-9任一项所述方法的步骤。
CN202210489950.XA 2022-05-06 2022-05-06 数据校验方法、装置、电子设备及计算机可读存储介质 Pending CN114896641A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210489950.XA CN114896641A (zh) 2022-05-06 2022-05-06 数据校验方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210489950.XA CN114896641A (zh) 2022-05-06 2022-05-06 数据校验方法、装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114896641A true CN114896641A (zh) 2022-08-12

Family

ID=82720237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210489950.XA Pending CN114896641A (zh) 2022-05-06 2022-05-06 数据校验方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114896641A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115840763A (zh) * 2023-02-20 2023-03-24 中航信移动科技有限公司 一种基于多数据库的数据存储方法、存储介质及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115840763A (zh) * 2023-02-20 2023-03-24 中航信移动科技有限公司 一种基于多数据库的数据存储方法、存储介质及电子设备
CN115840763B (zh) * 2023-02-20 2023-05-23 中航信移动科技有限公司 一种基于多数据库的数据存储方法、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN107391628B (zh) 数据同步方法及装置
CN111104392B (zh) 一种数据库迁移方法、装置、电子设备及存储介质
US20200356624A1 (en) Collaborative document editing system and method
CN106095678B (zh) 用于Windows平台下数据库业务操作的自动化结果检查方法
CN110543446B (zh) 一种基于快照的区块链直接归档方法
CN112597153A (zh) 一种基于区块链的数据存储方法、装置及存储介质
CN112256675A (zh) 数据迁移方法、装置、终端设备及存储介质
CN111125040A (zh) 管理重做日志的方法、装置及存储介质
CN108121774B (zh) 一种数据表备份方法及终端设备
CN110019063B (zh) 计算节点数据容灾回放的方法、终端设备及存储介质
CN111414362A (zh) 数据读取方法、装置、设备及存储介质
CN110795447A (zh) 数据处理方法、数据处理系统、电子设备和介质
CN114896641A (zh) 数据校验方法、装置、电子设备及计算机可读存储介质
CN115237444A (zh) 基于版本号的并发控制方法、装置、设备及存储介质
CN112835885A (zh) 一种分布式表格存储的处理方法、装置及系统
CN108228611B (zh) 单据信息抄写方法和装置
CN111797104A (zh) 数据变更情况的获取方法、装置及电子设备
CN109542860B (zh) 基于hdfs的业务数据管理方法、终端设备
CN115391337A (zh) 数据库分区的方法、装置、存储介质及电子设备
CN114896276A (zh) 数据存储方法、装置、电子设备及分布式存储系统
CN109165208B (zh) 一种用于将数据加载到数据库中的方法及系统
CN109740027B (zh) 数据交换方法、装置、服务器和存储介质
CN112699129A (zh) 一种数据处理系统、方法及装置
CN112860376A (zh) 一种快照链的制作方法、装置、电子设备及存储介质
CN113468105A (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