数据处理方法、装置、服务器和存储介质与流程

文档序号:19879332发布日期:2020-02-08 06:48阅读:199来源:国知局
数据处理方法、装置、服务器和存储介质与流程
本发明涉及数据处理领域,具体涉及一种数据处理方法、装置、服务器和存储介质。
背景技术
:关系数据库中的数据是以元组(tuple)的形式存储的,可以将其看作一张表,该表中的每一行(即数据库中的每条数据记录)都是一个元组,每一列就是一个属性。事务处理是一种处理数据库中数据的技术,计算机执行一个事务时常常需要对一个或多个元组进行访问等。其中,并发访问控制技术是为了解决计算机在同时执行多个事务的过程中,同时访问同一元组可能导致的冲突问题。比如,事务a需要读取元组,而事务b同时需要修改该元组时,可能会导致冲突,为了解决冲突问题,常用的方法是将事务a和事务b的执行时间错开。然而,目前的并发访问控制技术很容易产生冲突误判,由此导致这些被误判为冲突的多个并发事务必须错开执行时间,无法同时执行,从而使得执行事务的并发度低下,因此,目前基于并发访问控制技术的数据处理方法效率低下。技术实现要素:本发明实施例提供一种数据处理方法、装置、服务器和存储介质,可以提升数据处理的效率。本发明实施例提供一种数据处理方法,包括:获取操作指令,所述操作指令包括操作类型信息和待操作数据单元信息;根据所述待操作数据单元信息在数据组集合中查询目标数据组,所述数据组集合包括至少一个数据组,所述数据组包括至少一个数据单元;获取所述目标数据组的锁定状态信息;基于所述锁定状态信息以及所述操作类型信息对所述待操作数据单元进行加锁检测,得到检测结果;基于所述检测结果对待操作数据单元进行加锁处理;当完成加锁处理后,执行所述操作指令,以对所述待操作数据单元进行所述操作类型信息对应的操作。在一些实施例中,所述操作类型信息包括第一操作类型、第二操作类型,所述加锁检测包括第一加锁检测和第二加锁检测,所述检测结果包括第一加锁检测结果和第二加锁检测结果;基于所述锁定状态信息以及所述操作类型信息对所述待操作数据单元进行加锁检测,得到检测结果,包括:当所述操作类型信息为第一操作类型时,基于所述锁定状态信息对所述待操作数据单元进行第一加锁检测,得到第一加锁检测结果;当所述操作类型信息为第二操作类型时,基于所述锁定状态信息对所述待操作数据单元进行第二加锁检测得到第二加锁检测结果;所述加锁处理包括第一加锁处理和第二加锁处理,所述基于所述检测结果对待操作数据单元进行加锁处理,包括:基于所述第一检测结果对待操作数据单元进行第一加锁处理;基于所述第二检测结果对待操作数据单元进行第二加锁处理。在一些实施例中,所述锁定状态信息包括所述目标数据组中数据单元的数据锁,所述数据锁包括第一数据锁、第二数据锁;基于所述锁定状态信息对所述待操作数据单元进行第一加锁检测,得到第一加锁检测结果,包括:基于所述目标数据组的锁定状态信息确定所述待操作数据单元对应的全部数据锁;当所述待操作数据单元对应的数据锁中既不包括第一数据锁,也不包括第二数据锁时,得到第一加锁检测结果。所述基于所述第一检测结果对待操作数据单元进行第一加锁处理,包括:基于所述第一检测结果在所述目标数据组的锁定状态信息中为所述待操作数据单元添加所述操作指令的第一数据锁。在一些实施例中,所述锁定状态信息包括所述目标数据组中数据单元的数据锁,所述数据锁包括第一数据锁、第二数据锁;基于所述锁定状态信息对所述待操作数据单元进行第二加锁处理,包括:基于所述目标数据组的锁定状态信息确定所述待操作数据单元对应的全部数据锁;当所述待操作数据单元对应的数据锁只包括第二数据锁时,得到第二加锁检测结果;当所述待操作数据单元对应的数据锁中既不包括第一数据锁,也不包括第二数据锁时,得到第二加锁检测结果;所述基于所述第二检测结果对待操作数据单元进行第二加锁处理,包括:基于所述第二检测结果在所述目标数据组的锁定状态信息中为所述待操作数据单元添加所述操作指令的第二数据锁。在一些实施例中,所述获取操作指令之前,还包括:获取预设数值范围、数据单元的历史操作信息;基于所述历史操作信息统计每个数据单元的历史操作次数;基于所述历史操作次数和预设数值范围对所述数据单元进行分组处理,得到数据组集合。在一些实施例中,所述数据组集合包括一个第一数据组和多个第二数据组;基于所述历史操作次数和预设数值范围对所述数据单元进行分组处理,得到数据组集合,包括:基于所述历史操作次数计算每个数据单元的历史操作概率;生成一个第一分组;当所述数据单元的历史操作概率不属于预设数值范围时,将所述数据单元添加到第一分组;当所述数据单元的历史操作概率属于预设数值范围时,生成一个所述数据单元对应的第二分组,将所述数据单元添加到所述数据单元对应的第二分组。在一些实施例中,所述数据单元包括多个数据子单元;所述生成一个所述数据单元对应的第二分组,将所述数据单元添加到所述数据单元对应的第二分组,包括:生成所述数据单元对应的第二分组;将所述多个数据子单元添加到所述数据单元对应的第二分组。在一些实施例中,根据所述待操作数据单元信息在数据组集合中查询目标数据组之前,还包括:获取分组更新指令;当所述分组更新指令的指令类型为用户分组类型时,采用分组更新指令所述对所述数据组集合中的数据单位进行重新分组;当所述分组更新指令的指令类型为自动分组类型时,对所述数据组集合中的数据单位进行重新自动分组。在一些实施例中,对所述数据组集合中的数据单位进行重新自动分组,包括:获取预设数值范围、数据单元的历史操作信息;基于所述历史操作信息统计数据组集合中每个数据单元的历史操作次数;基于所述历史操作次数和预设数值范围对所述数据单元进行分组处理,得到重新自动分组后的数据组集合。在一些实施例中,所述分组更新指令包括分组数量;采用分组更新指令所述对所述数据组集合中的数据单位进行重新分组,包括:将所述数据组集合中的数据单位均分为所述分组数量个数据组,得到分组后的数据组集合。在一些实施例中,执行所述操作指令,以对所述待操作数据单元进行所述操作类型信息对应的操作之后,还包括:获取数据单元的历史操作信息;基于所述操作指令更新所述数据单元的历史操作信息。在一些实施例中,所述锁定状态信息包括所述目标数据组中数据单元的数据锁;执行所述操作指令,以对所述待操作数据单元进行所述操作类型信息对应的操作之后,还包括:在所述目标数据组的锁定状态信息中为所述待操作数据单元删除所述操作指令的数据锁。本发明实施例还提供一种数据处理装置,包括:获取单元,用于获取操作指令,所述操作指令包括操作类型信息和待操作数据单元信息;查询单元,用于根据所述待操作数据单元信息在数据组集合中查询目标数据组,所述数据组集合包括至少一个数据组,所述数据组包括至少一个数据单元;数据锁单元,用于获取所述目标数据组的锁定状态信息;检测单元,用于基于所述锁定状态信息以及所述操作类型信息对所述待操作数据单元进行加锁检测,得到检测结果;加锁单元,用于基于所述检测结果对待操作数据单元进行加锁处理;执行单元,用于当完成加锁处理后,执行所述操作指令,以对所述待操作数据单元进行所述操作类型信息对应的操作。本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种数据处理方法中的步骤。本发明实施例还提供一种服务器,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本发明实施例所提供的任一种数据处理方法中的步骤。本发明实施例可以获取操作指令,该操作指令可以包括操作类型信息和待操作数据单元信息;根据待操作数据单元信息可以在数据组集合中查询目标数据组,数据组集合可以包括至少一个数据组,数据组可以包括至少一个数据单元;获取目标数据组的锁定状态信息;基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果;基于检测结果对待操作数据单元进行加锁处理;当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。在本发明中,可以根据待操作单元所属的目标数据组来为待操作单元进行对应的加锁处理,从而执行该操作指令。由此,本发明可以降低获取锁定状态信息以及加锁处理时的计算量,从而在保证安全的同时,提升数据处理的效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1a是本发明实施例提供的数据处理方法的应用场景示意图;图1b是本发明实施例提供的数据处理方法的第一种流程示意图;图1c是本发明实施例提供的数据处理方法的数据组的结构示意图;图1d是本发明实施例提供的数据处理方法的锁定状态信息的示意图;图2a是本发明实施例提供的数据处理方法的第二种流程示意图;图2b是本发明实施例提供的数据处理方法的具体的锁定状态信息的示意图;图2c是本发明实施例提供的数据处理方法的分布式数据服务器的架构示意图;图3是本发明实施例提供的数据处理装置的结构示意图;图4是本发明实施例提供的网络设备的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。表1所示的是用户数据表,如下:表1其中,包括元组a和元组b,每个元组中包括用户的四个属性的数据,分别为用户编号、用户名称、用户年龄、用户所属群体。计算机执行一个事务时常常需要对一个或多个元组进行访问,访问的方式具有多种,包括第一类访问、第二类访问等等,比如,第一类访问可以指读取数据、第二类访问可以表示写入数据;再比如,第一类访问可以指写入数据、第二类访问可以表示读取数据,等等。在现有技术中,为了防止冲突,事务在进行访问前之前需要给元组加上数据锁,并在完成访问之后给元组解除数据锁,以使其他事务无法访问这些加锁的元组,直到这些元组解锁,从而规避数据错误地处理。比如,参考表2中的事务a和事务b,事务a和事务b可以对该用户数据表进行操作:时刻事务a事务bt1给元组a加锁t2读取元组a的用户名称t3...检测元组a上的数据锁t4......t5......t6给元组b加锁...t7写入元组b的用户所属群体...t8提交事务...t9解锁...t10给元组a加锁t11写入元组a的用户所属群体t12给元组b加锁t13读取元组b的用户年龄t14提交事务t15解锁表2可知,事务a首先开始执行,在事务a执行读取元组a的用户名称前首先需要对元组a加锁,事务a加锁成功并完成读取后事务b开始执行,由于事务b需要等待元组a上没有数据锁后才能写入元组a的用户所属群体,故事务b需要等待到t10时刻才能给元组a加锁。然而可知的是,事务a读取元组a的用户名称和事务b写入元组a的用户所属群体并不会产生冲突,但目前的冲突检测机制依旧将这种情况误判为冲突。本发明实施例提供一种数据处理方法、装置、服务器以及计算机可读存储介质,可以解决上述冲突误判的情况。其中,该数据处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑(personalcomputer,pc)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。在一些实施例中,该数据处理装置还可以集成在多个电子设备中,比如,该数据处理装置可以集成在多个服务器中,由多个服务器来实现本发明的数据处理方法。参考图1a,该电子设备可以集成在服务器中,该服务器可以获取操作指令,该操作指令包括操作类型信息和待操作数据单元信息;根据待操作数据单元信息在数据组集合中查询目标数据组,数据组集合包括至少一个数据组,数据组包括至少一个数据单元;获取目标数据组的锁定状态信息;基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果;基于检测结果对待操作数据单元进行加锁处理;当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。由此,本方案可以根据待操作数据单元对应的目标数据组的锁定状态信息来判断是否可以加锁并执行操作指令,以对待操作数据单元进行操作类型信息对应的操作对应的事务,本方案可以更加准确地判断冲突,从而解决上述冲突误判导致的数据处理效率低下的问题。以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。在本实施例中,提供了一种数据处理方法,如图1b所示,该数据处理方法的具体流程可以如下:101、获取操作指令,操作指令包括操作类型信息和待操作数据单元信息。其中,操作指令是指针对数据库中数据的操作指令,可以包括该操作指令的操作类型信息,以及该操作指令要操作的待操作数据单元信息。具体地,获取操作指令的方法可以是通过网络从网络服务器中获取,也可以由集成了数据处理装置的电子设备定时生成从而获取,还可以由技术人员操作该电子设备,数据处理装置获取该电子设备产生的操作指令,等等。比如,在一些实施例中,数据处理装置可以获取技术人员发出的操作指令,具体地,在数据库更新场景中,技术人员可以将更新文件导入数据库服务器,在更新文件导入的过程中,数据库服务器可以根据更新文件以及技术人员的更新操作生成多个操作指令。其中,操作类型信息中可以记录具体对数据的操作方法,比如,读取数据、删除数据、更新数据、修改数据、写入数据,等等。其中,待操作数据单元信息中可以记录操作指令所操作的数据单元,数据单元由数据库中保存数据信息的数据颗粒构成,其中,粒度(granularity)可以描述数据库中所保存的数据颗粒的细化程度,数据库中数据颗粒的粒度越细,该数据库的细化程度越高;数据库中数据颗粒的粒度越粗,该数据库的细化程度越低。其中,数据颗粒是指数据库中用于保存数据信息的最小单位。比如,参考表1,表1中具有8个数据颗粒,分别为0001(元组a的用户编号)、alan(元组a的用户名称)、18(元组a的用户年龄)、student(元组a的用户所属群体),以及0002(元组b的用户编号)、bryan(元组b的用户名称)、26(元组b的用户年龄)、lawyer(元组b的用户所属群体)。数据单元可以由一个或多个数据颗粒构成,比如,表1中可以包括两个数据单元,分别为元组a和元组b。其中,一个数据单元(即元组a)具有4个数据颗粒,分别为0001、alan、18、student;另一个数据单元(即元组b)具有4个数据颗粒,分别为0002、bryan、26、lawyer。再比如,表1中可以包括四个数据单元,分别为用户编号、用户名称、用户年龄、用户所属群体(lawyer)。其中,一个数据单元(即用户编号)具有2个数据颗粒,分别为001和0002;另一个数据单元(即用户名称)具有2个数据颗粒,分别为alan和bryan;又一个数据单元(即用户年龄)具有2个数据颗粒,分别为18和26;最后一个数据单元(即用户所属群体)具有2个数据颗粒,分别为student和lawyer。需要注意的是,目前数据库的数据单元是由多个数据颗粒构成的元组,其中,元组(tuple)是数据库中所存数据表结构中的一行数据,比如,参考表1,当数据库中存有表1所示的数据表时,则元组指该表1中的每一行,即表1包括两个元组,分别为元组a和元组b。其中,元组a由4个数据颗粒组成,可以表示为元组a(0001,alan,18,student);元组b由4个数据颗粒组成,可以表示为元组b(0002,bryan,26,lawyer)。在本方案中,数据单元具体由数据颗粒构成的方式可以根据数据库的初始设定确定,也可以根据技术人员对该数据库的设置进行修改,即数据单元的粒度大小修改为小于元组的粒度大小。其中,数据组集合中可以包括一个或多个数据组,每个数据组中都可以包括一个或多个数据单元。比如,假设表1为一个数据组集合,该数据组集合中只有一个数据组,该数据组为元组a和元组b,该数据组中可以具有8个数据单元,分别为元组a的用户编号、用户名称、用户年龄、用户所属群体,以及元组b的用户编号、用户名称、用户年龄、用户所属群体。在一些实施例中,可以预先自动地将数据单位分配到数据组中,使得数据单位分配合理,从而进一步降低冲突误判的概率,步骤101之后可以包括如下步骤:获取预设数值范围、数据单元的历史操作信息;基于历史操作信息统计每个数据单元的历史操作次数;基于历史操作次数和预设数值范围对数据单元进行分组处理,得到数据组集合。其中,预设数值范围可以由本领域技术人员设置,也可以通过网络获取,还可以根据以往计算的误判概率获得,等等。数据单元的历史操作信息是指历史时间内记录的操作指令,即记录了在历史时间内对待操作数据单元的操作类型的信息。基于这些历史操作信息可以统计每个数据单元的从历史时刻到现在时刻的被操作的次数。在一些实施例中,数据组集合可以包括一个第一数据组和多个第二数据组,步骤“基于历史操作次数和预设数值范围对数据单元进行分组处理,得到数据组集合”可以包括如下步骤:基于历史操作次数计算每个数据单元的历史操作概率;生成一个第一分组;当数据单元的历史操作概率不属于预设数值范围时,将数据单元添加到第一分组;当数据单元的历史操作概率属于预设数值范围时,生成一个数据单元对应的第二分组,将数据单元添加到数据单元对应的第二分组。比如,将历史操作概率高的数据单元可以视为计算机在处理这些数据单元时更容易产生冲突,故将这些更容易产生冲突的数据单元单独分为一组、将不容易产生冲突的数据单元分到一个组内可以有效地降低冲突误判率,同时降低计算量,特别是在数据单元过多的情况下。在一些实施例中,为了尽量减少数据组的数量,从而降低内存消耗,数据单元可以包括多个数据子单元,步骤:“生成一个数据单元对应的第二分组,将数据单元添加到数据单元对应的第二分组”可以包括如下具体步骤::生成数据单元对应的第二分组;将多个数据子单元添加到数据单元对应的第二分组。其中,具体第二分组的方式是:每个第二分组的历史操作概率在不属于预设数值范围的同时,其历史操作概率等于该第二分组组内所有数据单元的历史操作概率的和。比如,参考如下公式:其中,n为第二分组组内数据单元的数量。102、根据待操作数据单元信息在数据组集合中查询目标数据组。参考图1c,数据组集合中可以包括多个数据组,每个数据组可以包括多个数据单元。根据待操作数据单元信息可以在数据组集合中查询待操作数据单元对应的目标数据组。比如,根据待操作数据单元信息可以在图1c所示的数据组集合中查询待操作数据单元对应的目标数据组。譬如,假设待操作数据单元信息将数据单元c作为待操作数据单元,则可以将数据组2确定为目标数据组。在一些实施例中,本方案可以经常自动的更新数据组集合,使得冲突的判定可以更加准确,故每次在步骤102之前还可以包括如下步骤,来防止遗漏冲突:获取分组更新指令;当分组更新指令的指令类型为用户分组类型时,采用分组更新指令对数据组集合中的数据单位进行重新分组;当分组更新指令的指令类型为自动分组类型时,对数据组集合中的数据单位进行重新自动分组。其中,分组更新指令是用于更新数据组集合的指令,该分组更新指令可以由用户设定并发出,也可以由自身周期性地产生,还可以从网络获取。其中,分组更新指令可以具有多种类型,比如,分组更新指令可以为用户分组类型,也可以为自动分组类型,在一些实施例中,分组更新指令还可以为混合分组类型。其中,用户分组类型的分组更新指令是指该分组更新指令是由用户发出的分组更新指令,自动分组类型的分组更新指令是指该分组更新指令是计算机自动产生的分组更新指令。具体地,在一些实施例中,步骤“对数据组集合中的数据单位进行重新自动分组”可以包括如下步骤:获取预设数值范围、数据单元的历史操作信息;基于历史操作信息统计数据组集合中每个数据单元的历史操作次数;基于历史操作次数和预设数值范围对数据单元进行分组处理,得到重新自动分组后的数据组集合。具体地,在一些实施例中,分组更新指令可以包括分组数量,步骤“采用分组更新指令对数据组集合中的数据单位进行重新分组”可以包括如下步骤:将数据组集合中的数据单位均分为分组数量个数据组,得到分组后的数据组集合。其中,用户分组类型的分组更新指令中可以包括用户设置的分组数量。比如,用户将分组数量设为5,假设一共有100个数据单位,则将该100个数据单位分为5组,每组中包括20个数据单位。在一些实施例中,为了提高冲突检测的准确性、减少用户的操作难度,还可以提供一种混合分组类型的分组更新指令,具体混合分组的方式为上述用户分组方式和计算机自动分组方式的混合体。比如,可以获取用户分组类型的分组更新指令,根据该用户分组类型的分组更新指令预先进行数据单元的分组,并在之后的数据处理场景中,对这些预先用户分组的数据进行进一步的自动分组。103、获取目标数据组的锁定状态信息。其中,锁定状态信息是指数据组中所有数据单元的数据锁的状态信息,数据锁为一种虚拟概念,用于表示数据单元或数据组的锁定状态。其中,数据锁的状态信息可以表示数据锁的类型,数据锁可以包括多种类型,比如,数据锁可以包括读锁(共享锁)类型的数据锁和写锁(排它锁)类型的数据锁,等等。其中,锁定状态信息可以由标识、文字、符号等进行表达,比如,0表示没有数据锁,1表示读锁类型的数据锁,2表示写锁类型的数据锁,等等。比如,在一些实施例中,数据锁可以分为第一数据锁和第二数据锁,参考图1d,数据组a可以与锁定状态信息a具有映射关系,数据组b可以与锁定状态信息b具有映射关系。具体地,锁定状态信息a中具有数据组a中数据单元的数据锁的信息,譬如,事务a对数据组a中数据单元x加上的第一数据锁,以及事务b对数据组a中数据单元y加上的第二数据锁。104、基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果。其中,操作类型信息可以包括第一操作类型、第二操作类型,加锁检测可以包括第一加锁检测和第二加锁检测,检测结果可以包括第一加锁检测结果和第二加锁检测结果。步骤104可以包括以下步骤:基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果,包括:当操作类型信息为第一操作类型时,基于锁定状态信息对待操作数据单元进行第一加锁检测,得到第一加锁检测结果;当操作类型信息为第二操作类型时,基于锁定状态信息对待操作数据单元进行第二加锁检测得到第二加锁检测结果。其中,数据锁可以包括第一数据锁、第二数据锁,步骤“基于锁定状态信息对待操作数据单元进行第一加锁检测,得到第一加锁检测结果”可以包括以下步骤:基于目标数据组的锁定状态信息确定待操作数据单元对应的全部数据锁;当待操作数据单元对应的数据锁中既不包括第一数据锁,也不包括第二数据锁时,得到第一加锁检测结果。步骤“基于锁定状态信息对待操作数据单元进行第二加锁检测,得到第二加锁检测结果”可以包括以下步骤:基于目标数据组的锁定状态信息确定待操作数据单元对应的全部数据锁;当待操作数据单元对应的数据锁只包括第二数据锁时,得到第二加锁检测结果;当待操作数据单元对应的数据锁中既不包括第一数据锁,也不包括第二数据锁时,得到第二加锁检测结果。105、基于检测结果对待操作数据单元进行加锁处理。其中,加锁处理可以包括第一加锁处理和第二加锁处理,步骤105可以包括以下步骤:基于第一检测结果对待操作数据单元进行第一加锁处理;基于第二检测结果对待操作数据单元进行第二加锁处理。其中,步骤“基于第一检测结果对待操作数据单元进行第一加锁处理”可以包括以下步骤:基于第一检测结果在目标数据组的锁定状态信息中为待操作数据单元添加操作指令的第一数据锁。步骤“基于第二检测结果对待操作数据单元进行第二加锁处理”可以包括以下步骤:基于第二检测结果在目标数据组的锁定状态信息中为待操作数据单元添加操作指令的第二数据锁。其中,数据锁可以包括多种类型,比如,数据锁可以包括读锁(共享锁)和写锁(排它锁)。这两种锁间的关系可以如下:待操作数据单元的读锁与读锁可以共存,待操作数据单元的读锁与写锁互斥,待操作数据单元的写锁与写锁互斥。比如,数据单元q将要被操作指令a对应的事务a处理时,假设数据单元q已经具有事务a的读锁时,事务b可以对数据单元q加上事务b的读锁,但是不可以对数据单元q加上事务b的写锁;假设数据单元q已经具有事务a的写锁时,事务b不可以对数据单元q加上事务b的读锁,也不可以对数据单元q加上事务b的写锁。具体地,在一些实施例中,为了进一步区分读写操作,从而降低冲突检测的准确度,操作类型信息可以包括第一操作类型、第二操作类型,加锁处理包括第一加锁处理和第二加锁处理,步骤104可以包括如下步骤:当操作类型信息为第一操作类型时,基于锁定状态信息对待操作数据单元进行第一加锁处理;当操作类型信息为第二操作类型时,基于锁定状态信息对待操作数据单元进行第二加锁处理。比如,第一操作类型可以是写入类型,第二操作类型可以是读取类型,等等。比如,第一加锁处理可以指对待操作数据单元加上写锁,第二加锁处理可以指对待操作数据单元加上读锁,等等。具体地,待操作数据单元可以具有多个事务添加的事务锁,在一些实施例中,锁定状态信息可以包括目标数据组中数据单元的数据锁,数据锁可以包括第一数据锁、第二数据锁,步骤“基于锁定状态信息对待操作数据单元进行第一加锁处理”可以包括如下步骤:基于目标数据组的锁定状态信息确定待操作数据单元对应的全部数据锁;当待操作数据单元对应的数据锁中既不包括第一数据锁,也不包括第二数据锁时,在目标数据组的锁定状态信息中为待操作数据单元添加操作指令的第一数据锁。具体地,待操作数据单元可以具有多个事务添加的事务锁,在一些实施例中,锁定状态信息可以包括目标数据组中数据单元的数据锁,数据锁可以包括第一数据锁、第二数据锁,步骤“基于锁定状态信息对待操作数据单元进行第二加锁处理”可以包括如下步骤:基于目标数据组的锁定状态信息确定待操作数据单元对应的全部数据锁;当待操作数据单元对应的数据锁只包括第二数据锁时,在目标数据组的锁定状态信息中为待操作数据单元添加操作指令的第二数据锁;当待操作数据单元对应的数据锁中既不包括第一数据锁,也不包括第二数据锁时,在目标数据组的锁定状态信息中为待操作数据单元添加操作指令的第二数据锁。106、当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。当加锁完成后,才可以执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。当加锁失败时,需要重新检测是否还存在冲突,从而等待其他事务解锁,直到冲突消失,完成加锁后执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。在一些实施例中,每次执行操作指令,以对待操作数据单元进行操作类型信息对应的操作后可以将此次执行保存到历史操作信息中,以便于通过自动分组更新数据组集合,从而降低之后数据处理的计算量、提高数据处理的效率,故步骤105之后,还可以包括如下步骤:获取数据单元的历史操作信息;基于操作指令更新数据单元的历史操作信息。在一些实施例中,锁定状态信息可以包括目标数据组中数据单元的数据锁,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作后及时解锁可以提高其他事务处理数据的效率,故步骤105之后,还可以包括如下步骤:在目标数据组的锁定状态信息中为待操作数据单元删除操作指令的数据锁。由上可知,本发明实施例可以获取操作指令和数据组集合,数据组集合包括至少一个数据组,数据组包括至少一个数据单元,操作指令包括操作类型信息和待操作数据单元信息;根据待操作数据单元信息在数据组集合中查询待操作数据单元对应的目标数据组;获取目标数据组的锁定状态信息;基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁处理;当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。由此本方案可以根据待操作单元所属的目标数据组来为待操作单元进行对应的加锁处理,从而执行该操作指令。由此,本发明可以降低获取锁定状态信息以及加锁处理时的计算量,从而在保证安全的同时提升数据处理的效率。根据上述实施例所描述的方法,以下将作进一步详细说明。在本实施例中,将以数据处理装置集成在数据库服务器中为例,对本发明实施例的方法进行详细说明。如图2a所示,一种数据处理方法具体流程如下:201、自动地更新数据组集合,该更新后的数据组集合包括至少一个数据组,数据组包括至少一个数据单元。本实施例中,在自动地更新数据组集合之前,数据组集合可以由用户指定数据单位如何分配到数据组中。比如,参考表1,用户可以指定将表1中奇数列中的所有数据单位分为一个数据组、将偶数列中的所有数据单位分为一个数据组;再比如,将表1中奇数行(即第1、3、5...号的元组)中的所有数据单位分为一个数据组、将偶数行(即第2、4、6...号的元组)中的所有数据单位分为一个数据组。再比如,参考表1,用户可以设置分组数量为4,指定将表1中所有的数据单位均分为4组。再比如,参考表1,用户可以设置分组数量为2,指定将表1中每隔2列的数据单位分为一组,等等。具体的用户分组原理相同,方式多样,在此不作细述。用户分组方式可以调整冲突检测的粒度大小,使得粒度从元组缩小为用户设定的数据组,从而减小了信息的维护量。比如,假设事务t1访问了元组的数据单元x和数据单元y,若用户将数据单元x和数据单元y分为同一个数据组,则当执行完事务t1之后(即步骤207),仅需要记录事务t1访问了该数组。在一些实施例中,用户在某些情况下可能难以设置合适的冲突检测粒度的大小,(即数据组的分组),为了降低冲突误判的概率,本实施例可以自动地更新数据组集合。计算机自动地更新数据组集合的方式是,通过判断数据单元中容易产生冲突的数据单元,在此可以将这些容易产生冲突的数据单元其称为易冲突单元,将不容易产生冲突的数据单元称为不易冲突单元,然后,将每个易冲突单元单独作为一个数据组,将不易冲突单元添加到n个数据组中。其中,n为正整数,具体n的大小可以由用户指定,也可以由本领域技术人员设置,还可以根据不易冲突单元的数量决定。具体地,判断易冲突单元和不易冲突单元的方式如下:首先,获取预设数值范围、数据单元的历史操作信息;基于历史操作信息统计数据组集合中每个数据单元的历史操作次数;基于历史操作次数和预设数值范围对数据单元进行分组处理,得到重新自动分组后的数据组集合。比如,预设数值范围为10至正无穷,根据历史操作信息可以统计数据组集合中每个数据单元的历史操作次数,将历史操作次数属于10至正无穷的数据单元确定为易冲突单元,否则为不易冲突单元。202、获取操作指令,其中,该操作指令包括操作类型信息和待操作数据单元信息,并根据待操作数据单元信息在数据组集合中查询待操作数据单元对应的目标数据组,获取目标数据组的锁定状态信息。具体地,操作类型信息可以是读取类型和写入类型,假设待操作数据单元为数据单元c,参考图1c,该待操作数据单元所属的目标数据组为数据组2。则获取数据组2的锁定状态信息。比如,参考图2b,可以获取数据组2的锁定状态信息,其中,数据组2的锁定状态信息记录了当前的事务a在数据单元a上添加的写锁,以及当前的事务b在数据单元c上添加的读锁。203、基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁处理。此时,待操作数据单元是数据单元c,数据单元c上当前具有事务b添加的读锁,则基于该读锁,以及操作类型信息可以对待操作数据单元进行加锁处理。由于读锁与读锁可以共存,读锁与写锁互斥,写锁与写锁互斥,则当数据单元c上当前具有事务b添加的读锁时,若操作类型信息表现为读取类型时,则可以在待操作数据单元上添加本次事务的读锁;若操作类型信息表现为写入类型时,则加锁失败。比如,事务t要对某一元组的某一数据单元加写锁时,可以参考如下步骤:获取该元组的锁定状态信息;如果锁定状态信息没有数据锁,则加锁成功;否则加锁失败。比如,事务t要对某一元组的某一数据单元加读锁时,可以参考如下步骤:获取该元组的锁定状态信息;如果锁定状态信息没有数据锁,则加锁成功;如果锁定状态信息有数据锁,检查待操作数据单元具有的数据锁;如果待操作数据单元具有的数据锁中没有写锁,则加锁成功;否则加锁失败。204、当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作,以及根据操作指令更新数据单元的历史操作信息,并在目标数据组的锁定状态信息中为待操作数据单元删除操作指令的数据锁。假如加锁失败,则等待事务b对待操作数据单元解锁,然后完成加锁处理,并执行操作指令,以对待操作数据单元进行操作类型信息对应的操作,以及根据操作指令更新数据单元的历史操作信息,并在目标数据组的锁定状态信息中为待操作数据单元删除操作指令的数据锁。若加锁成功,则执行操作指令,以对待操作数据单元进行操作类型信息对应的操作,以及根据操作指令更新数据单元的历史操作信息,并在目标数据组的锁定状态信息中为待操作数据单元删除操作指令的数据锁。例如,参考图2c,在图2c中的分布式数据库架构采用了本数据处理方案,其中,该分布式数据库采用了数据库分库、数据分表的方式进行数据的存储与处理。其中,协调系统可以是zookeeper(一种分布式计算系统)、spark(一种分布式计算系统),等等。其中,数据库分为m组,每组中包括一个主数据库服务器和n个备数据库服务器,从而达到负载均衡。每当用户输入数据时,用户发出的操作指令被协调系统分配给相应的数据库组,使得用户写入的数据被分散并存放到不同的数据库组。比如,将用户输入的一张数据表拆分为多个表,并分散存储到不同的数据库组中;再比如,根据用户输入的一张数据表中数据的逻辑关系,按照某些条件将该数据包拆分为多个表,并按拆分逻辑分散存储到不同的数据库组中。具体地,每当用户输入一张数据表时,网关可以将数据表推送给协调系统,协调系统可以以任务的形式进行保存,并将其发送给数据库中的主数据库服务器或备数据库服务器,然后,收集每组数据库中主备数据库服务器返回的结果,将结果返回给用户。其中,数据库可以从协调系统中拉取仍无,并切换每组数据库中的主备数据库服务器,以及监控数据库的状态并将其上传给协调系统。由此,在图2c所示的采用了本数据处理方案的分布式数据库架构中,可以保证读写数据时数据的原子性和一致性,从而保证了冲突检测准确性的情况下提高事务的并发度,以及数据库的吞吐量,从而提升数据处理的效率。由上可知,本发明实施例可以自动地更新数据组集合,该更新后的数据组集合包括至少一个数据组,数据组包括至少一个数据单元;获取操作指令,该操作指令包括操作类型信息和待操作数据单元信息;根据待操作数据单元信息在数据组集合中查询待操作数据单元对应的目标数据组;获取目标数据组的锁定状态信息;基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁处理;当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作;根据操作指令更新数据单元的历史操作信息,并在目标数据组的锁定状态信息中为待操作数据单元删除操作指令的数据锁。由此,本发明实施例可以在保证冲突检测准确性的情况下提高事务的并发度,以及数据库的吞吐量,从而提升数据处理的效率。此外,本发明实施例还提供了多种分组的方法,使得冲突检测的粒度大小可以由用户或自动地改变,可以在保证冲突检测准确性的情况下进一步降低计算量。为了更好地实施以上方法,本发明实施例还提供一种数据处理装置,该数据处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(personalcomputer,pc)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。在一些实施例中,该数据处理装置还可以集成在多个电子设备中,比如,数据处理装置可以集成在多个服务器中,由多个服务器构成分布式服务器集群来实现本发明的数据处理方法。本发明实施例提供一种数据处理装置,其中,该数据处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。在本实施例中,将以数据处理装置集成在分布式服务器集群中为例,对本发明实施例的方法进行详细说明。例如,如图3所示,该数据处理装置可以包括获取单元301、查询单元302、数据锁单元303、检测单元304、加锁单元305以及执行单元306如下:(一)获取单元301:获取单元301可以用于获取操作指令,操作指令包括操作类型信息和待操作数据单元信息。在一些实施例中,获取单元301在执行步骤“获取操作指令,操作指令包括操作类型信息和待操作数据单元信息”之前,还可以包括获取子单元、统计子单元、以及分组子单元,如下:(1)获取子单元:获取子单元可以用于获取预设数值范围、数据单元的历史操作信息。(2)统计子单元:统计子单元可以用于基于历史操作信息统计每个数据单元的历史操作次数。(3)分组子单元:分组子单元可以用于基于历史操作次数和预设数值范围对数据单元进行分组处理,得到数据组集合。在一些实施例中,数据组集合可以包括一个第一数据组和多个第二数据组,该分组子单元可以包括概率子模块、第一分组生成子模块、第一分组添加子模块以及第二分组添加子模块,如下:概率子模块可以用于基于历史操作次数计算每个数据单元的历史操作概率;第一分组生成子模块可以用于生成一个第一分组;当数据单元的历史操作概率不属于预设数值范围时,第一分组添加子模块可以用于将数据单元添加到第一分组;当数据单元的历史操作概率属于预设数值范围时,第二分组添加子模块可以用于生成一个数据单元对应的第二分组,将数据单元添加到数据单元对应的第二分组。在一些实施例中,数据单元可以包括多个数据子单元,第一分组添加子模块具体可以用于:生成数据单元对应的第二分组;将多个数据子单元添加到数据单元对应的第二分组。(二)查询单元302:查询单元302可以根据待操作数据单元信息在数据组集合中查询目标数据组,数据组集合包括至少一个数据组,数据组包括至少一个数据单元。在一些实施例中,查询单元302在用于根据待操作数据单元信息在数据组集合中查询待操作数据单元对应的目标数据组之前,可以包括更新子单元、用户更新子单元以及自动更新子单元用于:获取分组更新指令;当分组更新指令的指令类型为用户分组类型时,采用分组更新指令对数据组集合中的数据单位进行重新分组;当分组更新指令的指令类型为自动分组类型时,对数据组集合中的数据单位进行重新自动分组。其中,更新子单元,用于获取分组更新指令。当分组更新指令的指令类型为用户分组类型时,用户更新子单元可以用于采用分组更新指令对数据组集合中的数据单位进行重新分组。当分组更新指令的指令类型为自动分组类型时,自动更新子单元可以用于对数据组集合中的数据单位进行重新自动分组。在一些实施例中,自动更新子单元具体可以用于:获取预设数值范围、数据单元的历史操作信息;基于历史操作信息统计数据组集合中每个数据单元的历史操作次数;基于历史操作次数和预设数值范围对数据单元进行分组处理,得到重新自动分组后的数据组集合。在一些实施例中,用户更新子单元具体可以用于:将数据组集合中的数据单位均分为分组数量个数据组,得到分组后的数据组集合。(三)数据锁单元303:数据锁单元303可以用于获取目标数据组的锁定状态信息。(四)检测单元304:检测单元304可以用于基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果。其中,操作类型信息包括第一操作类型、第二操作类型,加锁检测包括第一加锁检测和第二加锁检测,检测结果包括第一加锁检测结果和第二加锁检测结果。在一些实施例中,检测单元304具体可以用于:当操作类型信息为第一操作类型时,基于锁定状态信息对待操作数据单元进行第一加锁检测,得到第一加锁检测结果;当操作类型信息为第二操作类型时,基于锁定状态信息对待操作数据单元进行第二加锁检测得到第二加锁检测结果。(五)加锁单元305:加锁单元305可以用于基于检测结果对待操作数据单元进行加锁处理。其中,加锁处理可以包括第一加锁处理和第二加锁处理,加锁单元305具体可以用于:基于第一检测结果对待操作数据单元进行第一加锁处理;基于第二检测结果对待操作数据单元进行第二加锁处理。(六)执行单元306:执行单元306可以用于当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。在一些实施例中,执行单元306在执行操作指令,以对待操作数据单元进行操作类型信息对应的操作之后,还可以用于:获取数据单元的历史操作信息;基于操作指令更新数据单元的历史操作信息。在一些实施例中,锁定状态信息可以包括目标数据组中数据单元的数据锁,执行单元306在执行操作指令,以对待操作数据单元进行操作类型信息对应的操作之后,执行单元306还可以用于:在目标数据组的锁定状态信息中为待操作数据单元删除操作指令的数据锁。具体实施时,以上各个数据单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个数据单元的具体实施可参见前面的方法实施例,在此不再赘述。由上可知,本实施例的数据处理装置由获取单元获取操作指令,操作指令包括操作类型信息和待操作数据单元信息;由查询单元根据待操作数据单元信息在数据组集合中查询目标数据组,数据组集合包括至少一个数据组,数据组包括至少一个数据单元;由数据锁单元获取目标数据组的锁定状态信息;由检测单元基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果;由加锁单元基于检测结果对待操作数据单元进行加锁处理;由执行单元当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。由于本方案实施例可以降低计算量,由此,本方案实施例可以提升数据处理的效率。本发明实施例还提供一种电子设备,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。在本实施例中,将以本实施例的电子设备是服务器为例进行详细描述,比如,如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403、输入模块404以及通信模块405等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。在一些实施例中,处理器401可包括一个或多个处理核心;在一些实施例中,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。服务器还包括给各个部件供电的电源403,在一些实施例中,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。该服务器还可包括输入模块404,该输入模块404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该服务器还可包括通信模块405,在一些实施例中通信模块405可以包括无线模块,服务器可以通过该通信模块405的无线模块进行短距离无线传输,从而为用户提供了无线的宽带互联网访问。比如,该通信模块405可以用于帮助用户收发电子邮件、浏览网页和访问流式媒体等。尽管未示出,服务器还可以包括显示数据单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:获取操作指令,操作指令包括操作类型信息和待操作数据单元信息;根据待操作数据单元信息在数据组集合中查询目标数据组,数据组集合包括至少一个数据组,数据组包括至少一个数据单元;获取目标数据组的锁定状态信息;基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果;基于检测结果对待操作数据单元进行加锁处理;当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。由上可知,本方案实施例可以降低计算量,从而提升数据处理的效率。本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种数据处理方法中的步骤。例如,该指令可以执行如下步骤:获取操作指令,操作指令包括操作类型信息和待操作数据单元信息;根据待操作数据单元信息在数据组集合中查询目标数据组,数据组集合包括至少一个数据组,数据组包括至少一个数据单元;获取目标数据组的锁定状态信息;基于锁定状态信息以及操作类型信息对待操作数据单元进行加锁检测,得到检测结果;基于检测结果对待操作数据单元进行加锁处理;当完成加锁处理后,执行操作指令,以对待操作数据单元进行操作类型信息对应的操作。其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种数据处理方法中的步骤,因此,可以实现本发明实施例所提供的任一种数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本发明实施例所提供的一种数据处理方法、装置、服务器和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1