CN108763363B - 一种检验待写入记录的方法及装置 - Google Patents

一种检验待写入记录的方法及装置 Download PDF

Info

Publication number
CN108763363B
CN108763363B CN201810471681.8A CN201810471681A CN108763363B CN 108763363 B CN108763363 B CN 108763363B CN 201810471681 A CN201810471681 A CN 201810471681A CN 108763363 B CN108763363 B CN 108763363B
Authority
CN
China
Prior art keywords
record
written
key
value pair
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.)
Active
Application number
CN201810471681.8A
Other languages
English (en)
Other versions
CN108763363A (zh
Inventor
彭剑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201810471681.8A priority Critical patent/CN108763363B/zh
Publication of CN108763363A publication Critical patent/CN108763363A/zh
Application granted granted Critical
Publication of CN108763363B publication Critical patent/CN108763363B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种检验待写入记录的方法及装置。数据表的扩展字段中的至少一个子字段为指定子字段。当需要向数据表中写入记录时,根据待写入记录包含的扩展字段中对应于指定子字段的键值对,可确定出待写入记录对应的唯一标识,然后根据待写入记录对应的唯一标识,针对待写入记录进行字段值重复检验。

Description

一种检验待写入记录的方法及装置
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种检验待写入记录的方法及装置。
背景技术
众所周知,数据表是数据库存储数据所通常采用的数据结构。在数据表中,每一行是一个记录,每一列对应于一个字段(或称键、关键字、key等),确定了一个记录中包含的各字段的内容,也就确定了这个记录。一个记录中可以包含若干公共字段和一个扩展字段。值得强调的是,每个记录中都必须包含全部公共字段,但是并不是每个记录中都必须包含扩展字段。
需要说明的是,对于一个记录中包含的每个公共字段,该公共字段的内容通常是一个值,也就是该公共字段的值(value);对于一个记录中包含的扩展字段,该扩展字段的内容可以是不止一个子字段的值,为了明确扩展字段中每个子字段与其值之间的对应关系,扩展字段的内容通常是以键值对(key=value)的形式进行存储的。在一个key=value中,key表示扩展字段中的一个子字段,value表示这个子字段的值。此外需要说明的是,扩展字段中的子字段是可选的,也即各记录中包含的扩展字段中的子字段通常是不定量的,各记录中包含的扩展字段中的子字段也可以是不同的。
实际应用中,有些字段值不应出现“不同记录具有相同字段值”的情况,例如身份证号码、交易流水号等等,为了避免上述情况发生,在向数据表中写入数据时,需要进行字段值重复检验。对于公共字段,可以搜索数据表的各记录包含的该公共字段的值中是否存在待写入记录包含的该公共字段的值,一旦确定存在,就会认定待写入记录未通过检验,并拒绝写入。
对于扩展字段中的字段值不能重复的子字段,现有的字段值重复检验方式是:将待写入记录包含的扩展字段中对应于该子字段的键值对与数据表中每个记录包含的扩展字段中的全部键值逐一进行比较。这种检验方式存在效率较低的问题。
发明内容
针对上述技术问题,本说明书实施例提供一种检验待写入记录的方法及装置,技术方案如下:
根据本说明书实施例的第1方面,提供一种检验待写入记录的方法,数据表的扩展字段中的至少一个子字段为指定子字段,所述方法包括:
获取待写入记录;
根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对;
根据得到的键值对,确定所述待写入记录对应的唯一标识;
根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件;所述第一限制条件为,所述待写入记录包含的对应于指定子字段的键值对,应与所述数据表中任一记录包含的对应于指定子字段的键值对存在差异。
根据本说明书实施例的第2方面,提供另一种检验待写入记录的方法,数据表的扩展字段中的至少一个子字段为指定子字段,且,所述数据表的至少一个公共字段为指定公共字段,所述方法包括:
获取待写入记录;
根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对,以及确定所述待写入记录包含的指定公共字段的值,并得到对应于所述指定公共字段的键值对;
根据得到的各键值对,确定所述待写入记录对应的唯一标识;
根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第二限制条件;所述第二限制条件为,以所述待写入记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第一键值对集合,以所述数据表中任一记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第二键值对集合,所述第一键值对集合应与所述第二键值对集合存在差异。
根据本说明书实施例的第3方面,提供一种检验待写入记录的方法,数据表的扩展字段中的至少一个子字段为指定子字段,所述装置包括:
获取模块,获取待写入记录;
第一处理模块,根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对;
第二处理模块,根据所述第一处理模块得到的键值对,确定所述待写入记录对应的唯一标识;
检验模块,根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件;所述第一限制条件为,所述待写入记录包含的对应于指定子字段的键值对,应与所述数据表中任一记录包含的对应于指定子字段的键值对存在差异。
根据本说明书实施例的第4方面,数据表的扩展字段中的至少一个子字段为指定子字段,且,所述数据表的至少一个公共字段为指定公共字段,所述装置包括:
获取模块,获取待写入记录;
第一处理模块,根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对,以及确定所述待写入记录包含的指定公共字段的值,并得到对应于所述指定公共字段的键值对;
第二处理模块,根据所述第一处理模块得到的各键值对,确定所述待写入记录对应的唯一标识;
检验模块,根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第二限制条件;所述第二限制条件为,以所述待写入记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第一键值对集合,以所述数据表中任一记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第二键值对集合,所述第一键值对集合应与所述第二键值对集合存在差异。
本说明书实施例所提供的技术方案,数据表的扩展字段中的至少一个子字段为指定子字段。当需要向数据表中写入记录时,根据待写入记录包含的扩展字段中对应于指定子字段的键值对,可确定出待写入记录对应的唯一标识,然后根据待写入记录对应的唯一标识,针对待写入记录进行字段值重复检验。如此,可以有效提升字段值重复检验的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种检验待写入记录的方法的流程示意图;
图2是本说明书实施例提供的另一种检验待写入记录的方法的流程示意图;
图3是本说明书实施例提供的一种检验待写入记录的装置的结构示意图;
图4是本说明书实施例提供的另一种检验待写入记录的装置的结构示意图;
图5是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
此处继续对数据表这一数据结构进行详细解释。表1示出了常见的数据表(以学生成绩表为例)。
Figure BDA0001663418410000051
表1
表1中有3个记录,分别对应于3个学生(张三、李四和王五)。每个记录包含4个公共字段(key1、key2、key7和key8)和1个扩展字段。通常,只有扩展字段才具有子字段,表1中每个记录的扩展字段包含的子字段可以是从key3~key6中选定,各记录包含的扩展字段中的子字段可以不相同。例如,张三的记录包含的子字段为key3、key4和key6,而李四的记录包含的子字段为key3、key5和key6。
如前文所述,为了明确扩展字段中每个子字段与其值之间的对应关系,避免出现字段值错位的情况,扩展字段的内容通常是以键值对(key=value)的形式进行存储的。例如,张三的记录包含的扩展字段的内容实际上是key3的值、key4的值以及key6的值,为了标识出这三个值的归属,通常采用键值对的形式对字段值进行存储。
每个记录包含的扩展字段中有哪些子字段,可以根据实际业务需要选定。现以表1为例,结合具体场景进行说明。
针对张三,假设张三选修了美术课,且张三的语文成绩和数学成绩都比较优秀,因此,张三的记录包含的扩展字段中的子字段key3具体可以是“美术成绩”,相应的键值对“key3=value1”具体可以是“美术成绩=89”;子字段key4具体可以是“奖学金”,相应的键值对“key4=value2”具体可以是“奖学金=500元”。另外,子字段key6具体可以是“身份证号”,相应的键值对“key6=value3”具体可以是“身份证号=A”。
针对李四,假设李四也选修了美术课,且成绩与张三相同,而李四的语文成绩不及格,因此,李四的记录包含的扩展字段中也存在子字段key3“美术成绩”,相应的键值对“key3=value1”具体可以是“美术成绩=89”;子字段key5具体可以是“补考费”,相应的键值对“key5=value4”具体为“补考费=5元”。另外,键值对“key6=value5”具体可以是“身份证号=B”。
针对王五,假设王五也选修了美术课,而王五的数学成绩不及格,因此,李四的记录包含的扩展字段中的键值对“key3=value6”具体可以是“美术成绩=77”;键值对“key5=value4”具体为“补考费=5元”。另外,键值对“key6=value7”是“身份证号=C”。
如此,可以得到表2如下。
Figure BDA0001663418410000061
表2
实际应用中,出于业务考虑,需要避免出现字段值重复的情况。某些公共字段的值是不能重复的,例如,张三、李四、王五的学号不能重复。有时,也要求扩展字段中的某个子字段的值也是不能重复的,例如,张三、李四、王五的身份证号不能重复。值得强调的是,通常,每个记录中都包含全部的指定子字段。
另外,若扩展字段中不能重复的子字段为不止一个,则通常要求这些子字段的值不全部重复。例如,参见表2,倘若要求不能重复的子字段为美术成绩和身份证号,则对于张三和李四而言,不允许出现“张三与李四的美术成绩相同,且张三与李四的身份证号相同”的情况。
在本文中,将字段值不能重复的公共字段称为指定公共字段,将字段值不能重复的子字段称为指定子字段。
在现有技术中,可以将指定公共字段设置为唯一键(唯一键即是数据表中,内容需要接受唯一性约束的字段),如此,数据库管理设备就可以执行既定的代码逻辑(基于唯一键的唯一性约束检验),即搜索数据表的各记录包含的唯一键中,是否存在至少一个唯一键的内容与待写入记录包含的唯一键的内容是重复的(即是否存在唯一键冲突),一旦确定存在,就会认定待写入记录未通过检验,并拒绝写入。
然而,对于扩展字段而言,若采用将扩展字段设置为唯一键的方式,则仅能实现对待写入记录包含的扩展字段的内容(也就是扩展字段中的全部键值对)进行唯一性约束,却不能实现对待写入记录包含的扩展字段的部分内容(对应于一个或多个指定子字段的键值对)进行唯一性约束。
也就是说,每个记录包含的扩展字段中的键值对是不定量的(各记录的扩展字段中通常都有全量的指定子字段,但是各记录的扩展字段中可能有不同的非指定子字段,如表2中的张三的记录与李四的记录,张三的记录包含奖学金,李四的记录不包含奖学金,而是包含补考费),各记录包含的扩展字段中的键值对也往往是不同的,如果要在更细的粒度上,针对扩展字段中的指定子字段进行字段值重复检验(如在表2中,仅需要确保身份证号不重复,而其他子字段的值是可以重复的),则采用将扩展字段设置为唯一键的方式显然是无法达到目的的。例如,倘若待写入记录包含的扩展字段中的部分键值对(也恰恰是对应于指定子字段的键值对)是重复的,其他部分键值对是不重复的,那么,采用上述方式,该待写入记录会通过检验,进而被写入数据表,而实际上,这并不符合业务的要求。
为此,现有技术不得已采用了一种效率较为低下的检验方法,即将待写入记录包含的扩展字段中对应于指定子字段的键值对与数据表中每个记录包含的扩展字段中的全部键值对进行比较,比较过程中需要遍历每个记录包含的扩展字段中的全部键值对。若发现存在至少一个记录,其包含的扩展字段中存在待写入记录包含的对应于指定子字段的键值对,则认定待写入记录未通过检验,并拒绝写入。
而本发明的核心思想是,根据指定子字段对应的键值对,确定待写入记录对应的唯一标识,并根据所述唯一性标识对待写入记录进行检验。一方面,由于所述唯一标识往往是根据扩展字段中对应于指定子字段的键值对确定的,而不是根据扩展字段中的全部键值对确定的,因此,这可以实现对扩展字段中的部分键值对进行唯一性约束。另一方面,由于通过本说明书实施例进行字段值重复检验时,不必对数据表中每个记录包含的扩展字段中的全部键值对进行遍历,因此也可以提升字段值重复检验的效率。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的一种检验待写入记录的方法流程示意图,包括以下步骤:
S100:获取待写入记录。
本方法的执行主体可以是对数据库进行管理的设备(如个人计算机、服务器、服务器集群等),本文称之为数据库管理设备。所述数据库管理设备可以具体通过自身安装的数据库管理系统对数据库进行管理。
在本说明书实施例中,所述待写入记录是当前需要写入数据库的数据表中的记录。其中,“写入”操作具体可以是向数据表中添加记录,或对数据表中的记录进行更新。
S102:根据所述待写入记录,确定所述待写入记录包含的扩展字段中对应于指定子字段的键值对。
在本说明书实施例中,将数据表的扩展字段中字段值不能重复的子字段称为指定子字段。对应于指定子字段的键值对即是以该指定子字段为key,以该子字段的值为value的,“key=value”形式的数据。值得强调的是,通常要求每个记录中都包含全部指定子字段。
需要说明的是,在实际应用中,扩展字段中的键值对的格式具体可以是key:value格式,如key1:value1,key2:value2,……。此外,扩展字段中的键值对的也可以是Json格式的。而不论是何种各种,对本领域技术人员而言,通过本步骤S102,都可以得到待写入记录包含的扩展字段中对应于指定子字段的键值对。
S104:根据得到的键值对,确定所述待写入记录对应的唯一标识。
在本步骤S104中,可以根据哈希算法,对得到的键值对进行处理,得到所述待写入记录对应的唯一标识。其中,对具体采用的哈希算法不做限定,具体可以是Base64、SHA1、RSA等。
众所周知,对数据进行哈希运算后,可以得到数据的摘要。两个数据哪怕存在一丝差别,这两个数据的摘要也不同。因此,对待写入记录包含的扩展字段中对应于指定子字段的键值对进行哈希运算后,得到的摘要就可以唯一标识指定子字段对应的键值对。进而,可以将得到的摘要作为所述待写入记录对应的唯一标识。
S106:根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件。
在本说明书实施例中,所述第一限制条件为,所述待写入记录包含的对应于指定子字段的键值对,应与所述数据表中任一记录包含的对应于指定子字段的键值对存在差异。以表2为例,倘若“身份证号”为指定子字段,则所述第一限制条件的具体含义为,每个学生的身份证号都不能重复。
如此一来,在本步骤S106中,可以使用待写入记录对应的唯一标识,与数据表中每个记录对应的唯一标识进行比对,若数据表中存在至少一个记录,其对应的唯一标识是待写入记录对应唯一标识,则认定待写入记录未通过检验(即所述待写入记录包含的对应于指定子字段的键值对,与所述数据表中至少一个记录包含的对应于指定子字段的键值对相同),拒绝写入;若数据表中不存在对应的唯一标识是待写入记录对应唯一标识的记录,则认定所述待写入记录通过检验(即针对数据表中的每个记录,所述待写入记录包含的对应于指定子字段的键值对,与该记录包含的对应于指定子字段的键值对不相同),允许写入。
由于在实际应用中,记录表中的每个记录都曾经是一个待写入记录,也接受过检验,因此,确定数据表中每个记录对应的唯一标识的方法,实际上就是上述的,确定待写入记录对应的唯一标识的方法。针对数据表中的每个记录,数据库管理系统在过去检验该记录的时,可以同时存储该记录对应的唯一标识。当然,数据库管理系统也可以在执行本步骤S106时,临时确定数据表中每个记录对应的唯一标识。
通过图1所示的检验待写入记录的方法,一方面,由于所述唯一标识往往是根据扩展字段中对应于指定子字段的键值对确定的,而不是根据扩展字段中的全部键值对确定的,因此,这可以实现对扩展字段中的部分键值对进行唯一性约束。另一方面,由于通过本说明书实施例进行字段值重复检验时,不必对数据表中每个记录包含的扩展字段中的全部键值对进行遍历,因此也可以提升字段值重复检验的效率。
进一步地,指定子字段的数量可以大于1。这种情况下,所述第一限制条件具体可以是,以所述待写入记录包含的对应于各指定子字段的键值对为第一键值对集合,以所述数据表中任一记录包含的对应于各指定子字段的键值对为第二键值对集合,所述第一键值对集合应与所述第二键值对集合存在差异。
倘若“美术成绩”和“身份证号”皆为指定子字段,则对于两个学生而言,要么这两个学生的美术成绩不同,要么这两个同学的身份证号不同。若这两个学生的美术成绩和身份证号皆相同,则不满足所述第一限制条件。显然,表3中的张三和李四的美术成绩和身份证号皆相同,不满足所述第一限制条件,当向数据表中写入记录时,应避免这种不满足所述第一限制条件的情况。
Figure BDA0001663418410000111
表3
还有,若指定子字段的数量为不止一个,则可能出现如下情况:对于两个记录(记录A和记录B)而言,虽然记录A包含的对应于多个指定子字段的键值对,与记录B包含的对应于多个指定子字段的键值对,是完全相同的,但是记录A包含的对应于多个指定子字段的键值对的排列顺序,与记录B包含的对应于多个指定子字段的键值对的排列顺序,是不同的。这种情况会导致,确定出的记录A的唯一标识与记录B的唯一标识不同,而这显然与业务目的相悖。
基于此,确定所述待写入记录对应的唯一标识的方式具体可以是:根据预设的各子字段的先后顺序,对各子字段分别对应的键值对进行排序。然后,可以将排序后的各键值对拼接成第一字符串,使用哈希算法对所述第一字符串进行计算,得到所述待写入记录对应的唯一标识。如此一来,可以排除扩展字段中多个键值对的排列顺序的影响,只要两个记录包含的对应于多个子字段的键值对是完全相同的,那么对这两个记录分别包含的对应于多个子字段的键值对进行上述排序后,得到的键值对序列也是完全相同的,进而,这个两个记录分别对应的唯一标识也一定是相同的。
此外,预设各子字段的先后顺序的方式,可以是随机的,也可以是预先按照各子字段中指定顺位的字符在字符列表中的先后顺序,对各子字段进行排序。
例如,所述指定顺位可以是第一顺位,所述字符列表可以是英文字母表。假设3个子字段分别为“score”、“name”、“age”,那么,对这3个子字段进行排序后,得到的序列为“age”-“name”-“score”。
进一步地,若将排序后的各键值对拼接成的第一字符串较长,则还可以对所述第一字符串进行数据压缩(可采用GNUzip方法进行压缩),然后对压缩后的所述第一字符串进行哈希运算。
进一步地,在本说明书实施例中,可以预先在所述数据表中增加公共字段,并将增加的公共字段设置为唯一键。在步骤S106之前,可以将所述待写入记录对应的唯一标识作为所述待写入记录包含的唯一键的值。在步骤S106中,可以根据所述待写入记录包含的唯一键的值,对所述待写入记录进行唯一性约束检验;若确定出现唯一键冲突,则确定所述待写入记录不满足第一限制条件;若确定未出现唯一键冲突,则确定所述待写入记录满足所述第一限制条件。
其中,对于待写入记录而言,出现唯一键冲突,是指待写入记录包含的唯一键的值与数据表中至少一个记录包含的唯一键的值相同;未出现唯一性冲突,是指待写入记录包含的唯一键的值与数据表中任一记录包含的唯一键的值不同。
如前文所述,数据库管理系统可以执行既有的代码逻辑,实现对唯一键的值进行唯一性约束的功能。因此,当需要对某个字段的值进行唯一性约束时,通过可以将该字段设置成唯一键,数据库管理系统就根据待写入记录包含的唯一键的值,对待写入记录进行检验。然而,当需要对扩展字段中的部分子字段的值进行唯一性约束时,将扩展字段设置为唯一键,是无法达到目的的。为此,本说明书实施例中,将对待写入记录包含的对应于指定字段的键值对进行哈希计算后得到的唯一标识作为待写入记录包含的唯一键的值,却可以实现对扩展字段中部分子字段(也就是指定子字段)的值的唯一性约束。同时,这样做也可以利用数据库管理系统中既有的代码逻辑,实现起来也更为便利。
另外,本方案还可以实现针对某些公共字段(即指定公共字段)和扩展字段中的指定子字段,一并实现字段值的唯一性约束(即要求两个记录的各指定公共字段和各指定子字段的值不全部重复)。
图2是本说明书实施例提供的另一种检验待写入记录的方法的流程示意图,包括以下步骤:
S200:获取待写入记录。
S202:根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对,以及确定所述待写入记录包含的指定公共字段的值,并得到对应于所述指定公共字段的键值对。
S204:根据得到的各键值对,确定所述待写入记录对应的唯一标识。
S206:根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第二限制条件。
在图2所示的方法中,数据表的扩展字段中的至少一个子字段为指定子字段,且,所述数据表的至少一个公共字段为指定公共字段。这样,待写入记录需要满足第二限制条件,即以所述待写入记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第三键值对集合,以所述数据表中任一记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第二键值对集合,所述第一键值对集合应与所述第四键值对集合存在差异。
需要说明的是,在步骤S204中,根据预设的指定子字段、指定公共字段的先后顺序,对得到的各键值对进行排序;将排序后的各键值对拼接成第二字符串;使用哈希算法对所述第二字符串进行计算,得到所述待写入记录对应的唯一标识。
还需要说明的是,在图2所示的方法中,也可以预先在所述数据表中增加公共字段,并将增加的公共字段设置为唯一键。如此,在步骤S204之前,可以将所述待写入记录对应的唯一标识作为所述待写入记录包含的唯一键的值。在步骤S206中,可以根据所述待写入记录包含的唯一键的值,对所述待写入记录进行唯一性约束检验;若确定出现唯一键冲突,则确定所述待写入记录不满足第二限制条件;若确定未出现唯一键冲突,则确定所述待写入记录满足所述第二限制条件。
由于图2所示的方法与图1所示的方法基于相同的发明构思,二者的区别在于,图1所示的方法的目的是实现对指定子字段的值的唯一性约束,而图2所示的方法的目的是实现对指定公共字段和指定子字段的值的唯一性约束。因此,本领域技术人员在理解了图1所示方法的思想之后,很容易想到实现图2所示的方法的具体步骤。因此,图2所示的方法的相关细节可参照前文对图1所示的方法的说明,不再赘述。
基于图1所示的检验待写入记录的方法,本说明书实施例还对应提供了一种检验待写入记录的装置,如图3所示,数据表的扩展字段中的至少一个子字段为指定子字段,所述装置包括:
获取模块301,获取待写入记录;
第一处理模块302,根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对;
第二处理模块303,根据所述第一处理模块302得到的键值对,确定所述待写入记录对应的唯一标识;
检验模块304,根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件;所述第一限制条件为,所述待写入记录包含的对应于指定子字段的键值对,应与所述数据表中任一记录包含的对应于指定子字段的键值对存在差异。
所述第二处理模块303,根据哈希算法,对得到的键值对进行处理,得到所述待写入记录对应的唯一标识。
所述方法还包括:第三处理模块305,预先在所述数据表中增加公共字段,并将增加的公共字段设置为唯一键;
所述方法还包括:第四处理模块306,在所述检验模块304根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件之前,将所述待写入记录对应的唯一标识作为所述待写入记录包含的唯一键的值;
所述检验模块304,根据所述待写入记录包含的唯一键的值,对所述待写入记录进行唯一性约束检验;若确定出现唯一键冲突,则确定所述待写入记录不满足第一限制条件;若确定未出现唯一键冲突,则确定所述待写入记录满足所述第一限制条件。
指定子字段的数量为不止一个;
所述第二处理模块303,根据预设的各指定子字段的先后顺序,对各指定子字段分别对应的键值对进行排序;将排序后的各键值对拼接成第一字符串;使用哈希算法对所述第一字符串进行计算,得到所述待写入记录对应的唯一标识;
所述第一限制条件,具体包括:
以所述待写入记录包含的对应于各指定子字段的键值对为第一键值对集合,以所述数据表中任一记录包含的对应于各指定子字段的键值对为第二键值对集合,所述第一键值对集合应与所述第二键值对集合存在差异。
预设各子字段的先后顺序,具体包括:
预先按照各子字段中指定顺位的字符在字符列表中的先后顺序,对各子字段进行排序。
基于图2所示的检验待写入记录的方法,本说明书实施例还对应提供了一种检验待写入记录的装置,如图4所示,数据表的扩展字段中的至少一个子字段为指定子字段,且,所述数据表的至少一个公共字段为指定公共字段,所述装置包括:
获取模块401,获取待写入记录;
第一处理模块402,根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对,以及确定所述待写入记录包含的指定公共字段的值,并得到对应于所述指定公共字段的键值对;
第二处理模块403,根据第一处理模块402得到的各键值对,确定所述待写入记录对应的唯一标识;
检验模块404,根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第二限制条件;所述第二限制条件为,以所述待写入记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第三键值对集合,以所述数据表中任一记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第四键值对集合,所述第三键值对集合应与所述第四键值对集合存在差异。
所述第二处理模块403,根据预设的指定子字段、指定公共字段的先后顺序,对得到的各键值对进行排序;将排序后的各键值对拼接成第二字符串;使用哈希算法对所述第二字符串进行计算,得到所述待写入记录对应的唯一标识。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1和图2所示的检验待写入记录的方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1和图2所示的检验待写入记录的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

Claims (16)

1.一种检验待写入记录的方法,数据表的扩展字段中的至少一个子字段为指定子字段,所述方法包括:
获取待写入记录;
根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对;
根据得到的键值对,确定所述待写入记录对应的唯一标识;
使用所述待写入记录对应的唯一标识,与所述数据表中每个记录对应的唯一标识进行比对,以检验所述待写入记录是否满足第一限制条件;所述第一限制条件为,所述待写入记录包含的对应于指定子字段的键值对,应与所述数据表中任一记录包含的对应于指定子字段的键值对存在差异;
若所述数据表中不存在比对一致的记录,则向所述数据表写入所述待写入记录。
2.如权利要求1所述的方法,根据得到的键值对,确定所述待写入记录对应的唯一标识,具体包括:
根据哈希算法,对得到的键值对进行处理,得到所述待写入记录对应的唯一标识。
3.如权利要求1所述的方法,预先在所述数据表中增加公共字段,并将增加的公共字段设置为唯一键;
在根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件之前,所述方法还包括:
将所述待写入记录对应的唯一标识作为所述待写入记录包含的唯一键的值;
根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件,具体包括:
根据所述待写入记录包含的唯一键的值,对所述待写入记录进行唯一性约束检验;
若确定出现唯一键冲突,则确定所述待写入记录不满足第一限制条件;
若确定未出现唯一键冲突,则确定所述待写入记录满足所述第一限制条件。
4.如权利要求2所述的方法,指定子字段的数量大于1;
根据哈希算法,对各指定子字段分别对应的键值对进行处理,得到所述待写入记录对应的唯一标识,具体包括:
根据预设的各指定子字段的先后顺序,对各指定子字段分别对应的键值对进行排序;
将排序后的各键值对拼接成第一字符串;
使用哈希算法对所述第一字符串进行计算,得到所述待写入记录对应的唯一标识;
所述第一限制条件,具体包括:
以所述待写入记录包含的对应于各指定子字段的键值对为第一键值对集合,以所述数据表中任一记录包含的对应于各指定子字段的键值对为第二键值对集合,所述第一键值对集合应与所述第二键值对集合存在差异。
5.如权利要求4所述的方法,预设各子字段的先后顺序,具体包括:
预先按照各子字段中指定顺位的字符在字符列表中的先后顺序,对各子字段进行排序。
6.一种检验待写入记录的方法,数据表的扩展字段中的至少一个子字段为指定子字段,且,所述数据表的至少一个公共字段为指定公共字段,所述方法包括:
获取待写入记录;
根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对,以及确定所述待写入记录包含的指定公共字段的值,并得到对应于所述指定公共字段的键值对;
根据得到的各键值对,确定所述待写入记录对应的唯一标识;
使用所述待写入记录对应的唯一标识,与所述数据表中每个记录对应的唯一标识进行比对,以检验所述待写入记录是否满足第二限制条件;所述第二限制条件为,以所述待写入记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第三键值对集合,以所述数据表中任一记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第四键值对集合,所述第三键值对集合应与所述第四键值对集合存在差异;
若所述数据表中不存在比对一致的记录,则向所述数据表写入所述待写入记录。
7.如权利要求6所述的方法,根据得到的各键值对,确定所述待写入记录对应的唯一标识,具体包括:
根据预设的指定子字段、指定公共字段的先后顺序,对得到的各键值对进行排序;
将排序后的各键值对拼接成第二字符串;
使用哈希算法对所述第二字符串进行计算,得到所述待写入记录对应的唯一标识。
8.一种检验待写入记录的装置,数据表的扩展字段中的至少一个子字段为指定子字段,所述装置包括:
获取模块,获取待写入记录;
第一处理模块,根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对;
第二处理模块,根据所述第一处理模块得到的键值对,确定所述待写入记录对应的唯一标识;
检验模块,使用所述待写入记录对应的唯一标识,与所述数据表中每个记录对应的唯一标识进行比对,以检验所述待写入记录是否满足第一限制条件;所述第一限制条件为,所述待写入记录包含的对应于指定子字段的键值对,与所述数据表中任一记录包含的对应于指定子字段的键值对存在差异;
若所述数据表中不存在比对一致的记录,则向所述数据表写入所述待写入记录。
9.如权利要求8所述的装置,所述第二处理模块,根据哈希算法,对得到的键值对进行处理,得到所述待写入记录对应的唯一标识。
10.如权利要求8所述的装置,所述装置还包括:第三处理模块,预先在所述数据表中增加公共字段,并将增加的公共字段设置为唯一键;
所述装置还包括:第四处理模块,在所述检验模块根据所述待写入记录对应的唯一标识,检验所述待写入记录是否满足第一限制条件之前,将所述待写入记录对应的唯一标识作为所述待写入记录包含的唯一键的值;
所述检验模块,根据所述待写入记录包含的唯一键的值,对所述待写入记录进行唯一性约束检验;若确定出现唯一键冲突,则确定所述待写入记录不满足第一限制条件;若确定未出现唯一键冲突,则确定所述待写入记录满足所述第一限制条件。
11.如权利要求9所述的装置,指定子字段的数量大于1;
所述第二处理模块,根据预设的各指定子字段的先后顺序,对各指定子字段分别对应的键值对进行排序;将排序后的各键值对拼接成第一字符串;使用哈希算法对所述第一字符串进行计算,得到所述待写入记录对应的唯一标识;
所述第一限制条件,具体包括:
以所述待写入记录包含的对应于各指定子字段的键值对为第一键值对集合,以所述数据表中任一记录包含的对应于各指定子字段的键值对为第二键值对集合,所述第一键值对集合应与所述第二键值对集合存在差异。
12.如权利要求11所述的装置,预设各子字段的先后顺序,具体包括:
预先按照各子字段中指定顺位的字符在字符列表中的先后顺序,对各子字段进行排序。
13.一种检验待写入记录的装置,数据表的扩展字段中的至少一个子字段为指定子字段,且,所述数据表的至少一个公共字段为指定公共字段,所述装置包括:
获取模块,获取待写入记录;
第一处理模块,根据所述待写入记录,得到所述待写入记录包含的扩展字段中对应于指定子字段的键值对,以及确定所述待写入记录包含的指定公共字段的值,并得到对应于所述指定公共字段的键值对;
第二处理模块,根据所述第一处理模块得到的各键值对,确定所述待写入记录对应的唯一标识;
检验模块,使用所述待写入记录对应的唯一标识,与所述数据表中每个记录对应的唯一标识进行比对,以检验所述待写入记录是否满足第二限制条件;所述第二限制条件为,以所述待写入记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第三键值对集合,以所述数据表中任一记录包含的对应于指定子字段的键值对和对应于指定公共字段的键值对为第四键值对集合,所述第三键值对集合应与所述第四键值对集合存在差异;
若所述数据表中不存在比对一致的记录,则向所述数据表写入所述待写入记录。
14.如权利要求13所述的装置,所述第二处理模块,根据预设的指定子字段、指定公共字段的先后顺序,对得到的各键值对进行排序;将排序后的各键值对拼接成第二字符串;使用哈希算法对所述第二字符串进行计算,得到所述待写入记录对应的唯一标识。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至5任一项所述的检验待写入记录的方法。
16.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求6或7所述的检验待写入记录的方法。
CN201810471681.8A 2018-05-17 2018-05-17 一种检验待写入记录的方法及装置 Active CN108763363B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810471681.8A CN108763363B (zh) 2018-05-17 2018-05-17 一种检验待写入记录的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810471681.8A CN108763363B (zh) 2018-05-17 2018-05-17 一种检验待写入记录的方法及装置

Publications (2)

Publication Number Publication Date
CN108763363A CN108763363A (zh) 2018-11-06
CN108763363B true CN108763363B (zh) 2022-02-18

Family

ID=64006854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810471681.8A Active CN108763363B (zh) 2018-05-17 2018-05-17 一种检验待写入记录的方法及装置

Country Status (1)

Country Link
CN (1) CN108763363B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1764878A (zh) * 2003-03-01 2006-04-26 应用材料有限公司 用于电子诊断装置的通信接口数据库
US7299240B1 (en) * 1992-04-10 2007-11-20 Intellisync Corporation Method for translating computer data from one record structure to another
CN103838827A (zh) * 2014-01-24 2014-06-04 国家电网公司 电网调控信息管理系统记录关联方法
CN104268272A (zh) * 2014-10-14 2015-01-07 青岛海尔软件有限公司 一种数据唯一性检查方法及装置
CN104268298A (zh) * 2014-10-27 2015-01-07 中电海康集团有限公司 一种创建数据库索引及其查询的方法
CN105071990A (zh) * 2015-08-11 2015-11-18 中国电子科技集团公司电子科学研究院 一种通用的信息系统接口测试方法及装置
US9747295B1 (en) * 2014-11-03 2017-08-29 Sprint Communications Company L.P. Updating a large dataset in an enterprise computer system
CN107368480A (zh) * 2016-05-11 2017-11-21 中国移动通信集团辽宁有限公司 一种兴趣点数据错误类型定位、重复识别方法及装置
CN107729486A (zh) * 2017-10-17 2018-02-23 北京奇艺世纪科技有限公司 一种视频搜索方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299240B1 (en) * 1992-04-10 2007-11-20 Intellisync Corporation Method for translating computer data from one record structure to another
CN1764878A (zh) * 2003-03-01 2006-04-26 应用材料有限公司 用于电子诊断装置的通信接口数据库
CN103838827A (zh) * 2014-01-24 2014-06-04 国家电网公司 电网调控信息管理系统记录关联方法
CN104268272A (zh) * 2014-10-14 2015-01-07 青岛海尔软件有限公司 一种数据唯一性检查方法及装置
CN104268298A (zh) * 2014-10-27 2015-01-07 中电海康集团有限公司 一种创建数据库索引及其查询的方法
US9747295B1 (en) * 2014-11-03 2017-08-29 Sprint Communications Company L.P. Updating a large dataset in an enterprise computer system
CN105071990A (zh) * 2015-08-11 2015-11-18 中国电子科技集团公司电子科学研究院 一种通用的信息系统接口测试方法及装置
CN107368480A (zh) * 2016-05-11 2017-11-21 中国移动通信集团辽宁有限公司 一种兴趣点数据错误类型定位、重复识别方法及装置
CN107729486A (zh) * 2017-10-17 2018-02-23 北京奇艺世纪科技有限公司 一种视频搜索方法及装置

Also Published As

Publication number Publication date
CN108763363A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
CN107807982B (zh) 一种异构数据库的一致性校验方法及装置
US10949118B2 (en) Data storage method, apparatus, and device for multi-layer blockchain-type ledger
CN107193683B (zh) 数据库备份的校验方法及装置
US11392620B2 (en) Clustering log messages using probabilistic data structures
CN108616361B (zh) 一种识别设备唯一性的方法及装置
US11609897B2 (en) Methods and systems for improved search for data loss prevention
CN113434542B (zh) 数据关系识别方法、装置、电子设备及存储介质
CN111159482A (zh) 数据校验方法及系统
US20220269820A1 (en) Artificial intelligence based data redaction of documents
CN110059087B (zh) 一种块链式账本中的数据属性标识方法、装置及设备
CN110278241B (zh) 一种注册请求处理方法及装置
CN108763363B (zh) 一种检验待写入记录的方法及装置
CN106803202B (zh) 一种待测试交易记录的提取方法和装置
CN111190986B (zh) 一种地图数据对比方法和装置
CN108710658A (zh) 一种数据记录的存储方法及装置
CN115080552A (zh) 数据质量评价方法、装置、设备和计算机可读存储介质
CN111371818B (zh) 一种数据请求的验证方法、装置及设备
CN114255134A (zh) 一种帐号拆解方法、装置和存储介质
US11115189B2 (en) Verifying a blockchain-type ledger
CN114139547A (zh) 知识融合方法、装置、设备、系统及介质
CN109656805B (zh) 用于业务分析的代码链路的生成方法、装置及业务服务器
US20160196331A1 (en) Reconstitution order of entity evaluations
CN111967764A (zh) 一种业务准入核验方法、装置及电子设备
CN111680112B (zh) 一种数据分析方法及装置
CN105989021A (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
TA01 Transfer of patent application right

Effective date of registration: 20201022

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201022

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant