CN115794964A - 一种数据验证方法、装置、计算机设备和存储介质 - Google Patents
一种数据验证方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115794964A CN115794964A CN202211519384.9A CN202211519384A CN115794964A CN 115794964 A CN115794964 A CN 115794964A CN 202211519384 A CN202211519384 A CN 202211519384A CN 115794964 A CN115794964 A CN 115794964A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- type
- coding information
- 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
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开提供了一种数据验证方法、装置、计算机设备和存储介质,其中,该方法包括:响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;数据类型数组用于按照存储时序维护原始数据存储在关系数据库时所采用的数据类型,数据编码信息包括各条原始数据的子编码信息;按照数据类型数组中,指示数据类型的类型指示值的排列顺序位,从数据编码信息中,依次确定出从起始序号到目标序号对应的各条原始数据的子编码信息;对目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据待验证原始数据和目标数据,确定验证结果。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种数据验证方法、装置、计算机设备和存储介质。
背景技术
在区块链技术中,服务端中的可信关系数据库用于以数据表的形式存储来自客户端的客户端数据,每条客户端数据在数据表中对应于一个列(column)数据,存储在可信关系数据库的各个column数据不仅具有不可篡改的特性,还具有去中心化、加密等优良特性。
但是服务端对获取的客户端数据进行存储时,对客户端而言是无感知的,因此服务端最终存储在可信关系数据库中的column数据是否正确,针对客户端而言也将是未知的。若此时用户产生了在客户端对服务端存储的column数据进行验证的需求,客户端将是无法满足的。因此,如何实现在客户端对服务端可信关系数据库中的column数据进行高效验证,成为了一个亟需解决的问题。
发明内容
本公开实施例至少提供一种数据验证方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种数据验证方法,包括:
响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;所述数据类型数组用于按照存储时序维护原始数据存储在所述关系数据库时所采用的数据类型,所述数据编码信息包括各条所述原始数据的子编码信息;
按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息;
对所述目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据所述待验证原始数据和所述目标数据,确定验证结果。
在一种可能的实施方式中,所述按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息,包括:
根据各个所述类型指示值的排序顺序位和所述目标序号,确定排序顺序位与所述目标序号相匹配的第一类型指示值和排序顺序位小于所述目标序号的各个第二类型指示值;
按照各个所述第二类型指示值的排序顺序位,从所述数据编码信息中,确定从所述起始序号到中间序号对应的各条原始数据的子编码信息;所述中间序号与所述目标序号相邻且小于所述目标序号;
根据所述中间序号对应的原始数据的所述子编码信息,确定所述目标序号对应的原始数据在所述数据编码信息中的起始计算位置;
根据所述第一类型指示值和起始计算位置,从所述数据编码信息中确定所述目标序号对应的原始数据的目标子编码信息。
在一种可能的实施方式中,所述根据所述第一类型指示值和起始计算位置,从所述数据编码信息中确定所述目标序号对应的原始数据的目标子编码信息,包括:
根据所述第一类型指示值,确定所述目标序号对应的原始数据的目标数据类型以及所述目标数据类型的类型设置规则;所述类型设置规则用于指示具有所述目标数据类型的数据能否置为空值;
在所述类型设置规则指示所述目标数据类型无法置为空值的情况下,从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置;
根据位于所述终点位置和所述起始计算位置之间的数据编码信息,确定所述目标子编码信息。
在一种可能的实施方式中,在确定所述类型设置规则之后,还包括:
在所述类型设置规则指示所述目标数据类型能够置为空值的情况下,根据所述起始计算位置和所述空值对应的第一预设字符长度,从所述数据编码信息中确定中间计算位置;
根据所述中间计算位置、所述目标数据类型和所述数据编码信息,确定所述终点位置;
根据位于所述终点位置和所述起始计算位置之间的数据编码信息,确定目标子编码信息。
在一种可能的实施方式中,所述第一类型指示值为整数;
根据所述第一类型指示值,确定所述目标数据类型的类型设置规则,包括:
在所述第一类型指示值为奇数的情况下,确定所述目标数据类型的类型设置规则为指示所述目标数据类型能够置为空值的第一设置规则;
在所述第一类型指示值为偶数的情况下,确定所述目标数据类型的类型设置规则为指示所述目标数据类型无法置为空值的第二设置规则。
在一种可能的实施方式中,所述从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置,包括:
在所述目标数据类型为字符长度可变类型的情况下,根据所述数据编码信息,从所述起始计算位置起选取具有第二预设字符长度的中间子编码信息;
根据所述中间子编码信息指示的目标字符长度和所述中间子编码信息,从所述数据编码信息中确定所述终点位置。
在一种可能的实施方式中,所述从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置,包括:
在所述目标数据类型为多种预设字符类型中的任一种字符类型的情况下,确定该字符类型对应的目标字符长度;所述多种预设字符类型对应的字符长度均不可变;
根据所述数据编码信息、所述起始计算位置和所述目标字符长度,确定所述终点位置。
第二方面,本公开实施例还提供一种数据验证装置,包括:
获取模块,用于响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;所述数据类型数组用于按照存储时序维护原始数据存储在所述关系数据库时所采用的数据类型,所述数据编码信息包括各条所述原始数据的子编码信息;
第一确定模块,用于按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息;
第二确定模块,用于对所述目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据所述待验证原始数据和所述目标数据,确定验证结果。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述数据验证装置、计算机设备、及计算机可读存储介质的效果描述参见上述数据验证方法的说明,这里不再赘述。
本公开实施例提供的数据验证方法、装置、计算机设备和存储介质,由于数据类型数组中的类型指示值用于指示所述原始数据存储在关系数据库时所采用的数据类型,所以根据获取的数据类型数组中的类型指示值,能够准确解析出服务端在存储各条原始数据所使用的数据类型。进而,根据确定的各个原始数据的数据类型,能够依次确定出各原始数据对应的数据长度;然后基于确定出的数据长度以及数据编码信息,可以在数据编码信息中,顺序确定从起始序号到目标序号对应的各条原始数据分别对应的子编码信息,如此也就可以得到目标序号对应的原始数据的目标子编码信息。通过对目标子编码信息进行解码处理,可以准确得到编码前对应的待验证原始数据。最后,通过对待验证原始数据和目标数据进行对比,可以实现服务端存储的与任一目标序号相匹配的待验证原始数据的细粒度验证。也即,基于本公开实施例,先通过服务端对各条原始数据对应的数据类型进行序列化得到数据类型数组,再利用客户端对数据类型数组进行解析,并基于解析结果对数据编码信息进行处理,可以实现在客户端对服务端存储的待验证原始数据的反序列化,基于反序列化的结果可以高效地实现对服务端存储的原始数据的细粒度验证。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据验证方法的流程图;
图2示出了本公开实施例所提供的一种数据验证装置的示意图;
图3示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
经研究发现,常见的可信关系数据库产品包括甲骨文区块链表(OracleBlockchain Table)、量子分类账数据库(Quantum Ledger Database,简称QLDB)、可信账本数据库(Ledger Database,简称LedgerDB)等。但是,针对Oracle Blockchain Table和QLDB而言,在对可信关系数据库中的数据进行数据验证时,验证操作均由服务端自身完成,不涉及客户端。而针对LedgerDB而言,其虽然提供了在客户端进行数据验证的方法,但由于LedgerDB中不存在结构化的数据,所以无法实现细粒度地数据验证。
基于上述研究,本公开提供了一种数据验证方案,由于数据类型数组中的类型指示值用于指示所述原始数据存储在关系数据库时所采用的数据类型,所以根据获取的数据类型数组中的类型指示值,能够准确解析出服务端在存储各条原始数据所使用的数据类型。进而,根据确定的各个原始数据的数据类型,能够依次确定出各原始数据对应的数据长度;然后基于确定出的数据长度以及数据编码信息,可以在数据编码信息中,顺序确定从起始序号到目标序号对应的各条原始数据分别对应的子编码信息,如此也就可以得到目标序号对应的原始数据的目标子编码信息。通过对目标子编码信息进行解码处理,可以准确得到编码前对应的待验证原始数据。最后,通过对待验证原始数据和目标数据进行对比,可以实现服务端存储的与任一目标序号相匹配的待验证原始数据的细粒度验证。也即,基于本公开实施例,先通过服务端对各条原始数据对应的数据类型进行序列化得到数据类型数组,再利用客户端对数据类型数组进行解析,并基于解析结果对数据编码信息进行处理,可以实现在客户端对服务端存储的待验证原始数据的反序列化,基于反序列化的结果可以高效地实现对服务端存储的原始数据的细粒度验证。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据验证方法进行详细介绍,本公开实施例所提供的数据验证方法的执行主体一般为具有一定计算能力的终端设备或其他处理设备,其中终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、个人数字助理设备(Personal Digital Assistant,PDA)、手持设备、计算机设备等;在一些可能的实现方式中,该数据验证方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为数据验证为例对本公开实施例提供的数据验证方法加以说明。
如图1所示,为本公开实施例提供的一种数据验证方法的流程图,可以包括以下步骤:
S101:响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;数据类型数组用于按照存储时序维护原始数据存储在关系数据库时所采用的数据类型,数据编码信息包括各条原始数据的子编码信息。
这里,目标数据可以为客户端存储的数据,是客户端按照自身的编码规则对待存储数据进行编码后得到的数据。待存储数据可以为任一类型的数据,例如交易数据、账本数据等。每个待存储数据还可以由客户端发送至服务端,服务端将获取的各个待存储数据作为原始数据,按照自身具有的编码规则对原始数据进行编码,得到各个原始数据的编码信息,同时将原始数据的编码信息以数据表的形式存储在关系数据库中,一条原始数据在数据表中对应于一个列数据,即column数据。各个原始数据在存储时具有存储时间的先后顺序,也即形成了存储时序,不同的原始数据在存储时可以使用不同的数据类型,各个原始数据在存储时所使用的数据类型可以使用该原始数据对应的类型指示值标识。也即,数据类型数组中可以包括各条原始数据分别对应的类型指示值,各个类型指示值用于按照对应的原始数据的存储时序存储在数据类型数组中。
需要说明的是,客户端的编码规则和服务端的编码规则是不同的,本公开实施例中的待存储数据可以为应用在区块链技术中的数据。
示例性的,一个数据表的定义可以如下所示:
col1 nullable INT(data type 497),
col2 VARCHAR(20)(data type 448),
col3 CHAR(8)(data type 452)。
其中,该数据表中包括3条column数据,即col1、col2和col3。其中,col1的数据类型为可置为空值(nullable)的整数(INT)类型,其类型指示值(data type)为497;col2的数据类型为字符长度可变类型(VARCHAR),字符长度需要动态获取,类型指示值(data type)为448;col3的数据类型为长度不可变的字符类型(CHAR),字符长度为8,类型指示值(datatype)为452。col1对应的原始数据为1,col2对应的原始数据为hello,col3对应的原始数据为ledger,服务端的编码方式可以为被EBCDIC CCSID 37编码方式,利用该方式进行编码后,col1的编码信息可以为0x0080000001,col2的编码信息可以为0x0005c885939396、col3的编码信息可以为0xd385848785994040,由col1、col2和col3组成的数据编码信息可以为0x00800000010005c885939396d385848785994040。一个原始数据的类型指示值可以由服务端根据存储该原始数据时所使用的数据类型确定,其中,在关系数据库中存储原始数据即为存储该原始数据的编码信息。
关系数据库也称可信关系数据库,是一种应用在区块链技术中的数据库,存储在可信关系数据库中的原始数据可以用于计算默克尔树(Merkle Tree)中节点的摘要信息(digest)。
存储在客户端的每个目标数据均可以存在一个按序生成的交易序号,其中,交易序号也即日记账序号(journal sequence number,简称jsn或rsn),由于目标数据为对待存储数据进行编码后生成的,所以目标数据的jsn也为目标数据对应的待存储数据的jsn。同理,由于每个待存储数据在服务端均会对应一个原始数据,所以每个待存储数据的jsn也为该待存储数据对应的原始数据的jsn。
数据类型数组为服务端在接收来自客户端的数据验证请求后,根据数据表中各条column数据对应的类型指示值生成的数组,其中可以包括各个原始数据分别对应的类型指示值,各个类型指示值在数据类型数组中具有排序顺序位,排序顺序位与存储时序相关。例如,根据col1、col2和col3分别对应的类型指示值生成的数据类型数组可以为[497,448,452]。数据类型数组中的类型指示值的排序顺序位根据该类型指示值对应的原始数据在数据表中的位置确定。示例性的,由于col1在数据表中的位置位于col2在数据表中的位置之前,col2在数据表中的位置位于col3在数据表中的位置之前,所以col1对应的类型指示值的排序顺序位大于col2对应的类型指示值的排序顺序位大于col3对应的类型指示值的排序顺序位,也即,在数据类型数组[497,448,452]中,497位于第一排序顺序位,448位于第二排序顺序位,452位于第三排序顺序位。
服务端在生成各条原始数据的编码信息之后,可以将各条原始数据的编码信息组合在一起进行存储,如上述示例,可以将col1、col2和col3的编码信息组合成0x00800000010005c885939396d385848785994040。组合后的编码信息即为数据编码信息,各条原始数据对应的编码信息即为数据编码信息中的子编码信息。
针对具有目标序号的目标数据的验证操作可以为用户触发针对目标序号的客户端验证操作,如点击目标序号的操作。
具体实施时,当用户触发针对任一目标序号(即目标jsn)的客户端验证时,客户端可以确定存在对具有目标jsn的目标数据的验证需求,然后可以向服务端发送数据验证请求。之后,服务端可以依次遍历可信关系数据库中的各个数据表,根据数据表中的类型指示值,生成数据类型数组,同时获取包括各条原始数据的子编码信息的数据编码信息。然后,服务端可以将数据类型数组和数据编码信息反馈至客户端。需要说明的是,可信关系数据库中的数据表的数量可以为一个或多个,本公开实施例不进行具体限定。例如,数据表的数量可以根据实际需要存储的数据量确定。
S102:按照数据类型数组中,指示数据类型的类型指示值的排列顺序位,从数据编码信息中,依次确定出从起始序号到目标序号对应的各条原始数据的子编码信息。
这里,目标序号对应的原始数据的子编码信息,是客户端从数据编码信息中确定出的与目标序号相匹配的编码信息,也可以称为目标子编码信息。目标子编码信息对应的类型指示值在数据类型数组中的排列顺序位具体可以为目标序号的值。示例性的,在目标序号为3的情况下,目标子编码信息对应的类型指示值在数据类型数组中的排列顺序位可以为第三位。客户端中可以预先设置有结构化查询语言(Structured Query Language,简称SQL)类型解释器,该解释器用于根据类型指示值确定该类型指示值指示的字符长度,以及根据指示的字符长度确定子编码信息。
起始序号可以为最先存储的原始数据的jsn,在数据类型数组中,起始序号即为排序顺序位为第一位的类型指示值对应的原始数据的jsn。示例性的,起始序号可以为1。
具体实施时,以与目标序号相匹配的排序顺序位为目标顺序位,目标顺序位为10为例,可以按照每个类型指示值在数据类型数组的排序顺序位,利用SQL类型解释器,依次根据每个类型指示值,确定每个原始数据的编码信息对应的字符长度,然后利用确定的各个字符长度,从数据编码信息中,依次确定出从1到10对应的各条原始数据的子编码信息。
以确定col3对应的目标子编码信息为例,col3对应的目标顺序位为3,在具体实施时,可以先根据第一位的类型指示值497和第二位的类型指示值448,从数据编码信息0x00800000010005c885939396d385848785994040中,依次确定出col1和col2对应的子编码信息。然后,可以根据col3对应的类型指示值确定col3的字符长度,再根据col2对应的子编码信息的末尾位置和该字符长度,确定出col3对应的目标子编码信息。
在一种实施例中,针对S102,可以按照以下步骤实施:
S102-1:根据各个类型指示值在数据类型数组中的排序顺序位和目标序号,确定排序顺序位与目标序号相匹配的第一类型指示值和排序顺序位小于目标序号的各个第二类型指示值。
示例性的,针对数据类型数组[497,448,452],497的排序顺序位为第一位,448的排序顺序位为第二位,452的排序顺序位为第三位。若目标序号为2,则第一类型指示值即为448,第二类型指示值即为497;若目标序号为3,则第一类型指示值即为452,第二类型指示值即为497和448。
需要说明的是,针对验证目标序号为1的目标数据的情况,由于与目标序号1相匹配的排序顺序位即为第一位,因此,在数据类型数组中不存在排序顺序位小于目标序号的各个第二类型指示值。在这种情况下,可以直接根据第一类型指示值指示的字符长度,从数据编码信息中的首个编码数据起,确定目标子编码信息。
S102-2:按照各个第二类型指示值的排序顺序位,从数据编码信息中,确定从起始序号到中间序号对应的各条原始数据的子编码信息;中间序号与目标序号相邻且小于目标序号。
这里,中间序号可以为目标序号的前一序号。例如,在目标序号为6时,中间序号即为5;在目标号为10时,中间序号即为9;在目标序号为100时,中间序号即为99。
具体实施时,可以按照排序顺序位由小到大的顺序,利用SQL类型解释器,根据各个第二类型指示值,从数据编码信息中的首个编码数据处开始,依次确定从起始序号到中间序号对应的各条原始数据的子编码信息。其中,关于根据各个第二类型指示值确定子编码信息的步骤,可以参照后续根据第一类型指示值确定目标子编码信息的步骤,此处不再赘述。
S102-3:根据中间序号对应的原始数据的子编码信息,确定目标序号对应的原始数据在数据编码信息中的起始计算位置。
具体实施时,可以确定中间序号对应的原始数据的子编码信息的最后一位编码数据,将数据编码信息中位于该最后一位编码数据后、且与该最后一位编码数据相邻的编码数据所在的位置,作为起始计算位置。
示例性的,在目标序号为3的情况下,中间序号为2,若数据编码信息为0x00800000010005c885939396d385848785994040,且根据中间序号为2对应的第二类型指示值497,确定对应的原始数据的子编码信息为0x0005c885939396,则可以将位于编码数据6之后的编码数据d所在的位置,作为起始计算位置。
S102-4:根据第一类型指示值和起始计算位置,从数据编码信息中确定目标序号对应的原始数据的目标子编码信息。
示例性的,可以根据第一类型指示值,确定目标序号对应的原始数据的目标子编码信息的字符长度,然后按照该字符长度,从起始计算位置起,在数据编码信息中顺序确定出目标子编码信息。
在另一种实施方式中,在确定第一类型指示值和第二类型指示值之后,也可以先确定各个第二类型指示值分别指示的字符长度的长度和,然后根据数据编码信息中的首个编码数据以及长度和,确定起始计算位置。这样,利用长度和确定起始计算位置,无需从数据编码信息中分别确定出各个第二类型指示值分别对应的子编码信息,有利于减少计算量。
在一种实施例中,数据表中的各个column数据在存储时,不仅可以设置数据类型,还可以设置是否允许该column数据为空值的类型设置规则。因此,类型指示值可以由原始数据在存储时使用的数据类型以及指示该数据类型的数据是否能够置为空值的类型设置规则确定。针对上述S102-4,可以按照以下步骤实施:
S102-4-1:根据第一类型指示值,确定目标序号对应的原始数据的目标数据类型以及目标数据类型的类型设置规则;类型设置规则用于指示具有目标数据类型的数据能否置为空值。
这里,服务端存储的一个原始数据具有一个序号,所以服务端存储的原始数据中包括目标序号对应的原始数据,该原始数据的序号即为目标序号。目标序号对应的原始数据的目标数据类型即为服务端在存储该原始数据时所使用的数据类型。不同的数据类型可以存在不同的类型设置规则,一个数据类型对应的类型设置规则,用于指示具有该数据类型的数据是否可以为空值。其中,可空的(nullable)用于指示数据可以为空值,也即,nullable对应的类型设置规则指示具有目标数据类型的数据能置为空值;非空(not null)用于指示数据不能为空值。也即,not null对应的类型设置规则指示具有目标数据类型的数据不能置为空值。
类型指示值除可以指示数据类型外,还可以指示该类型指示值对应的原始数据的类型设置规则。具体实施时,可以预先存储类型指示值与数据类型之间的关联关系,然后,可以根据第一类型指示值以及关联关系,确定第一类型指示值指示的目标数据类型(即目标序号对应的原始数据的目标数据类型),同时,可以根据第一类型指示值确定目标数据类型的类型设置规则。
其中,类型指示值具体可以为整数,在根据第一类型指示值确定目标数据类型的类型设置规则时,可以根据第一类型指示值的奇偶性确定。具体的,在第一类型指示值为奇数的情况下,可以确定目标数据类型的类型设置规则为指示目标数据类型能够置为空值的第一设置规则。或者,在第一类型指示值为偶数的情况下,可以确定目标数据类型的类型设置规则为指示目标数据类型无法置为空值的第二设置规则。
示例性的,针对col1而言,由于col1对应的类型指示值为奇数497,所以col1对应的类型设置规则为第一设置规则,而根据col1对应的数据表信息(即col1 nullable INT)可知,col1为可置为空值的nullable,也即验证了col1对应的类型设置规则为第一设置规则。
S102-4-2:在类型设置规则指示目标数据类型无法置为空值的情况下,从起始计算位置起,根据目标数据类型和数据编码信息,确定终点位置。
这里,数据是否能够置为空值,也将会影响数据对应的编码信息的长度。具体的,在数据能置为空值时,则需要预设一定数量的字符用于表征空值,例如预设两个字符;在数据不能置为空值时,则无需预设字符。
在具体实施时,在类型设置规则指示目标数据类型无法置为空值的情况下,则可以确定数据编码信息中不存在与目标子编码信息相关的预设字符,则可以直接起始计算位置起,根据目标数据类型指示的字符长度和数据编码信息,确定终点位置。
示例性的,在目标序号为3,起始计算位置为编码数据d的情况下,根据col3对应的类型指示值452可知,col3对应的目标数据类型无法置为空值,则可以直接从编码数据d处开始,根据目标数据类型指示的字符长度,确定出目标子编码信息的终点位置为数据编码信息中的最后一个编码数据0所在的位置。
在一种实施例中,针对确定终点位置的步骤,可以根据具体的目标数据类型确定。具体的,在目标数据类型为字符长度可变类型的情况下,根据数据编码信息,从起始计算位置起选取具有第二预设字符长度的中间子编码信息;中间子编码信息用于表征目标序号对应的原始数据的目标字符长度。
这里,字符长度可变类型可以为VARCHAR类型。这里,由于目标数据类型为字符长度可变类型,所以需要在每次计算时,动态获取目标序号对应的原始数据的目标字符长度。第二预设字符长度的中间子编码信息用于表征VARCHAR类型数据对应的编码信息的字符长度。示例性的,第二预设字符长度可以为2,即两个字符,对应于4个编码数据,也即,2个编码数据的字符长度为1。
示例性的,针对col2而言,起始计算位置为0005中的第一个编码数据0所在的位置,其对应的类型指示值448指示的目标数据类型为VARCHAR类型,可以根据第二预设字符长度(2),从起始计算位置处选取具有第二预设字符长度的中间子编码信息(即0x0005)。根据中间子编码信息可知目标序号对应的原始数据(即hello)的目标字符长度为5。
然后,可以根据中间子编码信息指示的目标字符长度和中间子编码信息,从目标编码信息中确定终点位置。
仍以col2为例,在目标字符长度为5,中间子编码信息为0x0005,根据目标字符长度可以确定与目标序号相匹配的原始数据对应的编码数据为10个,所以可以从中间子编码信息后的第一个编码数据c开始,顺序选取10个编码数据,将第10个编码数据所在的位置作为终点位置,也即确定终点位置为编码数据6所在的位置。
在另一种实施例中,在目标数据类型为多种预设字符类型中的任一种字符类型的情况下,确定该字符类型对应的目标字符长度;多种预设字符类型对应的字符长度均不可变。这里,多种预设字符类型可以包括Int类型、Char类型、长(long)类型、短(short)类型、浮点(float)类型等。每种预设字符类型对应的目标字符长度是固定的。
示例性的,在第一类型指示值指示的目标数据类型为INT类型的情况下,目标字符长度可以为3,对应于6个编码数据;在第一类型指示值指示的目标数据类型为Char类型的情况下,目标字符长度可以为8,对应于16个编码数据。
进一步的,在确定目标字符长度的情况下,可以根据数据编码信息、起始计算位置和目标字符长度,确定终点位置。
示例性的,针对col3而言,起始计算位置为编码数据d所在的位置,char类型对应的目标字符长度为8,因此,可以从编码数据d开始,确定第16个编码数据0所在的位置为终点位置(即4040中最后一个编码数据0所在的位置)。
S102-4-3:根据位于终点位置和起始计算位置之间的数据编码信息,确定目标子编码信息。
示例性的,可以将位于终点位置和起始计算位置之间的编码数据、以及终点位置和起始计算位置分别对应的编码数据提取出来,作为目标子编码信息。例如,针对col1而言,起始计算位置为0080中的第一个0所在的位置,终点位置为编码数据1所在的位置,因此可以将位于编码数据0和编码数据1之间的编码数据、编码数据0和编码数据1提取出来,得到col1对应的目标子编码信息0x0080000001。针对col2而言,起始计算位置为0005中的第一个0所在的位置,终点位置为编码数据6所在的位置,因此可以将位于编码数据0和编码数据6之间的编码数据、编码数据0和编码数据6提取出来,得到col2对应的目标子编码信息0x0005c885939396。针对col3而言,起始计算位置为编码数据d所在的位置,终点位置为最后一个编码数据0所在的位置,因此可以将位于编码数据d和最后一个编码数据0之间的编码数据、编码数据d和最后一个编码数据0提取出来,得到目标子编码信息0xd385848785994040。
在另一种实施例中,在类型设置规则指示目标数据类型能够置为空值的情况下,可以根据起始计算位置和空值对应的第一预设字符长度,从数据编码信息中确定中间计算位置。
这里,第一预设字符长度用于指示空值对应的字符长度,可以根据服务端的编码方式确定。例如,在16进制的编码方式下,第一预设字符长度可以为2(对应于4个编码数据)。
示例性的,针对col1而言,起始计算位置为数据编码信息的首个编码数据所在位置,由于col1对应的类型指示值497为奇数,所以类型设置规则指示可以为空值,如此,可以根据起始计算位置和空值对应的第一预设字符长度,确定中间计算位置为80中的编码数据0所在的位置,也即,数据编码信息中前两个字节对应的编码数据0080为空值对应的编码数据。
然后,可以先根据中间计算位置、目标数据类型和数据编码信息,确定终点位置。再根据位于终点位置和起始计算位置之间的数据编码信息,确定目标子编码信息。
示例性的,可以从中间计算位置起,根据目标数据类型对应的字符长度,在数据编码信息中确定目标序号对应的原始数据的终点位置。
例如在,针对col1而言,目标数据类型为整数类型(int),整数类型对应的字符长度为3(对应于6个编码数据),所以根据该字符长度和中间计算位置,可以确定终点位置为编码数据1所在的位置。之后,可以根据终点位置和起始计算位置,确定出col1对应的子编码信息为0x0080000001。
S103:对目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据待验证原始数据和目标数据,确定验证结果。
这里,客户端中可以预设有数据解码规则,该数据解码规则可以根据服务端的编码方式确定并部署,待验证原始数据为客户端对目标子编码信息进行解码处理后得到的数据,在客户端成功解码的情况下,待验证原始数据即为目标子编码信息对应的原始数据。验证结果用于表征服务端存储的与目标序号相匹配的原始数据和目标数据是否一致,具体可以包括验证成功和验证失败,其中,验证成功用于指示数据一致,验证失败用于指示数据不一致。。
示例性的,在确定col3对应的目标子编码信息为0xd385848785994040的情况下,客户端可以按照预设的数据解码规则,对0xd385848785994040进行解码,得到待验证原始数据ledger。
在得到待验证原始数据之后,可以按照以下两种方式中的任一种方式确定验证结果:
方式一、客户端按照自身的编码规则对待验证原始数据进行编码,得到编码后的数据。判断编码后的数据与目标数据是否一致,若一致,则确定服务端存储的与目标序号相匹配的原始数据验证成功,目标数据也验证成功;若不一致,则确定服务端存储的与目标序号相匹配的原始数据验证失败,目标数据也验证失败。
方式二、客户端按照与自身的编码规则相匹配的解码规则,对目标数据进行解码处理,得到解码后的数据。判断解码后的数据与待验证原始数据是否一致,若一致,则确定服务端存储的与目标序号相匹配的原始数据验证成功,目标数据也验证成功;若不一致,则确定服务端存储的与目标序号相匹配的原始数据验证失败,目标数据也验证失败。
无论是基于上述方式一还是方式二,均可以在客户端实现对服务端存储的原始数据的细粒度验证,提高了数据验证的灵活性。
在一种实施方式中,预设的数据解码规则也可以根据服务端的编码方式以及客户端自身的编码方式之间的转换关系确定并部署在客户端,基于该解码规则,不仅可以实现对目标子编码信息的解码处理,还可以使得解码处理后得到的待验证原始数据直接与客户端的编码方式匹配。在这种情况下,在得到待验原始数据之后,可以直接判断待验证原始数据是否与目标数据一致,若一致,则可以确定验证成功,反之则可以确定验证失败。
这样,由于数据类型数组中的类型指示值用于指示所述原始数据存储在关系数据库时所采用的数据类型,所以根据获取的数据类型数组中的类型指示值,能够准确解析出服务端在存储各条原始数据所使用的数据类型。进而,根据确定的各个原始数据的数据类型,能够依次确定出各原始数据对应的数据长度;然后基于确定出的数据长度以及数据编码信息,可以在数据编码信息中,顺序确定从起始序号到目标序号对应的各条原始数据分别对应的子编码信息,如此也就可以得到目标序号对应的原始数据的目标子编码信息。通过对目标子编码信息进行解码处理,可以准确得到编码前对应的待验证原始数据。最后,通过对待验证原始数据和目标数据进行对比,可以实现服务端存储的与任一目标序号相匹配的待验证原始数据的细粒度验证。也即,基于本公开实施例,先通过服务端对各条原始数据对应的数据类型进行序列化得到数据类型数组,再利用客户端对数据类型数组进行解析,并基于解析结果对数据编码信息进行处理,可以实现在客户端对服务端存储的待验证原始数据的反序列化,基于反序列化的结果可以高效地实现对服务端存储的原始数据的细粒度验证。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与数据验证方法对应的数据验证装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据验证方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图2所示,为本公开实施例提供的一种数据验证装置的示意图,包括:
获取模块201,用于响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;所述数据类型数组用于按照存储时序维护原始数据存储在所述关系数据库时所采用的数据类型,所述数据编码信息包括各条所述原始数据的子编码信息;
第一确定模块202,用于按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息;
第二确定模块203,用于对所述目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据所述待验证原始数据和所述目标数据,确定验证结果。
在一种可能的实施方式中,所述第一确定模块202,在所述按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息时,用于:
根据各个所述类型指示值的排序顺序位和所述目标序号,确定排序顺序位与所述目标序号相匹配的第一类型指示值和排序顺序位小于所述目标序号的各个第二类型指示值;
按照各个所述第二类型指示值的排序顺序位,从所述数据编码信息中,确定从所述起始序号到中间序号对应的各条原始数据的子编码信息;所述中间序号与所述目标序号相邻且小于所述目标序号;
根据所述中间序号对应的原始数据的所述子编码信息,确定所述目标序号对应的原始数据在所述数据编码信息中的起始计算位置;
根据所述第一类型指示值和起始计算位置,从所述数据编码信息中确定所述目标序号对应的原始数据的目标子编码信息。
在一种可能的实施方式中,所述第一确定模块202,在所述根据所述第一类型指示值和起始计算位置,从所述数据编码信息中确定所述目标序号对应的原始数据的目标子编码信息时,用于:
根据所述第一类型指示值,确定所述目标序号对应的原始数据的目标数据类型以及所述目标数据类型的类型设置规则;所述类型设置规则用于指示具有所述目标数据类型的数据能否置为空值;
在所述类型设置规则指示所述目标数据类型无法置为空值的情况下,从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置;
根据位于所述终点位置和所述起始计算位置之间的数据编码信息,确定所述目标子编码信息。
在一种可能的实施方式中,所述第一确定模块202,在确定所述类型设置规则之后,还用于:
在所述类型设置规则指示所述目标数据类型能够置为空值的情况下,根据所述起始计算位置和所述空值对应的第一预设字符长度,从所述数据编码信息中确定中间计算位置;
根据所述中间计算位置、所述目标数据类型和所述数据编码信息,确定所述终点位置;
根据位于所述终点位置和所述起始计算位置之间的数据编码信息,确定目标子编码信息。
在一种可能的实施方式中,所述第一类型指示值为整数;
所述第一确定模块202,在根据所述第一类型指示值,确定所述目标数据类型的类型设置规则时,用于:
在所述第一类型指示值为奇数的情况下,确定所述目标数据类型的类型设置规则为指示所述目标数据类型能够置为空值的第一设置规则;
在所述第一类型指示值为偶数的情况下,确定所述目标数据类型的类型设置规则为指示所述目标数据类型无法置为空值的第二设置规则。
在一种可能的实施方式中,所述第一确定模块202,在所述从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置时,用于:
在所述目标数据类型为字符长度可变类型的情况下,根据所述数据编码信息,从所述起始计算位置起选取具有第二预设字符长度的中间子编码信息;
根据所述中间子编码信息指示的目标字符长度和所述中间子编码信息,从所述数据编码信息中确定所述终点位置。
在一种可能的实施方式中,所述第一确定模块202,在所述从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置时,用于:
在所述目标数据类型为多种预设字符类型中的任一种字符类型的情况下,确定该字符类型对应的目标字符长度;所述多种预设字符类型对应的字符长度均不可变;
根据所述数据编码信息、所述起始计算位置和所述目标字符长度,确定所述终点位置。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本申请实施例还提供了一种计算机设备。参照图3所示,为本申请实施例提供的一种计算机设备的结构示意图,包括:
处理器31、存储器32和总线33。其中,存储器32存储有处理器31可执行的机器可读指令,处理器31用于执行存储器32中存储的机器可读指令,所述机器可读指令被处理器31执行时,处理器31执行下述步骤:S101:响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;数据类型数组用于按照存储时序维护原始数据存储在关系数据库时所采用的数据类型,数据编码信息包括各条原始数据的子编码信息;S102:按照数据类型数组中,指示数据类型的类型指示值的排列顺序位,从数据编码信息中,依次确定出从起始序号到目标序号对应的各条原始数据的子编码信息以及S103:对目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据待验证原始数据和目标数据,确定验证结果。
上述存储器32包括内存321和外部存储器322;这里的内存321也称内存储器,用于暂时存放处理器31中的运算数据,以及与硬盘等外部存储器322交换的数据,处理器31通过内存321与外部存储器322进行数据交换,当计算机设备运行时,处理器31与存储器32之间通过总线33通信,使得处理器31在执行上述方法实施例中所提及的执行指令。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据验证方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的数据验证方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据验证方法的步骤,具体可参见上述方法实施例,在此不再赘述。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式、处理的个人信息种类等信息。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据验证方法,其特征在于,应用于客户端,包括:
响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;所述数据类型数组用于按照存储时序维护原始数据存储在所述关系数据库时所采用的数据类型,所述数据编码信息包括各条所述原始数据的子编码信息;
按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息;
对所述目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据所述待验证原始数据和所述目标数据,确定验证结果。
2.根据权利要求1所述的方法,其特征在于,所述按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息,包括:
根据各个所述类型指示值的排序顺序位和所述目标序号,确定排序顺序位与所述目标序号相匹配的第一类型指示值和排序顺序位小于所述目标序号的各个第二类型指示值;
按照各个所述第二类型指示值的排序顺序位,从所述数据编码信息中,确定从所述起始序号到中间序号对应的各条原始数据的子编码信息;所述中间序号与所述目标序号相邻且小于所述目标序号;
根据所述中间序号对应的原始数据的所述子编码信息,确定所述目标序号对应的原始数据在所述数据编码信息中的起始计算位置;
根据所述第一类型指示值和起始计算位置,从所述数据编码信息中确定所述目标序号对应的原始数据的目标子编码信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一类型指示值和起始计算位置,从所述数据编码信息中确定所述目标序号对应的原始数据的目标子编码信息,包括:
根据所述第一类型指示值,确定所述目标序号对应的原始数据的目标数据类型以及所述目标数据类型的类型设置规则;所述类型设置规则用于指示具有所述目标数据类型的数据能否置为空值;
在所述类型设置规则指示所述目标数据类型无法置为空值的情况下,从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置;
根据位于所述终点位置和所述起始计算位置之间的数据编码信息,确定所述目标子编码信息。
4.根据权利要求3所述的方法,其特征在于,在确定所述类型设置规则之后,还包括:
在所述类型设置规则指示所述目标数据类型能够置为空值的情况下,根据所述起始计算位置和所述空值对应的第一预设字符长度,从所述数据编码信息中确定中间计算位置;
根据所述中间计算位置、所述目标数据类型和所述数据编码信息,确定所述终点位置;
根据位于所述终点位置和所述起始计算位置之间的数据编码信息,确定目标子编码信息。
5.根据权利要求3所述的方法,其特征在于,所述第一类型指示值为整数;
根据所述第一类型指示值,确定所述目标数据类型的类型设置规则,包括:
在所述第一类型指示值为奇数的情况下,确定所述目标数据类型的类型设置规则为指示所述目标数据类型能够置为空值的第一设置规则;
在所述第一类型指示值为偶数的情况下,确定所述目标数据类型的类型设置规则为指示所述目标数据类型无法置为空值的第二设置规则。
6.根据权利要求3所述的方法,其特征在于,所述从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置,包括:
在所述目标数据类型为字符长度可变类型的情况下,根据所述数据编码信息,从所述起始计算位置起选取具有第二预设字符长度的中间子编码信息;
根据所述中间子编码信息指示的目标字符长度和所述中间子编码信息,从所述数据编码信息中确定所述终点位置。
7.根据权利要求3所述的方法,其特征在于,所述从所述起始计算位置起,根据所述目标数据类型和所述数据编码信息,确定终点位置,包括:
在所述目标数据类型为多种预设字符类型中的任一种字符类型的情况下,确定该字符类型对应的目标字符长度;所述多种预设字符类型对应的字符长度均不可变;
根据所述数据编码信息、所述起始计算位置和所述目标字符长度,确定所述终点位置。
8.一种数据验证装置,其特征在于,包括:
获取模块,用于响应于针对具有目标序号的目标数据的验证操作,从服务端获取关系数据库对应的数据类型数组和数据编码信息;所述数据类型数组用于按照存储时序维护原始数据存储在所述关系数据库时所采用的数据类型,所述数据编码信息包括各条所述原始数据的子编码信息;
第一确定模块,用于按照所述数据类型数组中,指示所述数据类型的类型指示值的排列顺序位,从所述数据编码信息中,依次确定出从起始序号到所述目标序号对应的各条原始数据的子编码信息;
第二确定模块,用于对所述目标序号对应的原始数据的目标子编码信息进行解码处理,得到待验证原始数据,并根据所述待验证原始数据和所述目标数据,确定验证结果。
9.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至7任意一项所述的数据验证方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至7任意一项所述的数据验证方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211519384.9A CN115794964A (zh) | 2022-11-30 | 2022-11-30 | 一种数据验证方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211519384.9A CN115794964A (zh) | 2022-11-30 | 2022-11-30 | 一种数据验证方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794964A true CN115794964A (zh) | 2023-03-14 |
Family
ID=85443691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211519384.9A Pending CN115794964A (zh) | 2022-11-30 | 2022-11-30 | 一种数据验证方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794964A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097736A (zh) * | 2023-10-19 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 资源数据处理方法、装置、电子设备及存储介质 |
-
2022
- 2022-11-30 CN CN202211519384.9A patent/CN115794964A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097736A (zh) * | 2023-10-19 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 资源数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tatti et al. | The long and the short of it: summarising event sequences with serial episodes | |
WO2016078608A1 (zh) | 一种道路编码方法及装置 | |
EP3072076B1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
Bille et al. | Fingerprints in compressed strings | |
CN108776673B (zh) | 关系模式的自动转换方法、装置及存储介质 | |
CN106649360B (zh) | 数据重复性校验方法及装置 | |
CN115794964A (zh) | 一种数据验证方法、装置、计算机设备和存储介质 | |
CN107634765A (zh) | 一种物联网编码方法及系统 | |
Soler-Toscano et al. | A computable measure of algorithmic probability by finite approximations with an application to integer sequences | |
CN111835808B (zh) | 数据存储方法及装置、数据读取方法及装置、存储介质 | |
Brown et al. | Evaluation of approximate comparison methods on Bloom filters for probabilistic linkage | |
CN109981113B (zh) | 一种ldpc码信息数据的盲获取方法 | |
CN105844214B (zh) | 一种基于比特空间的多路径深度编码的信息指纹提取方法 | |
KR102497634B1 (ko) | 문자 빈도 기반 서열 재정렬을 통한 fastq 데이터 압축 방법 및 장치 | |
CN112765136B (zh) | 医学编码词典的存储方法、升级方法和装置 | |
CN111563139B (zh) | Ocr识别发票药品名的校验方法、装置及计算机设备 | |
CN110909256B (zh) | 计算机用的人工智能信息过滤系统 | |
CN114153820A (zh) | 一种数据库迁移校验方法 | |
CN114647704A (zh) | 业务数据处理方法以及相关设备 | |
CN112989815A (zh) | 基于信息交互的文本相似度识别方法、装置、设备及介质 | |
JP2023513203A (ja) | 新しいコンテキストに基づくアライメントされた配列決定データにおける改善されたクオリティ値圧縮フレームワーク | |
CN107565979B (zh) | 一种编码方法及编码器 | |
CN110879810A (zh) | 数据处理方法及装置 | |
CN113792800B (zh) | 特征生成方法及装置、电子设备、存储介质 | |
KR102463665B1 (ko) | 원격 dbms 테이블간 고성능 테이블 데이터 정합성 검증 시스템 |
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 |