CN116841794A - 一种数据的校验方法、装置以及存储介质 - Google Patents

一种数据的校验方法、装置以及存储介质 Download PDF

Info

Publication number
CN116841794A
CN116841794A CN202210288716.0A CN202210288716A CN116841794A CN 116841794 A CN116841794 A CN 116841794A CN 202210288716 A CN202210288716 A CN 202210288716A CN 116841794 A CN116841794 A CN 116841794A
Authority
CN
China
Prior art keywords
data
instance
verification
byte stream
data table
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
CN202210288716.0A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210288716.0A priority Critical patent/CN116841794A/zh
Publication of CN116841794A publication Critical patent/CN116841794A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据的校验方法、装置以及存储介质,可应用于地图、云技术领域。通过获取主数据库中的第一数据表;然后将第一数据表输入外部实例,并进行中立数据形式的转换;并对转换后的数据进行校验,以将对应的校验结果写入第一校验表;然后采用相同的方式在从数据库进行校验;进而基于第一校验表与第二校验表进行比对,以确定目标校验结果。从而实现体外的数据校验过程,由于外部实例的校验计算过程不会占用主数据库的实例计算资源,且通中立数据形式可以匹配不同类型的数据库进行数据校验,提高了数据校验的稳定性。

Description

一种数据的校验方法、装置以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据的校验方法、装置以及存储介质。
背景技术
随着计算机技术的发展与数据量的飞速增长,数据库的使用越来越普遍。用户在使用数据库的过程中,时常会遇到需要比较主从数据库一致性的场景,比如在修复了主从同步问题之后需要确认数据是否一致,或者在数据迁移之后校验迁移数据是否正确等。
一般,对于数据校验的计算都是依赖于数据库实例本身的函数以及资源(如CPU、内存等)来进行计算。
但是,数据库的计算资源有限,在大量数据的校验场景中,容易出现过载等计算资源不足的问题,影响数据校验的稳定性。
发明内容
有鉴于此,本申请提供一种数据的校验方法,可以提高数据校验的稳定性。
本申请第一方面提供一种数据的校验方法,可以应用于终端设备中包含数据的校验功能的***或程序中,具体包括:
获取主数据库中执行的源实例所对应的第一数据表;
将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,所述外部实例采用的计算资源与所述源实例采用的计算资源不同;
对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表;
执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;
将所述第二数据表输入所述外部实例,并基于所述外部实例对所述第二数据表进行所述中立数据形式的转换,以得到第二字节流数据,所述外部实例采用的计算资源与所述目的实例采用的计算资源不同;
对所述第二字节流数据进行校验,以将对应的校验结果写入第二校验表;
基于所述第一校验表与所述第二校验表进行比对,以确定目标校验结果。
可选的,在本申请一些可能的实现方式中,所述将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,包括:
将所述第一数据表输入所述外部实例,并对所述第一数据表对应的数据配置共享锁,所述共享锁用于指示所述第一数据表对应的数据不被更改;
基于所述外部实例对配置共享锁后的所述第一数据表进行中立数据形式的转换,以得到所述第一字节流数据。
可选的,在本申请一些可能的实现方式中,所述基于所述外部实例对配置共享锁后的所述第一数据表进行中立数据形式的转换,以得到所述第一字节流数据,包括:
确定所述第一数据表的数据类型
基于类型对照表获取所述第一数据块的数据类型所对应的中间数据类型;
基于所述中间数据类型对所述第一数据块进行中立数据形式的转换,以得到所述第一字节流数据。
可选的,在本申请一些可能的实现方式中,所述将所述第一数据表输入所述外部实例,并对所述第一数据表对应的数据配置共享锁,包括:
将所述第一数据表输入所述外部实例,并确定所述第一数据表对应的区间参数;
基于所述区间参数配置所述共享锁,以对所述第一数据表对应的数据配置共享锁。
可选的,在本申请一些可能的实现方式中,所述对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表,包括:
确定所述第一字节流数据中的数据块;
依次对所述第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值;
确定所述第一字节流数据中的数据块对应的行数信息;
将所述行数信息与所述循环冗余值进行关联,以将关联后的数据作为校验结果写入所述第一校验表。
可选的,在本申请一些可能的实现方式中,所述依次对所述第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值,包括:
确定所述第一字节流数据中第一数据块的左边界;
获取所述第一数据块的右边界,并对第二数据块的左边界进行确定;
若确定存在所述第二数据块的左边界,则对所述第一数据块的左边界和所述第一数据块的右边界之间的数据进行循环冗余计算,以得到所述循环冗余值。
可选的,在本申请一些可能的实现方式中,所述方法还包括:
若确定不存在所述第二数据块的左边界,则获取所述第一字节流数据中的最大值;
基于所述第一字节流数据中的最大值作为所述第一数据块的右边界。
本申请第二方面提供一种数据的校验装置,包括:
获取单元,用于获取主数据库中执行的源实例所对应的第一数据表;
输入单元,用于将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,所述外部实例采用的计算资源与所述源实例采用的计算资源不同;
校验单元,用于对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表;
所述获取单元,还用于执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;
所述输入单元,还用于将所述第二数据表输入所述外部实例,并基于所述外部实例对所述第二数据表进行所述中立数据形式的转换,以得到第二字节流数据,所述外部实例采用的计算资源与所述目的实例采用的计算资源不同;
所述校验单元,还用于对所述第二字节流数据进行校验,以将对应的校验结果写入第二校验表;
所述校验单元,还用于基于所述第一校验表与所述第二校验表进行比对,以确定目标校验结果。
可选的,在本申请一些可能的实现方式中,所述输入单元,具体用于将所述第一数据表输入所述外部实例,并对所述第一数据表对应的数据配置共享锁,所述共享锁用于指示所述第一数据表对应的数据不被更改;
所述输入单元,具体用于基于所述外部实例对配置共享锁后的所述第一数据表进行中立数据形式的转换,以得到所述第一字节流数据。
可选的,在本申请一些可能的实现方式中,所述输入单元,具体用于确定所述第一数据表的数据类型
所述输入单元,具体用于基于类型对照表获取所述第一数据块的数据类型所对应的中间数据类型;
所述输入单元,具体用于基于所述中间数据类型对所述第一数据块进行中立数据形式的转换,以得到所述第一字节流数据。
可选的,在本申请一些可能的实现方式中,所述输入单元,具体用于将所述第一数据表输入所述外部实例,并确定所述第一数据表对应的区间参数;
所述输入单元,具体用于基于所述区间参数配置所述共享锁,以对所述第一数据表对应的数据配置共享锁。
可选的,在本申请一些可能的实现方式中,所述校验单元,具体用于确定所述第一字节流数据中的数据块;
所述校验单元,具体用于依次对所述第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值;
所述校验单元,具体用于确定所述第一字节流数据中的数据块对应的行数信息;
所述校验单元,具体用于将所述行数信息与所述循环冗余值进行关联,以将关联后的数据作为校验结果写入所述第一校验表。
可选的,在本申请一些可能的实现方式中,所述校验单元,具体用于确定所述第一字节流数据中第一数据块的左边界;
所述校验单元,具体用于获取所述第一数据块的右边界,并对第二数据块的左边界进行确定;
所述校验单元,具体用于若确定存在所述第二数据块的左边界,则对所述第一数据块的左边界和所述第一数据块的右边界之间的数据进行循环冗余计算,以得到所述循环冗余值。
可选的,在本申请一些可能的实现方式中,所述校验单元,具体用于若确定不存在所述第二数据块的左边界,则获取所述第一字节流数据中的最大值;
所述校验单元,具体用于基于所述第一字节流数据中的最大值作为所述第一数据块的右边界。
本申请第三方面提供一种计算机设备,包括:存储器、处理器以及总线***;所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行上述第一方面或第一方面任一项所述的数据的校验方法。
本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一项所述的数据的校验方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可选实现方式中提供的数据的校验方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
通过获取主数据库中执行的源实例所对应的第一数据表;然后将第一数据表输入外部实例,并基于外部实例对第一数据表进行中立数据形式的转换,以得到第一字节流数据,该外部实例采用的计算资源与源实例采用的计算资源不同;并对第一字节流数据进行校验,以将对应的校验结果写入第一校验表;进一步的执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;然后将第二数据表输入外部实例,并基于外部实例对第二数据表进行中立数据形式的转换,以得到第二字节流数据,外部实例采用的计算资源与目的实例采用的计算资源不同;并对第二字节流数据进行校验,以将对应的校验结果写入第二校验表;进而基于第一校验表与第二校验表进行比对,以确定目标校验结果。从而实现体外的数据校验过程,由于外部实例的校验计算过程不会占用主数据库的实例计算资源,且通中立数据形式可以匹配不同类型的数据库进行数据校验,提高了数据校验的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为数据的校验***运行的网络架构图;
图2为本申请实施例提供的一种数据的校验的流程架构图;
图3为本申请实施例提供的一种数据的校验方法的流程图;
图4为本申请实施例提供的一种数据的校验方法的场景示意图;
图5为本申请实施例提供的一种数据的校验方法的流程示意图;
图6为本申请实施例提供的一种数据的校验装置的结构示意图;
图7为本申请实施例提供的一种终端设备的结构示意图;
图8为本申请实施例提供的一种服务器的结构示意图。
具体实施方式
本申请实施例提供了一种数据的校验方法以及相关装置,可以应用于终端设备中包含数据的校验功能的***或程序中,通过获取主数据库中执行的源实例所对应的第一数据表;然后将第一数据表输入外部实例,并基于外部实例对第一数据表进行中立数据形式的转换,以得到第一字节流数据,该外部实例采用的计算资源与源实例采用的计算资源不同;并对第一字节流数据进行校验,以将对应的校验结果写入第一校验表;进一步的执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;然后将第二数据表输入外部实例,并基于外部实例对第二数据表进行中立数据形式的转换,以得到第二字节流数据,外部实例采用的计算资源与目的实例采用的计算资源不同;并对第二字节流数据进行校验,以将对应的校验结果写入第二校验表;进而基于第一校验表与第二校验表进行比对,以确定目标校验结果。从而实现体外的数据校验过程,由于外部实例的校验计算过程不会占用主数据库的实例计算资源,且通中立数据形式可以匹配不同类型的数据库进行数据校验,提高了数据校验的稳定性。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本申请实施例中可能出现的一些名词进行解释。
GTID:事务全局标识符(Global Transaction IDentidfier,GTID),由(源)数据库产生关联到每一个提交事务的全局唯一标识符
Binlog:MySQL的二进制日志,主要用于MySQL主从服务器之间的复制
DDL:数据定义语言(Data Definition Language),是SQL语言集中,负责数据结构定义与数据库对象定义的语言
DML:数据操作语言(Data Manipulation Language),是SQL语言集中,负责对数据库对象运行数据访问工作的指令集
SQL:结构化查询语言,是一种特定目的编程语言。
Replication协议:MySQL数据库支持的一个数据库到另外一个数据库同步变更的协议。
CRC:循环冗余校验码。
Checksum:校验结果,本文中是指CRC校验产生的校验结果。
图1为一个实施例中数据校验方法的应用环境图。参照图1,该数据校验方法应用于数据校验***。该数据校验***包括主数据库所在服务器110、从数据库所在服务器120和校验服务器130。主数据库所在服务器110、从数据库所在服务器120和校验服务器120通过网络连接。其中,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实以是同一个服务器110或者从数据库所在服务器120的其中一个,也可以是独立于主数据库所在服务器110和从数据库所在。
具体地,校验服务器130可运行有数据校验工具,校验服务器130则可通过该数据校验工具执行该数据校验方法。其中,数据校验工具具体可以通过计算程序实现,该计算机程序被执行时即可执行该数据校验方法。
本实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电、车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,终端以及服务器可以连接组成区块链网络,本申请在此不做限制。
随着计算机技术的发展与数据量的飞速增长,数据库的使用越来越普遍。用户在使用数据库的过程中,时常会遇到需要比较主从数据库一致性的场景,比如在修复了主从同步问题之后需要确认数据是否一致,或者在数据迁移之后校验迁移数据是否正确等。
一般,对于数据校验的计算都是依赖于数据库实例本身的函数以及资源(如CPU、内存等)来进行计算。
但是,数据库的计算资源有限,在大量数据的校验场景中,容易出现过载等计算资源不足的问题,影响数据校验的稳定性。
为了解决上述问题,本申请提出了一种数据的校验方法,该方法应用于图2所示的数据的校验的流程框架中,如图2所示,为本申请实施例提供的一种数据的校验的流程架构图,图中示出了在主数据库中的源实例和从数据库中的目的实例之外进行实时数据校验,在数据校验的过程中不使用源实例和目的实例的资源进行计算(输入外部实例);进一步的采用数据库数据类型中立(即不依赖于任何具体的数据库类型)的数据表示方法以及中立的CRC校验算法,极大的降低了对源实例和目的实例的影响,拓展了数据校验方法的应用场景、提升了数据校验方法的使用体验。
可以理解的是,上述数据的校验***可以运行于个人移动终端,例如:作为数据管理这样的应用,也可以运行于服务器,还可以作为运行于第三方设备以提供数据的校验,以得到信息源的数据的校验处理结果;具体的数据的校验***可以是以一种程序的形式在上述设备中运行,也可以作为上述设备中的***部件进行运行,还可以作为云端服务程序的一种,本实施例可应用于云技术、自动驾驶等场景,具体运作模式因实际场景而定,此处不做限定。
可以理解的是,本申请所提供的方法可以为一种程序的写入,以作为硬件***中的一种处理逻辑,也可以作为一种数据的校验装置,采用集成或外接的方式实现上述处理逻辑。作为一种实现方式,该数据的校验装置通过获取主数据库中执行的源实例所对应的第一数据表;然后将第一数据表输入外部实例,并基于外部实例对第一数据表进行中立数据形式的转换,以得到第一字节流数据,该外部实例采用的计算资源与源实例采用的计算资源不同;并对第一字节流数据进行校验,以将对应的校验结果写入第一校验表;进一步的执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;然后将第二数据表输入外部实例,并基于外部实例对第二数据表进行中立数据形式的转换,以得到第二字节流数据,外部实例采用的计算资源与目的实例采用的计算资源不同;并对第二字节流数据进行校验,以将对应的校验结果写入第二校验表;进而基于第一校验表与第二校验表进行比对,以确定目标校验结果。从而实现体外的数据校验过程,由于外部实例的校验计算过程不会占用主数据库的实例计算资源,且通中立数据形式可以匹配不同类型的数据库进行数据校验,提高了数据校验的稳定性。
结合上述流程架构,下面将对本申请中数据的校验方法进行介绍,请参阅图3,图3为本申请实施例提供的一种数据的校验方法的流程图,该管理方法可以是由服务器或终端执行的,本申请实施例至少包括以下步骤:
301、获取主数据库中执行的源实例所对应的第一数据表。
本实施例中,主数据库和后文中的从数据库,是存在数据迁移关系或者数据同步关系的两个相互独立的数据库。通常情况下,是由主数据库将数据迁移或者同步至从数据库中。数据库是存储数据的仓库,其本质是一个文件***,将数据按照特定的格式将存储起来。用户可以对数据库中的数据进行增加、修改、删除及查询等操作。数据库中以表为组织单位存储数据,即数据表。校验表也是数据表,用于对数据的校验结果进行记录。
在一个具体的实施例中,主数据库和从数据库均为关系型数据库。
具体地,校验服务器可先确定待在主数据库与从数据库之间进行数据一致性校验的数据表。这里的数据一致性校验,是指校验主数据库与从数据库中相应的两个数据表之间数据的一致性。
可以理解,在修复了主从同步问题或者进行数据迁移之后,通常需要校验主从数据库中的数据一致性,以保证主从间正常同步或者数据迁移成功等。那么,这里待在主数据库与从数据库之间进行数据一致性校验的数据表,可以是主从同步的数据表,也可以是数据迁移后的数据表。待在主数据库与从数据库之间进行数据一致性校验的数据表的数量可以为一个或者多个。
进一步地,校验服务器可对主数据库中待进行数据一致性校验的数据表,以下称作第一数据表,进行校验,并将得到的校验结果写入第一校验表。这里对第一数据表进行的校验,异于前述的数据一致性校验,是指按照预设的校验方式对数据表中的数据进行校验。这里的校验方式有多种,比如循环冗余校验(Cyclic Redundancy Check,CRC)或者异或校验(Block Check Character,BCC)等。
具体的,对于上述计算过程,在MySQL实例上的测算过程中,pt-table-checksum在单线程计算的过程中需要约1~1.5个CPU以及数GB的内存空间,而CPU和内存是数据库实例最为宝贵的资源。实际上,有些实例的规格本身就非常小,比如1C2G(也即是1个CPU、2GB内存)的规格,数据校验的过程对于实例的影响非常大。对于小规格实例,在使用校验进行时会导致数据库实例频繁的发生OOM(Out Of Memory,内存或资源耗尽错误)重启,导致数据库实例不可用;对于大规格实例,占用额外的计算资源可能会导致本身的资源消耗上升,导致负载提供,容易引起慢查询,甚至是OOM导致实例重启。另外一方面,由于这部分资源消耗并不在事先的规划内,还可能随着数据库中数据本身的特征而波动,因而导致实际的影响难以预期。
故本实施例在源实例和目的实例之外进行实时数据校验,在数据校验的过程中采用源实例和目的实例外的资源(不使用实例资源)进行校验计算,降低了对数据库能力以及资源的依赖,极大的降低了对源实例和目的实例的影响,拓展了数据校验方法的应用场景、提升了数据校验方法的使用体验。
302、将第一数据表输入外部实例,并基于外部实例对第一数据表进行中立数据形式的转换,以得到第一字节流数据。
本实施例中,外部实例采用的计算资源与源实例采用的计算资源不同;即以数据读出代价换取在外部实例上做CRC校验,相当于以数据读取时的实例极少量的计算资源+带宽资源,换取了更加宝贵的实例上的计算资源(主要为CPU+内存),极大的降低了对源实例和目的实例的影响。
可选的,为了保证校验计算过程中数据的有效性,可以将第一数据表输入外部实例,并对第一数据表对应的数据配置共享锁,共享锁用于指示第一数据表对应的数据不被更改。进一步的基于外部实例对配置共享锁后的第一数据表进行中立数据形式的转换,以得到第一字节流数据。
具体的,配置共享锁可以是针对于一定区间的数据,例如当前数据块中的数据,或整个数据(后续进行分块处理)。即首先将第一数据表输入外部实例,并确定第一数据表对应的区间参数;例如将计算区间[lowerBound,upperBound]内的所有数据从数据库读出来,并且对这一区间的数据加共享锁(即是读锁),直到事务的结束;由于整个计算过程是在一个事务里面执行的,这样保证了在计算校验的过程中,这一段数据不会被更改;进一步的基于区间参数配置共享锁,以对第一数据表对应的数据配置共享锁。
具体的,对于中立数据形式的转换过程可以首先确定第一数据表的数据类型;然后基于类型对照表获取第一数据块的数据类型所对应的中间数据类型,具体的,类型对照表如表1所示,此处为MYSQL数据类型的实例,其他数据库类型也可以采用该方式,此处不作限定;进而基于中间数据类型对第一数据块进行中立数据形式的转换,以得到第一字节流数据(比如对于MySQL BinInt类型的数据,会转换为int64类型,并用8位字节流表示,默认采用小端表示,其他具体转换规则见图5),从而实现将从数据库中读出来的数据转换为字节流的方法,关系到数据库的数据类型***与中立的数据表示方式。
在一种可能的场景中,以MySQL数据为例提出一种可行的中立数据转换过程,中立数据表示的定义可以使得异构数据库的校验成为可能,不同数据库的同一个数值的表示方法在数据库中可能并不一样,但通过中立数据的表示会转换成相同的字节数组,让不同数据库中的数值比较成为可能,提高数据校验过程的适配范围。
表1数据类型对照表
303、对第一字节流数据进行校验,以将对应的校验结果写入第一校验表。
本实施例中,对第一字节流数据进行校验的过程可以是对第一字节流数据划分所得而定多个数据块chunk进行的,即首先确定第一字节流数据中的数据块;然后依次对第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值;并确定第一字节流数据中的数据块对应的行数信息;例如使用标准化的IEEE CRC32来做计算,循环计算数据的CRC值,记为@crc;另外一方面,统计读出的数据行数,记为@cnt。该计算过程在实例外完成;然后将行数信息与循环冗余值进行关联,以将关联后的数据作为校验结果写入第一校验表,进而将主要计算的结果@crc、@cnt以及其他元数据记录到第一校验表中。
具体的,对于逐块计算的过程,可以首先确定第一字节流数据中第一数据块的左边界;然后获取第一数据块的右边界,并对第二数据块的左边界进行确定;若确定存在第二数据块的左边界,则对第一数据块的左边界和第一数据块的右边界之间的数据进行循环冗余计算,以得到循环冗余值。
可以理解的是,若确定不存在第二数据块的左边界,则获取第一字节流数据中的最大值;基于第一字节流数据中的最大值作为第一数据块的右边界,即该第一字节流数据对应的数据计算完成。
在一种可能的场景中,步骤301-303的过程可以通过下述代码实现:
```sql
set@lowerBound=1;/*当前分区下边界*/
set@upperBound=1000;/*当前分区上边界*/
set@currentChunk=1;/*当前分区号*/
BEGIN;
①@result=SELECT`id`,`name`,`type`FROM`database`.`table`
FORCE INDEX(`PRIMARY`)
WHERE((`id`>='@lowerBound'))AND((`id`<='@upperBound'))
LOCK IN SHARE MODE;
②for@record in@result:
@crc=IEEE_CRC32(@crc+bytes(@record.`id`)+bytes(@record.`name`)+bytes(@record.`type`))
@cnt+=1
③INSERT INTO`__tencentdb__`.`checksums`
(db,tbl,chunk,chunk_index,lower_boundary,upper_boundary,this_cnt,this_crc)
values
('database','table','@currentChunk','PRIMARY','@lowerBound','@upperBound',@cnt,@crc)
COMMIT;
可以看到整个计算过程在一个事务中执行,以BEGIN语句开始,COMMIT语句结尾,中间包含三个关键的语句。
下面进行具体的代码释义:
第①句将计算区间[lowerBound,upperBound]内的所有数据从数据库读出来,并且对这一区间的数据加共享锁(即是读锁),直到事务的结束;由于整个计算过程是在一个事务里面执行的,这样保证了在计算校验的过程中,这一段数据不会被更改。
可以理解的还是,由于WHERE IN…SHARE MODE这一段以共享锁的方式锁住了@lowerBound到@upperBound之间的数据,在这个语句执行的过程中不会被其他操作修改,这也是原来整个算法正确的一个关键点。
可见,上述计算过程首先整个体外计算过程的所有操作是在一个事务里面,也是原子的;其次在第②句执行体外CRC计算之前,第①句同样采用SELECT…WHERE IN…SHAREMODE的句式锁住了@lowerBound到@upperBound之间的数据,直到这个事务执行完才释放这个锁,因而图4中的方法与采用原方案类似的原理保证了正确性的基础不变,从而也论证了替换计算的正确性。
第②句,一方面将所有读取来的数据,使用自定义的校验方法:对其中的每一行,将所有列数据的字节流数组合(比如对于MySQL BinInt类型的数据,会转换为int64类型,并用8位字节流表示,默认采用小端表示,其他具体转换规则见图5),并使用标准化的IEEECRC32来做计算,循环计算数据的CRC值,记为@crc;另外一方面,统计读出的数据行数,记为@cnt。显然,这一计算过程在实例外完成。
第③句,将主要计算的结果@crc、@cnt以及其他元数据一起按之前类似的方式记录到checksum表中。
同理,在执行钩子时的计算方式也采用上述代码的过程,其余的步骤不变,即步骤304-306的过程也采用上述代码实现。
304、执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表。
本实施例中,钩子程序是处理事件的程序段。每当触发钩子程序所钩挂的特定事件时,钩子程序便被启动来执行相应的操作。在本实施例中,钩子程序所挂钩的特定事件,是主数据库中的第一数据表开始在外部实例中进行校验计算。
如图4所示,图4为本申请实施例提供的一种数据的校验方法的场景示意图;
主数据库中包括数据表A1、A2、A3…,从数据库中包括数据表B1、B2、B3…,A1与B1为相应的数据表,A2与B2为相应的数据表。在本实施例中,数据一致性校验过程即为校验A1与B1的数据一致性以及A2与B2的数据一致性。假设在某一时间点对数据表A1中的数据块ai进行校验,得到第一校验结果Ji记录到主数据库的校验表中;同时将校验表输入外部实例,以通过主数据库的二进制日志中产生一条相应的日志记录Ck。在对数据表A1中的数据块ai+1进行校验前,通过其他用户的操作,对数据表A2进行了一次操作,同时主数据库的二进制日志中产生相应的日志记录Ck+1,对数据表A1中的数据块ai+1进行校验,在主数据库的二进制日志中产生一条相应的日志记录Ck+2。在从数据库中重放主数据库的二进制日志的日志记录时,当重放至日志记录Ck,根据日志记录Ck对数据表B1的数据块bi进行校验,bi与ai为对应的数块;当继续重放至日志记录Ck+1,根据日志记录Ck+1对数据表B2进行同步;当继续重放至日志记录Ck+2,根据日志记录Ck+2对数据表B1的数据块bi+1进行校验,bi+1与ai+1为对应的数块,并继续重放日志记录。
在本实施例中,可以在线地比较有主从关系的两个数据库之间的数据差异,即使主从之间仍存在实时数据同步,或者存在对主数据库的读写操作。
下面结合图5所示的场景,对主数据库与从数据库之间进行数据校验的过程进行说明,图5为本申请实施例提供的一种数据的校验方法的流程示意图;假定源库到目的库进行数据对比的表为t1,t2,...,tn,一共n张表,并且假定迁移源库和目标库满足一直在保持数据同步,并且不存在同步错误。图4所示的具体的流程为:
1、创建cdb.checksums(校验表)。
具体的,即首先连接到源库;然后用数据库原生支持的Replication协议接管源库的Binlog数据,过滤数据只将与待对比的表相关的Binlog数据存放在消息队列里面,将消息队列里面Binlog数据按需在从库上重放;并在源库上创建存储数据对比临时数据的表cdb.checksums;然后设置数据库的隔离级别为Repeatable Read;其中,建表语句通过Binlog在目的库上重放,从而在目的库上也创建了cdb.checksums表。
2、选择待校验表A的唯一键作为chuck字段。
具体的,即对于其中任何一张表t1,找到一个这个表的一个唯一键,按照主键将表的数据划分成一个个的小数据块chuck,比如第1-1000,1001-1999,...条数据等等。
3、确认第一个chuck的左边界。比如1-1000数据块的左边界为1。
4、删除checksums表中待检验的历史信息。
具体的,即删除checksums表中对于这一个数据块的校验结果,删除操作经Binlog同步到从库,从库上也会删除checksums中相同数据块的历史校验结果;
5、获取当前chuck的右边界,以及下一个chuck的左边界。
6、如果不存在下一个chuck的左边界,则获取当前chuck的最大值作为chuck的右边界(记为y)。
7、如果存在下一个chuck的左边界,则在一个事务中,计算chuck的校验结果以及行数写入checksums表。
具体的,开启事务(即为开启外部实例),计算该数据块chuck的所有列组合起来的CRC校验值this_crc,以及当前数据块chuck的行数this_count,将结果记录在checksums表中,读取数据块时使用的select…in share mode语句,结束事务;
当Binlog重放模块发现将在从库slave上重放***某个数据块的校验结果时,从Binlog中获取这个库表的校验信息,***钩子程序,对从库slave上相同库表的相同数据块的所有字段数据执行相同的CRC校验算法,并获取行数,将结果***到checksums表中。
8、查询获取this_crc,this_count值。
9、通过update将上一步获取的值更新到对应的值更新到对应的master_crc,master_count中。
具体的,即将上一步中获取的this_crc,this_count值,更新到checksums中对应数据库校验值的master_crc,master_count中。
另外,更新在master中的值通过Binlog在从库中重放,使得更新也在从库上生效;
重复执行步骤5-9,直到没有数据块为止
进一步的,检验checksums表中的每个表的每个数据块的校验结果,输出有哪些数据块是不一致的;如果所有数据块的校验结果一致,说明主从数据是一致的。
305、将第二数据表输入外部实例,并基于外部实例对第二数据表进行中立数据形式的转换,以得到第二字节流数据。
本实施例中,外部实例采用的计算资源与目的实例采用的计算资源不同;即以数据读出代价换取在外部实例上做CRC校验,相当于以数据读取时的实例极少量的计算资源+带宽资源,换取了更加宝贵的实例上的计算资源(主要为CPU+内存),极大的降低了对源实例和目的实例的影响。
具体的,对于第二数据表的处理过程,参见步骤302对于第一数据表的处理逻辑,此处不作赘述。
306、对第二字节流数据进行校验,以将对应的校验结果写入第二校验表。
本实施例中,对于目的实例中的校验过程,参见步骤302对于源实例的校验过程,此处不作赘述。
具体的,在分块校验的过程中,从数据库的执行逻辑参见图5中步骤7所示的过程,此处不作赘述。
307、基于第一校验表与第二校验表进行比对,以确定目标校验结果。
本实施例中,第一校验表和第二校验表都是校验表,是用于记录校验结果的数据表。具体地,第一校验表具体可以是主数据库中的校验表,用于记录对主数据库中数据表进行校验的校验结果;第二校验表具体可以是从数据库中的校验表,用于记录对从数据库中数据表进行校验的校验结果。这样,对比第一校验表与第二校验表即可得到对主数据库与从数据库进行数据一致性校验的结果。
具体地,在外部实例可对比第一校验表和第二校验表中记录的校验结果,输出有哪些数据表的校验结果是不一致的。如果所有数据表的校验结果一致,说明主从数据是一致的。
在本实施例中,以数据读出代价换取在实例上做CRC校验,相当于以数据读取时的实例极少量的计算资源+带宽资源,换取了更加宝贵的实例上的计算资源(主要为CPU+内存),极大的降低了对源实例和目的实例的影响,拓展了数据校验方法的应用场景(在小规格实例上也可以做数据校验),提升了数据校验方法的使用体验,具有非常重要的实用意义。同时,采用数据库数据类型中立(即不依赖于任何具体的数据库类型)的数据表示方法以及中立的CRC校验算法,让本实施例不只是适用于某种特定数据库类型,实际上源数据库满足支持事务,以及区间读锁或者表锁即可。
结合上述实施例可知,通过获取主数据库中执行的源实例所对应的第一数据表;然后将第一数据表输入外部实例,并基于外部实例对第一数据表进行中立数据形式的转换,以得到第一字节流数据,该外部实例采用的计算资源与源实例采用的计算资源不同;并对第一字节流数据进行校验,以将对应的校验结果写入第一校验表;进一步的执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;然后将第二数据表输入外部实例,并基于外部实例对第二数据表进行中立数据形式的转换,以得到第二字节流数据,外部实例采用的计算资源与目的实例采用的计算资源不同;并对第二字节流数据进行校验,以将对应的校验结果写入第二校验表;进而基于第一校验表与第二校验表进行比对,以确定目标校验结果。从而实现体外的数据校验过程,由于外部实例的校验计算过程不会占用主数据库的实例计算资源,且通中立数据形式可以匹配不同类型的数据库进行数据校验,提高了数据校验的稳定性。
为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图6,图6为本申请实施例提供的一种数据的校验装置的结构示意图,数据的校验装置600包括:
获取单元601,用于获取主数据库中执行的源实例所对应的第一数据表;
输入单元602,用于将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,所述外部实例采用的计算资源与所述源实例采用的计算资源不同;
校验单元603,用于对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表;
所述获取单元601,还用于执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;
所述输入单元602,还用于将所述第二数据表输入所述外部实例,并基于所述外部实例对所述第二数据表进行所述中立数据形式的转换,以得到第二字节流数据,所述外部实例采用的计算资源与所述目的实例采用的计算资源不同;
所述校验单元603,还用于对所述第二字节流数据进行校验,以将对应的校验结果写入第二校验表;
所述校验单元603,还用于基于所述第一校验表与所述第二校验表进行比对,以确定目标校验结果。
可选的,在本申请一些可能的实现方式中,所述输入单元602,具体用于将所述第一数据表输入所述外部实例,并对所述第一数据表对应的数据配置共享锁,所述共享锁用于指示所述第一数据表对应的数据不被更改;
所述输入单元602,具体用于基于所述外部实例对配置共享锁后的所述第一数据表进行中立数据形式的转换,以得到所述第一字节流数据。
可选的,在本申请一些可能的实现方式中,所述输入单元602,具体用于确定所述第一数据表的数据类型
所述输入单元602,具体用于基于类型对照表获取所述第一数据块的数据类型所对应的中间数据类型;
所述输入单元602,具体用于基于所述中间数据类型对所述第一数据块进行中立数据形式的转换,以得到所述第一字节流数据。
可选的,在本申请一些可能的实现方式中,所述输入单元602,具体用于将所述第一数据表输入所述外部实例,并确定所述第一数据表对应的区间参数;
所述输入单元602,具体用于基于所述区间参数配置所述共享锁,以对所述第一数据表对应的数据配置共享锁。
可选的,在本申请一些可能的实现方式中,所述校验单元603,具体用于确定所述第一字节流数据中的数据块;
所述校验单元603,具体用于依次对所述第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值;
所述校验单元603,具体用于确定所述第一字节流数据中的数据块对应的行数信息;
所述校验单元603,具体用于将所述行数信息与所述循环冗余值进行关联,以将关联后的数据作为校验结果写入所述第一校验表。
可选的,在本申请一些可能的实现方式中,所述校验单元603,具体用于确定所述第一字节流数据中第一数据块的左边界;
所述校验单元603,具体用于获取所述第一数据块的右边界,并对第二数据块的左边界进行确定;
所述校验单元603,具体用于若确定存在所述第二数据块的左边界,则对所述第一数据块的左边界和所述第一数据块的右边界之间的数据进行循环冗余计算,以得到所述循环冗余值。
可选的,在本申请一些可能的实现方式中,所述校验单元603,具体用于若确定不存在所述第二数据块的左边界,则获取所述第一字节流数据中的最大值;
所述校验单元603,具体用于基于所述第一字节流数据中的最大值作为所述第一数据块的右边界。
通过获取主数据库中执行的源实例所对应的第一数据表;然后将第一数据表输入外部实例,并基于外部实例对第一数据表进行中立数据形式的转换,以得到第一字节流数据,该外部实例采用的计算资源与源实例采用的计算资源不同;并对第一字节流数据进行校验,以将对应的校验结果写入第一校验表;进一步的执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;然后将第二数据表输入外部实例,并基于外部实例对第二数据表进行中立数据形式的转换,以得到第二字节流数据,外部实例采用的计算资源与目的实例采用的计算资源不同;并对第二字节流数据进行校验,以将对应的校验结果写入第二校验表;进而基于第一校验表与第二校验表进行比对,以确定目标校验结果。从而实现体外的数据校验过程,由于外部实例的校验计算过程不会占用主数据库的实例计算资源,且通中立数据形式可以匹配不同类型的数据库进行数据校验,提高了数据校验的稳定性。
本申请实施例还提供了一种终端设备,如图7所示,是本申请实施例提供的另一种终端设备的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)、车载电脑等任意终端设备,以终端为手机为例:
图7示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(radio frequency,RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作,以及在触控面板731上一定范围内的隔空触控操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监测。可选的,处理器780可包括一个或多个处理单元;可选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),可选的,电源可以通过电源管理***与处理器780逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器780还具有执行如上述页面处理方法的各个步骤的功能。
本申请实施例还提供了一种服务器,请参阅图8,图8是本申请实施例提供的一种服务器的结构示意图,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。
服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作***841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由管理装置所执行的步骤可以基于该图8所示的服务器结构。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有数据的校验指令,当其在计算机上运行时,使得计算机执行如前述图3至图5所示实施例描述的方法中数据的校验装置所执行的步骤。
本申请实施例中还提供一种包括数据的校验指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图3至图5所示实施例描述的方法中数据的校验装置所执行的步骤。
本申请实施例还提供了一种数据的校验***,所述数据的校验***可以包含图6所描述实施例中的数据的校验装置,或图7所描述实施例中的终端设备,或者图8所描述的服务器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,数据的校验装置,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种数据的校验方法,其特征在于,包括:
获取主数据库中执行的源实例所对应的第一数据表;
将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,所述外部实例采用的计算资源与所述源实例采用的计算资源不同;
对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表;
执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;
将所述第二数据表输入所述外部实例,并基于所述外部实例对所述第二数据表进行所述中立数据形式的转换,以得到第二字节流数据,所述外部实例采用的计算资源与所述目的实例采用的计算资源不同;
对所述第二字节流数据进行校验,以将对应的校验结果写入第二校验表;
基于所述第一校验表与所述第二校验表进行比对,以确定目标校验结果。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,包括:
将所述第一数据表输入所述外部实例,并对所述第一数据表对应的数据配置共享锁,所述共享锁用于指示所述第一数据表对应的数据不被更改;
基于所述外部实例对配置共享锁后的所述第一数据表进行中立数据形式的转换,以得到所述第一字节流数据。
3.根据权利要求2所述的方法,其特征在于,所述基于所述外部实例对配置共享锁后的所述第一数据表进行中立数据形式的转换,以得到所述第一字节流数据,包括:
确定所述第一数据表的数据类型
基于类型对照表获取所述第一数据块的数据类型所对应的中间数据类型;
基于所述中间数据类型对所述第一数据块进行中立数据形式的转换,以得到所述第一字节流数据。
4.根据权利要求2所述的方法,其特征在于,所述将所述第一数据表输入所述外部实例,并对所述第一数据表对应的数据配置共享锁,包括:
将所述第一数据表输入所述外部实例,并确定所述第一数据表对应的区间参数;
基于所述区间参数配置所述共享锁,以对所述第一数据表对应的数据配置共享锁。
5.根据权利要求1所述的方法,其特征在于,所述对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表,包括:
确定所述第一字节流数据中的数据块;
依次对所述第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值;
确定所述第一字节流数据中的数据块对应的行数信息;
将所述行数信息与所述循环冗余值进行关联,以将关联后的数据作为校验结果写入所述第一校验表。
6.根据权利要求5所述的方法,其特征在于,所述依次对所述第一字节流数据中的数据块进行循环冗余计算,以得到循环冗余值,包括:
确定所述第一字节流数据中第一数据块的左边界;
获取所述第一数据块的右边界,并对第二数据块的左边界进行确定;
若确定存在所述第二数据块的左边界,则对所述第一数据块的左边界和所述第一数据块的右边界之间的数据进行循环冗余计算,以得到所述循环冗余值。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若确定不存在所述第二数据块的左边界,则获取所述第一字节流数据中的最大值;
基于所述第一字节流数据中的最大值作为所述第一数据块的右边界。
8.一种数据的校验装置,其特征在于,包括:
获取单元,用于获取主数据库中执行的源实例所对应的第一数据表;
输入单元,用于将所述第一数据表输入外部实例,并基于所述外部实例对所述第一数据表进行中立数据形式的转换,以得到第一字节流数据,所述外部实例采用的计算资源与所述源实例采用的计算资源不同;
校验单元,用于对所述第一字节流数据进行校验,以将对应的校验结果写入第一校验表;
所述获取单元,还用于执行钩子程序,以获取从数据库中执行的目的实例所对应的第二数据表;
所述输入单元,还用于将所述第二数据表输入所述外部实例,并基于所述外部实例对所述第二数据表进行所述中立数据形式的转换,以得到第二字节流数据,所述外部实例采用的计算资源与所述目的实例采用的计算资源不同;
所述校验单元,还用于对所述第二字节流数据进行校验,以将对应的校验结果写入第二校验表;
所述校验单元,还用于基于所述第一校验表与所述第二校验表进行比对,以确定目标校验结果。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行权利要求1至7任一项所述的数据的校验方法。
10.一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令存储于计算机可读存储介质,其特征在于,所述计算机可读存储介质中的所述计算机程序/指令被处理器执行时实现上述权利要求1至7任一项所述的数据的校验方法的步骤。
CN202210288716.0A 2022-03-23 2022-03-23 一种数据的校验方法、装置以及存储介质 Pending CN116841794A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210288716.0A CN116841794A (zh) 2022-03-23 2022-03-23 一种数据的校验方法、装置以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210288716.0A CN116841794A (zh) 2022-03-23 2022-03-23 一种数据的校验方法、装置以及存储介质

Publications (1)

Publication Number Publication Date
CN116841794A true CN116841794A (zh) 2023-10-03

Family

ID=88169343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210288716.0A Pending CN116841794A (zh) 2022-03-23 2022-03-23 一种数据的校验方法、装置以及存储介质

Country Status (1)

Country Link
CN (1) CN116841794A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117289876A (zh) * 2023-11-22 2023-12-26 苏州元脑智能科技有限公司 一种数据写入方法、***、装置、介质及四级单元闪存

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117289876A (zh) * 2023-11-22 2023-12-26 苏州元脑智能科技有限公司 一种数据写入方法、***、装置、介质及四级单元闪存
CN117289876B (zh) * 2023-11-22 2024-02-23 苏州元脑智能科技有限公司 一种数据写入方法、***、装置、介质及四级单元闪存

Similar Documents

Publication Publication Date Title
US10789322B2 (en) Short link processing to improve service efficiency
CN110147237B (zh) 一种冗余资源去除方法和装置
CN104063409B (zh) 一种数据库的字段增加方法和***
US11223471B2 (en) Blockchain-type data storage
CN106502833A (zh) 数据备份方法及装置
CN116841794A (zh) 一种数据的校验方法、装置以及存储介质
CN113032160B (zh) 一种数据同步的管理方法以及相关装置
US11204933B2 (en) Data manipulation record storage method, system, apparatus, and device
CN111367996B (zh) 基于kv索引的热数据增量同步方法及装置
EP3671459A1 (en) Method and apparatus for generating log data having increased filterability
WO2020015415A1 (zh) 一种终端重启方法及装置
CN115113989B (zh) 事务执行方法、装置、计算设备及存储介质
CN113157496B (zh) 应用于数据恢复的处理方法、相关装置、设备及存储介质
CN112988913B (zh) 一种数据处理方法和相关装置
CN114996369A (zh) 一种数据仓库指标库的构建方法和装置
CN111242635A (zh) 售后数据维护方法及***
CN115811520B (zh) 分布式***中主节点的选举方法、装置和电子设备
CN115565215B (zh) 一种人脸识别算法切换方法、装置及存储介质
US20230394008A1 (en) Distributed file access method and related device
CN116644128A (zh) 一种基于区块链的数据处理方法、装置以及存储介质
CN116257503A (zh) 一种数据迁移处理方法、装置、设备及存储介质
CN106372186A (zh) 播放列表的同步方法、装置及播放终端
CN116881143A (zh) 一种数据对象复制异常排查方法、装置、设备及存储介质
CN117743355A (zh) 一种分布式数据库并发更新方法、装置、设备及存储介质
CN116932625A (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