一种数据处理方法和相关装置转让专利

申请号 : CN202110512407.2

文献号 : CN112988913B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 熊亮春王晓宇

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例公开了一种数据处理方法和相关装置,第一节点和第二节点等计算节点可以对分布式数据库系统中存储的数据对象进行读取、修改,获取第一节点用于变更数据对象的目标标识对,目标标识对包括数据对象的对象标识和目标版本标识,目标版本标识用于标识数据对象中第一数据被变更为第二数据的数据版本;根据对象标识,将目标标识对关联于数据对象进行存储;获取第二节点的第一读取请求,第一读取请求包括第一标识对,第一标识对包括对象标识和数据对象的第一待核实版本标识;若确定目标版本标识与第一待核实版本标识不同,且未从第一节点获取包括第二数据的数据对象,拒绝第一读取请求,从而避免出现针对数据对象的数据同步异常问题。

权利要求 :

1.一种数据处理方法,其特征在于,所述方法包括:获取第一节点用于变更分布式数据库系统中数据对象的目标标识对,所述第一节点为所述分布式数据库系统中的一个计算节点,所述目标标识对包括所述数据对象的对象标识和目标版本标识,所述目标版本标识用于标识所述数据对象中第一数据被变更为第二数据的数据版本;

根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储;

获取第二节点针对所述数据对象的第一读取请求,所述第二节点为所述分布式数据库系统中与所述第一节点不同的一个计算节点,所述第一读取请求包括第一标识对,所述第一标识对包括所述对象标识和所述数据对象的第一待核实版本标识;所述第一待核实版本标识用于表示所述第二节点想要变更的所述数据对象的数据版本;

若确定所述目标版本标识比所述第一待核实版本标识较新,且未从所述第一节点获取包括所述第二数据的所述数据对象,拒绝所述第一读取请求,其中,确定所述第一待核实版本与所述目标版本标识是否相同,用于确定所述第二节点是否具备对所述第一待核实版本的数据对象读取的权限,避免出现所述第一节点和所述第二节点针对同一个版本的数据对象进行修改,导致数据同步异常。

2.根据权利要求1所述的方法,其特征在于,在所述获取第一节点用于变更分布式数据库系统中数据对象的目标标识对之前,所述方法还包括:获取所述第一节点针对所述数据对象的第二读取请求,所述第二读取请求包括所述数据对象的第二标识对,所述第二标识对包括所述对象标识和所述数据对象的第二待核实版本标识;

根据所述对象标识确定对应所述数据对象关联存储的第三标识对,所述第三标识对包括所述对象标识和第一版本标识,所述第一版本标识用于标识所述数据对象中所述第一数据的数据版本;

若确定所述第二待核实版本标识与所述第一版本标识相同,向所述第一节点返回与所述第一版本标识对应的所述数据对象。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:若确定所述第二待核实版本标识与所述第一版本标识不相同,指示所述第一节点将所述第二待核实版本标识更新为所述第一版本标识,并重新发送针对所述数据对象的读取请求。

4.根据权利要求2所述的方法,其特征在于,所述目标版本标识是基于预置步长,对所述第一版本标识增加或减少得到的。

5.根据权利要求1所述的方法,其特征在于,所述根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储,包括:根据所述对象标识,将所述目标标识对存储到所述数据对象对应的元数据中,以及将所述目标标识对存储到所述数据对象对应的用户数据中,所述元数据用于描述所述用户数据的属性定义。

6.根据权利要求1‑5任意一项所述的方法,其特征在于,所述方法还包括:获取所述第一节点针对所述数据对象的创建请求;

根据所述创建请求向所述第一节点返回为所述数据对象生成的对象标识;

获取对应所述数据对象的初始标识对,所述初始标识对包括所述对象标识和初始版本标识;

将所述初始标识对关联于所述数据对象进行存储。

7.根据权利要求1‑5任意一项所述的方法,其特征在于,所述方法还包括:获取所述第一节点针对所述数据对象的删除请求,所述删除请求包括待删除标识对,所述待删除标识对包括所述对象标识和第二版本标识,所述第二版本标识是根据所述目标版本标识更新得到的;

将所述待删除标识对关联于所述数据对象进行存储;

对所述数据对象进行删除,并在删除完成后删除所述待删除标识对。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:获取所述第二节点针对所述数据对象的第三读取请求,所述第三读取请求包括第四标识对,所述第四标识对包括所述对象标识和第三待核实版本标识;

响应于确定所述第二版本标识与所述第三待核实版本标识不同,且在所述数据对象的删除期间,拒绝所述第三读取请求。

9.一种数据处理装置,其特征在于,所述装置包括获取单元、存储单元和执行单元;

所述获取单元,用于获取第一节点用于变更分布式数据库系统中数据对象的目标标识对,所述第一节点为所述分布式数据库系统中的一个计算节点,所述目标标识对包括所述数据对象的对象标识和目标版本标识,所述目标版本标识用于标识所述数据对象中第一数据被变更为第二数据的数据版本;

所述存储单元,用于根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储;

所述获取单元,还用于获取第二节点针对所述数据对象的第一读取请求,所述第二节点为所述分布式数据库系统中与所述第一节点不同的一个计算节点,所述第一读取请求包括第一标识对,所述第一标识对包括所述对象标识和所述数据对象的第一待核实版本标识;所述第一待核实版本标识用于表示所述第二节点想要变更的所述数据对象的数据版本;

所述执行单元,用于若确定所述目标版本标识比所述第一待核实版本标识较新,且未从所述第一节点获取包括所述第二数据的所述数据对象,拒绝所述第一读取请求,其中,确定所述第一待核实版本与所述目标版本标识是否相同,用于确定所述第二节点是否具备对所述第一待核实版本的数据对象读取的权限,避免出现所述第一节点和所述第二节点针对同一个版本的数据对象进行修改,导致数据同步异常。

10.根据权利要求9所述的装置,其特征在于,所述装置还包括验证单元,用于:获取所述第一节点针对所述数据对象的第二读取请求,所述第二读取请求包括所述数据对象的第二标识对,所述第二标识对包括所述对象标识和所述数据对象的第二待核实版本标识;

根据所述对象标识确定对应所述数据对象关联存储的第三标识对,所述第三标识对包括所述对象标识和第一版本标识,所述第一版本标识用于标识所述数据对象中所述第一数据的数据版本;

若确定所述第二待核实版本标识与所述第一版本标识相同,向所述第一节点返回与所述第一版本标识对应的所述数据对象。

11.根据权利要求9所述的装置,其特征在于,所述存储单元,用于:根据所述对象标识,将所述目标标识对存储到所述数据对象对应的元数据中,以及将所述目标标识对存储到所述数据对象对应的用户数据中,所述元数据用于描述所述用户数据的属性定义。

12.根据权利要求9‑11任意一项所述的装置,其特征在于,所述装置还包括创建单元,用于:

获取所述第一节点针对所述数据对象的创建请求;

根据所述创建请求向所述第一节点返回为所述数据对象生成的对象标识;

获取对应所述数据对象的初始标识对,所述初始标识对包括所述对象标识和初始版本标识;

将所述初始标识对关联于所述数据对象进行存储。

13.根据权利要求9‑11任意一项所述的装置,其特征在于,所述装置还包括删除单元,用于:

获取所述第一节点针对所述数据对象的删除请求,所述删除请求包括待删除标识对,所述待删除标识对包括所述对象标识和第二版本标识,所述第二版本标识是根据所述目标版本标识更新得到的;

将所述待删除标识对关联于所述数据对象进行存储;

对所述数据对象进行删除,并在删除完成后删除所述待删除标识对。

14.一种计算机设备,其特征在于,所述设备包括处理器以及存储器:所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行权利要求1‑8任意一项所述的方法。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1‑8任意一项所述的方法。

说明书 :

一种数据处理方法和相关装置

技术领域

[0001] 本申请涉及数据处理领域,特别是涉及一种数据处理方法和相关装置。

背景技术

[0002] 分布式数据库系统是一种常用的数据存储系统,该系统由多个用于数据存储的计算节点组成。分布式数据库系统中存储有数据对象(Schema),计算节点可以在系统中创建
数据对象,也可以变更系统中的数据对象。
[0003] 为了保证数据对象在被变更过程中的数据正确性,相关技术主要采用锁机制的强同步方式,使得在对数据对象进行变更过程中对于不兼容操作的阻塞,避免数据对象在系
统中出现不一致性,也避免了在变更数据对象过程中其让计算节点的操作导致数据异常的
情况。
[0004] 然而,强同步需要分布式数据库系统中所有的计算节点都同意才能够授予锁,大量的交互会增加获取锁的系统开销,降低系统处理能力,而且这些系统额外负担会随着计
算节点增加而迅速提升,不利于分布式数据库系统扩展和使用。

发明内容

[0005] 为了解决上述技术问题,本申请提供了一种数据处理方法和相关装置,用于保证数据对象在被变更过程中的数据正确性。
[0006] 本申请实施例公开了如下技术方案:
[0007] 一方面,本申请提供一种数据处理方法,所述方法包括:
[0008] 获取第一节点用于变更分布式数据库系统中数据对象的目标标识对,所述第一节点为所述分布式数据库系统中的一个计算节点,所述目标标识对包括所述数据对象的对象
标识和目标版本标识,所述目标版本标识用于标识所述数据对象中第一数据被变更为第二
数据的数据版本;
[0009] 根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储;
[0010] 获取第二节点针对所述数据对象的第一读取请求,所述第二节点为所述分布式数据库系统中与所述第一节点不同的一个计算节点,所述第一读取请求包括第一标识对,所
述第一标识对包括所述对象标识和所述数据对象的第一待核实版本标识;
[0011] 若确定所述目标版本标识与所述第一待核实版本标识不同,且未从所述第一节点获取包括所述第二数据的所述数据对象,拒绝所述第一读取请求。
[0012] 另一方面,本申请提供一种数据处理装置,所述装置包括获取单元、存储单元和执行单元;
[0013] 所述获取单元,用于获取第一节点用于变更所述分布式数据库系统中数据对象的目标标识对,所述第一节点为所述分布式数据库系统中的一个计算节点,所述目标标识对
包括所述数据对象的对象标识和目标版本标识,所述目标版本标识用于标识所述数据对象
中第一数据被变更为第二数据的数据版本;
[0014] 所述存储单元,用于根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储;
[0015] 所述获取单元,还用于获取第二节点针对所述数据对象的第一读取请求,所述第二节点为所述分布式数据库系统中与所述第一节点不同的一个计算节点,所述第一读取请
求包括第一标识对,所述第一标识对包括所述对象标识和所述数据对象的第一待核实版本
标识;
[0016] 所述执行单元,用于若确定所述目标版本标识与所述第一待核实版本标识不同,且未从所述第一节点获取包括所述第二数据的所述数据对象,拒绝所述第一读取请求。
[0017] 另一方面,本申请提供一种计算机设备,所述设备包括处理器以及存储器:
[0018] 所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
[0019] 所述处理器用于根据所述程序代码中的指令执行上述方面所述的方法。
[0020] 另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述方面所述的方法。
[0021] 另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算
机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使
得该计算机设备执行上述方面所述的方法。
[0022] 由上述技术方案可以看出,在分布式数据库系统中包括第一节点和第二节点在内的多个计算节点,若第一节点需要将数据对象所包括的第一数据变更为第二数据,第一节
点会发送包括该数据对象的对象标识和目标版本标识的目标标识对,通过对象标识可查找
到分布式数据库系统中待变更的数据对象,通过目标版本标识明确数据对象被第一节点变
更后的数据版本。由于计算节点读写该数据对象时均需要携带包括版本标识的标识对,故
在从第一节点获取包括第二数据的数据对象之前,系统会先行将目标标识对对应于数据对
象进行关联存储,从而系统中该数据对象的版本标识从用于标识第一数据的数据版本被更
新为标识第二数据的目标版本标识。由此,若在第一节点变更该数据对象的期间获取其他
节点例如第二节点对该数据对象的第一读取请求,由于第二节点所提供的第一标识对中包
括的第一待核实版本标识不会与目标版本标识相同,且此时尚未从第一节点获取包括第二
数据的数据对象,系统将判定此时数据对象尚未变更完毕,目前系统内该数据对象中的第
一数据并非最终版本,不能提供给第二节点,由此系统将拒绝该第一读取请求,即不会向第
二节点提供非最终版本的数据对象,避免出现针对数据对象的数据同步异常问题。从而保
证第二节点不会利用非最终版本的数据对象进行数据变更,确保了数据对象在分布式数据
库系统中正确性和一致性。

附图说明

[0023] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0024] 图1为本申请实施例提供的一种数据处理方法的应用场景示意图;
[0025] 图2为本申请实施例提供的一种数据处理方法的流程图;
[0026] 图3为本申请实施例提供的一种修改数据对象的流程图;
[0027] 图4为本申请实施例提供的一种创建数据对象的流程图;
[0028] 图5为本申请实施例提供的一种删除数据对象的流程图;
[0029] 图6为本申请实施例提供的一种数据处理装置的示意图;
[0030] 图7为本申请实施例提供的服务器的结构示意图;
[0031] 图8为本申请实施例提供的终端设备的结构示意图。

具体实施方式

[0032] 下面结合附图,对本申请的实施例进行描述。
[0033] 基于相关技术中,锁机制的强同步方式会增加分布式数据库系统的额外负担,故此本申请实施例提供一种数据处理方法和相关装置,用于在保证数据对象在被变更过程中
的数据正确性的同时,降低分布式数据库系统的额外负担。
[0034] 本申请实施例提供的数据处理方法是基于云计算实现的,其中,云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简
称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各
种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来
协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
[0035] 目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。
客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成
许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity) 
等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记
录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象
的存储位置信息让客户端对数据进行访问。
[0036] 存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘
阵(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分
条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
[0037] 在本申请实施例提供的数据处理方法中,通过云存储技术控制分布式数据库系统中的多个计算节点对存储节点中存储的数据进行处理,如增加、删除、修改等操作,保证数
据对象在被变更过程中的数据正确性。
[0038] 本申请提供的数据处理方法可以应用于具有数据处理能力的数据处理设备,如终端设备、服务器。其中,终端设备具体可以为智能手机、台式计算机、笔记本电脑、平板电脑
等,但并不局限于此;服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服
务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备以及服务器可
以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
[0039] 如本申请实施例提供的数据处理方法或相关装置,其中多个服务器可组成为一区块链,而服务器为区块链上的节点。
[0040] 为了便于理解本申请的技术方案,下面结合实际应用场景,以服务器作为数据处理设备对本申请实施例提供的数据处理方法进行介绍。
[0041] 参见图1,该图为本申请实施例提供的一种数据处理方法的应用场景示意图。在图1所示的应用场景中,分布式数据库系统中包括多个计算节点和存储节点,每个计算节点均
可以对存储节点中存储的数据对象进行处理,下面以分布式数据库系统中包括第一节点
101、第二节点102和存储节点200为例进行说明。
[0042] 若第一节点101需要将数据对象A所包括的第一数据变更为第二数据,第一节点101会发送针对于数据对象A的目标标识对:< A,V2.0>给存储节点200。其中,对象标识为A,
目标标识版本为V2.0。存储节点200可以通过A在存储的数据对象中查找到待变更的数据对
象A,通过V2.0可以明确第一节点101想要将数据对象A的数据版本从1.0变更为2.0。
[0043] 在接收目标标识对:之后,存储节点200会根据A,将对应于数据对象A进行关联存储,此时在存储节点200中,数据对象A的版本标识为2.0,随后第一节点
101可以开始将第一数据变更为第二数据,以便存储节点200可以从第一节点101获取包括
第二数据的数据对象A。
[0044] 若在第一节点101对数据对象A进行变更的期间,存储节点200获取第二节点102的第一读取请求,该第一读取请求中包括第一标识对:< A,V1.0>,其中,对象标识为A,第一待
核实版本标识为V1.0,存储节点200可以通过A可以明确第二节点102想要变更的数据对象
为数据对象A,且待变更的数据对象A的数据版本为1.0。
[0045] 第二节点102想要变更的数据版本为1.0,但是存储节点200当前存储的针对数据对象A的数据版本为2.0,即第一待核实版本标识与目标版本标识不相同,第二节点102不是
针对最终版本的数据对象A进行变更。而且,此时第一节点101正在将数据对象A中包括的第
一数据变为第二数据,即存储节点200还未从第一节点101获取到包括第二数据的数据对象
A,故存储节点200内存储的针对数据对象A不是最终版本的数据对象。
[0046] 若存储节点200将不是最终版本的数据对象,即将1.0版本的数据对象A 提供给第二节点102,此时第二节点102和第一节点101均可以对1.0版本的数据对象A进行变更,会出
现针对数据对象A的数据同步异常问题,从而无法保证数据对象A的正确性。
[0047] 故此,若存储节点200确定目标版本标识与第一待核实版本标识不同,且未从第一节点101获取包括第二数据的数据对象A,将拒绝第二节点102的第一读取请求,即存储节点
200不会向第二节点102提供非最终版本的数据对象A。
[0048] 由此,保证了第二节点102不会利用非最终版本的数据对象A进行数据变更,避免出现针对数据对象A的数据同步异常问题,确保了数据对象A在分布式数据库系统中的正确
性和一致性。
[0049] 下面结合附图,以服务器作为数据处理设备,对本申请实施例提供的一种数据处理方法进行介绍。
[0050] 参见图2,该图为本申请实施例提供的一种数据处理方法的流程图。如图2所示,该数据处理方法包括以下步骤:
[0051] S201:获取第一节点用于变更分布式数据库系统中数据对象的目标标识对。
[0052] 分布式数据库系统中包括多个计算节点和存储节点,不同的计算节点均可以对存储节点中存储的数据对象进行处理,如增加、删除、修改等操作。其中,数据对象为用来实际
存储数据的对象,如表、索引、列等。
[0053] 下面以分布式数据库系统中两个节点对数据对象进行变更为例,其中,变更数据对象是对数据对象进行修改操作。第一节点想要修改存储节点中存储的原始A论文中的第
一章内容,在第一节点修改期间,存储节点还未获取到修改第一章后的A论文。若在此期间,
第二节点想要对A论文的第二章进行修改,但此时存储节点只保存有原始A论文,第二节点
只能获取到原始A论文。故,不论第一节点还是第二节点谁先存储修改后的A论文,存储节点
最后存储的论文均不会是对于原始A论文第一章和第二章均修改后的A论文,由此会出现针
对A论文的数据同步异常问题。
[0054] 为了避免数据同步异常问题,相关技术中采用锁机制的强同步方式,可通过保证存储节点存储的数据对象在变更过程中对于不兼容操作的阻塞,确保数据同步,但是会增
加分布式数据库系统的额外负担。
[0055] 基于此,本申请实施例提供的数据处理方法,提出了使用包括数据对象的对象标识和版本标识的标识对,其中,对象标识用于标识一个数据对象,以便查找待变更的数据对
象,版本标识还可以称作写屏障(Writing fence),用于明确数据对象被计算节点变更后的
数据版本,其他计算节点使用不正确版本标识的数据对无法读取或修改数据对象,从而通
过使用标识对阻止其他计算节点使用不正确版本的数据对象进行修改,避免数据一致性与
完整性遭到破坏。同时,在出现数据问题时,通过版本标识也便于回滚、回溯,从而获取所需
版本的数据对象。
[0056] 故此,不同的计算节点在对数据对象处理前,需要发送携带版本标识的标识对给存储节点。下面继续以两个计算节点为例,存储节点获取第一节点用于变更分布式数据库
系统中数据对象的目标标识对,该目标标识对中包括该数据对象的对象标识和目标版本标
识,目标版本标识用于标识数据对象中第一数据被变更为第二数据的数据版本。
[0057] 通过版本标识可以明确第一节点想要修改对象标识对应的数据对象,且是将该数据对象中第一数据修改为第二数据,此时存储节点当前存储的最终版本的数据对象为包括
第二数据的数据对象对应的版本。
[0058] 例如,第一节点想要修改原始A论文中的第一章内容,其需要发送目标标识对,该目标标识对包括原始A论文的对象标识,以及标识原始A论文被变更为修改了第一章的A论
文的目标版本标识,例如,A论文从V1.0版本被变更为V2.0版本。存储节点在接收该目标标
识对之后,明确第一节点想要修改原始A论文,在第一节点修改期间,不会允许第二节点对
原始A论文再进行修改,从而避免了避免数据同步异常问题,相比于相关技术中锁机制的强
同步方式降低了分布式数据库系统的额外负担。
[0059] S202:根据对象标识,将目标标识对关联于数据对象进行存储。
[0060] 由于计算节点在对数据对象进行处理之前,需要将携带包括版本标识的标识对发送给存储节点,故存储节点在从第一节点获取包括第二数据的数据对象之前,为了保证数
据对象的一致性,即避免其他计算节点,如第二节点获取到不正确版本的数据对象,从而对
不正确版本的数据对象进行修改以至于破坏了数据对象的完整性,存储节点会先行将目标
标识对与其对应的数据对象进行关联存储,使得存储节点中该数据对象的版本标识从用于
标识第一数据的数据版本被更新为标识第二数据的目标版本标识。
[0061] 由此,可以通过目标版本标识确定其他节点是否具备对数据对象修改的权限,如若其他计算节点携带非目标版本标识的标识对,则不允许其他计算节点对数据对象进行修
改操作等,避免在数据对象变更期间,出现第一节点和第二节点均对同一个版本的数据对
象进行修改的问题,无法保证数据的一致性和完整性。
[0062] 本申请实施例不具体限定关联存储的方式,下面以一种方式为例进行说明。
[0063] 数据对象可以包括元数据和用户数据,其中,元数据用于描述用户数据的属性定义,被称为“数据的数据”,即数据的属性。用户数据属于实例,即一条记录。例如,若数据对
象是一个二维的表,每一行代表一位用户的用户数据,每一列都属于一种元数据。故可以根
据对象标识,将目标标识对存储到数据对象对应的元数据中,以及将目标标识对存储到数
据对象对应的用户数据中,从而实现将目标标识对与数据对象进行关联存储。
[0064] S203:获取第二节点针对数据对象的第一读取请求。
[0065] 若分布式数据库系统中其他计算节点,如第二节点想要对数据对象进行修改操作等,为了保证数据对象的一致性,需要先读取存储节点当前存储的最终版本的数据对象,故
第二节点会发送第一读取请求给存储节点,第一读取请求中包括第一标识对,第一标识对
包括对象标识和第一待核实版本标识。
[0066] 其中,对象标识用于查找第二节点想要读取的数据对象,第一待核实版本为第二节点当前想要读取的数据对象的版本,第一待核实版本可能与存储节点当前存储的最终版
本相同,也可能不相同。为了保证所有计算节点读取到版本相同的数据对象,所有节点均应
该读取存储节点当前存储的最终版本的数据对象。如果第一待核实版本与存储节点当前存
储的最终版本不同,则需要更新第一待核实版本为存储节点当前存储的最终版本,以便第
二节点可以获取到与其他计算节点版本相同的数据对象。
[0067] 由此,存储节点根据第一标识对中对象标识,确定第二节点想要读取的数据对象与第一节点变更的数据对象相同,通过判断第一待核实版本与目标版本标识是否相同,确
定第二节点是否具备对该第一待核实版本的数据对象读取的权限,避免出现第一节点和第
二节点针对同一个版本的数据对象进行修改,导致数据同步异常。
[0068] S204:若确定目标版本标识与第一待核实版本标识不同,且未从第一节点获取包括第二数据的数据对象,拒绝第一读取请求。
[0069] 若第一待核实版本标识与目标版本标识不同,而且存储节点未从第一节点获取包括第二数据的数据对象,说明第二节点想要读取的数据对象不是存储节点当前存储的最终
版本,且第一节点虽然通过目标版本标识更新了存储节点对于数据对象的最终版本,但是
第一节点还在对数据对象进行修改期间,没有存储修改后的数据对象,存储节点没有存储
目标版本标识对应的数据对象,所以存储节点无法给第二节点提供最终版本的数据对象,
此时存储节点拒绝第一读写请求,即不会向第二节点提供非最终版本的数据对象,避免出
现针对数据对象的数据同步异常问题,从而保证第二节点不会利用非最终版本的数据对象
进行数据变更,确保了数据对象在分布式数据库系统中一致性和完整性。
[0070] 由上述技术方案可以看出,在分布式数据库系统中包括第一节点和第二节点在内的多个计算节点,若第一节点需要将数据对象所包括的第一数据变更为第二数据,第一节
点会发送包括该数据对象的对象标识和目标版本标识的目标标识对,通过对象标识可查找
到分布式数据库系统中待变更的数据对象,通过目标版本标识明确数据对象被第一节点变
更后的数据版本。由于计算节点读写该数据对象时均需要携带包括版本标识的标识对,故
在从第一节点获取包括第二数据的数据对象之前,系统会先行将目标标识对对应于数据对
象进行关联存储,从而系统中该数据对象的版本标识从用于标识第一数据的数据版本被更
新为标识第二数据的目标版本标识。由此,若在第一节点变更该数据对象的期间获取其他
节点例如第二节点对该数据对象的第一读取请求,由于第二节点所提供的第一标识对中包
括的第一待核实版本标识不会与目标版本标识相同,且此时尚未从第一节点获取包括第二
数据的数据对象,系统将判定此时数据对象尚未变更完毕,目前系统内该数据对象中的第
一数据并非最终版本,不能提供给第二节点,由此系统将拒绝该第一读取请求,即不会向第
二节点提供非最终版本的数据对象,避免出现针对数据对象的数据同步异常问题。从而保
证第二节点不会利用非最终版本的数据对象进行数据变更,确保了数据对象在分布式数据
库系统中正确性和一致性。
[0071] 为了保证数据对象的一致性与完整性,在每个计算节点修改数据对象之前均需要从存储节点读取数据对象,存储节点需要确定每个计算节点是否具备读取数据对象的权
限,故在第一节点给存储节点发送目标标识对,将数据对象中第一数据变更为第二数据之
前,存储节点需要验证第一节点是否具备读取数据对象的权限,保证其可以变更,且变更的
数据对象,即包括第一数据的数据对象是最终版本的。故在S201之前,还可以包括以下步
骤,参见S2001‑S2003。
[0072] S2001:获取第一节点针对数据对象的第二读取请求。
[0073] 针对包括第一数据的数据对象,第二读取请求中包括第二标识对,第二标识对包括该数据对象的对象标识和第二待核实版本标识。第二待核实版本标识为第一节点当前本
地保存的针对该数据对象的版本标识。
[0074] 第一节点发送第二读取请求给存储节点,存储节点根据第二读取请求包括的第二标识对明确第一节点想要读取的数据对象及其版本。
[0075] 需要说明的是,第二读取请求中可以携带读取标识或修改标识,以便存储节点明确第一节点想要读取数据对象或修改数据对象。或者,由于第二待核实版本标识仅标识一
个版本,即第一节点当前存储的最终版本标识,存储节点明确第一节点想要读取数据对象。
而目标版本标识标识两个版本,即第一节点想要将数据对象从用于标识第一数据的数据版
本更新为标识第二数据的目标版本标识,存储节点明确第一节点想要修改数据对象。
S2002:根据对象标识确定对应数据对象关联存储的第三标识对。
[0076] 在根据对象标识明确第一节点想要修改的数据对象之后,可以在存储节点中获取与该数据对象关联存储的第三标识对,该第三标识对包括对象标识和第一版本标识,通过
对象标识可以查找到第三标识对,第一版本标识用于标识数据对象中第一数据的数据版
本,此时,存储节点中第一数据的最终版本为第一版本标识。
[0077] S2003:若确定第二待核实版本标识与第一版本标识相同,向第一节点返回与第一版本标识对应的数据对象。
[0078] 若第二待核实版本标识与第一版本标识相同,说明第一节点想要读取的数据对象的数据版本是最终版本,且此时存储节点保存有最终版本的数据对象,即没有其他节点对
该数据对象进行修改,存储节点可以向第一节点返回与第一版本标识对应的数据对象,即
包括第一数据的数据对象,以便第一节点将该数据对象中第一数据变更为第二数据,同时,
将第一版本标识变更为目标版本标识。
[0079] 本申请实施例不具体地限定版本标识更新的方式,例如,基于预置步长,将第一版本标识增加或减少得到目标版本标识,如第一版本标识为V10,预置步长为+10,则目标版本
标识可以更新为V20,又如第一版本标识为V100,预置步长为‑1,则目标版本标识可以更新
为V99。
[0080] 由此,通过确定第二待核实版本标识与第一版本标识相同,可以保证第一节点读取的数据对象是存储节点当前保存的最终版本,从而保证第一节点获取正确版本的数据对
象进行变更,保证数据的正确性。下面通过S2004说明第二待核实版本标识与第一版本标识
不相同的情况。
[0081] S2004:若确定第二待核实版本标识与第一版本标识不相同,指示第一节点将第二待核实版本标识更新为第一版本标识,并重新发送针对数据对象的读取请求。
[0082] 若第二待核实版本标识与第一版本标识不相同,说明第一节点想要读取的数据对象的版本不是存储节点当前存储的最终版本,若第一节点在读取此版本的数据对象后,对
此版本的数据对象进行修改,会出现数据同步异常问题,故可以指示第一节点将第二待核
实版本更新为存储节点当前存储的最终版本,即第一版本标识,并重新发送针对数据对象
的读取请求,以便存储节点保证第一节点读取的数据对象的版本是当前存储的最终版本,
存储节点将当前存储的最终版本的数据对象,即包括第一数据的数据对象发送给第一节
点,从而保证第一节点获取正确版本的数据对象进行修改,保证数据的正确性。
[0083] 下面结合图3,以修改数据对象为例进行说明。在本实施例中,第一节点具有从存储节点获取的包括第一数据的数据对象,第一节点想要将数据对象中第一数据修改为第二
数据。参见图3,该图为本申请实施例提供的一种修改数据对象的流程图。
[0084] S301:第一节点设置目标标识对。
[0085] 该目标标识对包括数据对象的对象标识和目标版本标识,该目标版本标识用于标识包括第二数据的数据对象的版本。
[0086] S302:存储节点根据对象标识将目标标识对存储到数据字典中。
[0087] 从广义角度讲,数据字典隶属于元数据,数据字典可以看为是数据本身,其通常主要是用来解释数据表、数据字段等数据结构意义,数据字段的取值范围,数据值代表意义
等。
[0088] S303:存储节点判断目标标识对是否存储至数据字典中,若是,则执行S304,若否则执行S309。
[0089] S304:第一节点在用户数据中写入目标标识对。
[0090] S305:存储节点将目标标识对关联存储至用户数据中。
[0091] S306:存储节点判断目标标识对是否存储至用户数据中,若是,则执行S307,若否,则执行S309。
[0092] S307:第一节点执行对应DDL逻辑。
[0093] 数据库模式定义语言(Data Definition Language,DDL),用于描述存储节点中要存储的数据对象的操作,如修改操作、删除操作、创建操作等,在本申请实施例,具体指修改
操作。
[0094] S308:第一节点判断是否完成DDL逻辑,若是,则结束修改流程,若否,则执行S301。
[0095] S309:恢复清理逻辑,执行S308。
[0096] 若第二节点也想对数据对象进行修改,需要先从存储节点读取存储节点当前存储的最终版本的数据对象,具体参见S311‑S319。
[0097] S311:第二节点从本地获取第一标识对。
[0098] 例如,第二节点打开本地保存的数据对象,加载该数据对象对应的第一标识对。第一标识对包括针对数据对象的对象标识和第一待核实版本标识。S312:第二节点向存储节
点发送第一标识对。
[0099] S313:存储节点判断第一待核实版本标识与目标版本标识是否相同。若是,则执行S314,若否,则执行S316。
[0100] S314:存储节点根据对象标识发送包括第二数据的数据对象。
[0101] S315:第二节点对数据对象进行读取,结束读取流程。
[0102] S316:存储节点返回给第二节点是否能读取数据对象的结果。
[0103] 若第一待核实版本标识与目标版本标识不同,而且存储节点未从第一节点获取包括第二数据的数据对象,则返回不允许第二节点读取数据对象的结果。
[0104] 若第一待核实版本标识与目标版本标识不同,但是第一节点已经修改完该数据对象,存储节点获取包括第二数据的数据对象,返回允许第二节点可读取数据对象的结果,但
是第二节点需要更新想要读取的数据对象的数据版本。
[0105] S317:第二节点判断当前读取操作是否被允许,若是,则执行S318,若否,则执行S319。
[0106] S318:第二节点更新第一标识对中的第一待核实版本标识,向存储节点发送更新后的第一标识对,执行S313。
[0107] S319:第二节点进行回滚,结束读取流程。
[0108] 第二节点在读取包括第二数据的数据对象后,可以通过如S201‑S204的方式对包括第二数据的数据对象进行修改。
[0109] 计算节点不仅可以对数据对象进行修改,还可以对数据对象进行创建和删除,下面以第一节点为例,先对数据对象的创建过程进行说明。
[0110] 存储节点在获取第一节点针对数据对象的创建请求后,根据该创建请求为该数据对象生成对象标识,并将该对象标识返回给第一节点,第一节点将对象标识与初始版本标
识匹配,作为初始标识对返回给存储节点,初始版本标识表示数据对象的第一个版本,存储
节点将初始标识对关联于数据对象进行存储。
[0111] 在数据对象的创建期间,由于其他计算节点不能感知到该数据对象的存在,也就不能对数据对象进行处理,因此不会出现数据同步异常问题,数据对象处于数据一致性与
完整性状态。
[0112] 若是多个计算节点,如第一节点和第二节点同时对同一个数据对象进行创建,存储节点获取第一节点和第二节点针对数据对象的创建请求后,存储节点根据第一节点的创
建请求为该数据对象生成第一对象标识,并将第一对象标识返回给第一节点,第一节点将
第一对象标识与初始版本标识匹配,作为第一初始版本标识对返回给存储节点。
[0113] 同理,存储节点根据第二节点的创建请求为该数据对象生成第二对象标识,并将第二对象标识返回给第二节点,第二节点将第二对象标识与初始版本标识匹配,作为第二
初始版本标识对返回给存储节点。
[0114] 虽然针对同一数据对象具有多个初始版本标识对,但是不同节点创建的初始标识对不同,因此不会出现数据同步异常问题,数据对象处于数据一致性与完整性状态。若后续
发现针对同一数据对象具有多个初始版本标识对,可以通过删除操作删除冗余的数据对
象。
[0115] 下面结合图4对创建数据对象进行说明。参见图4,该图为本申请实施例提供的一种创建数据对象的流程图。
[0116] S401:第一节点创建数据对象的结构,发送给存储节点。
[0117] 在创建数据对象时,第一节点在数据对象的结构中增加标识对,如<对象标识,版本标识>,存储节点获取第一节点针对数据对象的创建请求。
[0118] S402:存储节点为数据对象生成对象标识。
[0119] 存储节点根据获取的创建请求为数据对象生成对象标识,可以通过TINDEX_ID表示对象标识,如TINDEX_ID:1001。
[0120] S403:存储节点判断对象标识是否生成成功,若是,则执行S404,若否,则执行S411。
[0121] S404:第一节点为数据对象设置初始标识对,发送给存储节点。
[0122] 其中,初始标识对可以表示为,, SCHEMA_VERSION表示版本标识,如SCHEMA_VERSION:1。存储节点获取对应数据对象的初始标识对,初始标识
对包括对象标识和初始版本标识,如初始标识对为<1001,1>。
[0123] S405:存储节点根据对象标识将初始标识对存储到数据字典中。
[0124] S406:存储节点判断初始标识对是否存储至数据字典中,若是,则执行S407,若否则执行S411。
[0125] S407:第一节点在用户数据中写入初始标识对。
[0126] 初始标识对为<1001,1>。
[0127] S408:存储节点将初始标识对关联存储至用户数据中。
[0128] S409:存储节点判断初始标识对是否存储至用户数据中,若是,则执行S410,若否,则执行S411。
[0129] S410:第一节点创建数据对象成功,结束创建流程。
[0130] S411:恢复清理逻辑,结束创建流程。
[0131] 第一节点创建数据对象失败,清除创建过程中的数据,以便再次创建数据对象。
[0132] 由此,本申请实施例将增加的版本标识融入到创建一个数据对象的过程中,同时在计算节点和存储节点初始化对应的对象标识,因此在创建数据对象完成前,需要完成计
算节点和存储节点分别为数据对象初始化完成的对象标识和版本标识配对,构成标识对之
后,创建的数据对象才能够被分布式数据库系统的用户正常使用,从而保证了保证数据的
一致性和完整性。
[0133] 以上为数据对象的创建过程,下面继续以第一节点为例,对数据对象的删除过程进行说明。
[0134] 若第一节点想要删除存储节点中存储的数据对象,需要保证在删除期间其他计算节点不会对数据对象进行修改,从而保证数据对象不会出现同步异常问题。故存储节点在
获取第一节点针对数据对象的删除请求后,将删除请求中包括的待删除标识对关联于数据
对象进行存储,根据待删除标识对中的对象标识对数据对象进行删除,并在删除完成后删
除待删除标识对。
[0135] 其中,待删除标识对包括针对数据对象的对象标识和第二版本标识,该第二版本标识是根据目标版本标识更新得到的。例如,若第一节点想要删除包括第二数据的数据对
象,则将目标版本标识更新为第二版本标识。
[0136] 在删除期间,通过更新后的版本标识明确其他节点无法在删除期间对数据对象进行读取或修改。例如,获取其他计算节点,如第二节点针对数据对象的第三读取请求,该第
三读取请求包括第四标识对,第四标识对包括对象标识和第三待核实版本标识。若在数据
对象的删除期间确定第二版本标识与第三待核实版本标识不同,说明第二节点想要修改的
数据对象的版本与存储节点当前存储的最终版本不同,且第一节点还未完成对该数据对象
的删除,拒绝第三读取请求。从而保证数据对象的一致性和完整性。
[0137] 下面结合图5对删除数据对象进行说明。参见图5,该图为本申请实施例提供的一种删除数据对象的流程图。
[0138] S501:第一节点读取数据对象的目标标识对。
[0139] S502:第一节点设置待删除标识对,并发送给存储节点。
[0140] 第一节点先将目标标识对中的目标版本标识更新为第二版本标识,将对象标识与第二版本标识构成待删除标识对,发送携带待删除标识对的删除请求给存储节点。
[0141] S503:存储节点根据对象标识将待删除标识对存储到数据字典中。
[0142] S505:存储节点判断待删除标识对是否存储至数据字典中,若是,则执行S505,若否则执行S510。
[0143] S505:第一节点在用户数据中写入待删除标识对。
[0144] S506:存储节点将待删除标识对关联存储至用户数据中。
[0145] S507:存储节点判断待删除标识对是否存储至用户数据中,若是,则执行S508,若否,则执行S510。
[0146] S508:第一节点删除数据对象。
[0147] 此时数据对象处于删除状态,可以通过发送给存储节点空的数据对象,使存储节点将空的数据对象替换为待删除的数据对象。
[0148] S509:第一节点删除数据字典中待删除标识对,结束删除流程。
[0149] S510:恢复清理逻辑,结束删除流程。
[0150] 若在第一节点删除数据对象的过程中,第二节点想要读取该数据对象,第二节点可以发送携带第三待核实版本标识的第三读取请求,第三待核实版本标识与第二版本标识
不同,若数据对象在删除期间,存储节点拒绝第三读取请求,具体过程可以参照S311‑S319。
[0151] 若在数据对象删除完成后,数据对象与第二版本标识均被删除,第二节点无法通过版本标识找到该数据对象,从而阻止第二节点对不正确版本的数据对象进行处理,避免
数据对象的完整性遭到破坏。
[0152] 由此,通过推进版本标识能够保证数据对象被修改的过程中,对应数据对象的一致性与完整性得到有效的保护,同时对于各计算节点之间状态不要求强同步,计算节点在
创建数据对象时,初始化版本标识之后,后续的数据操作均有版本标识来确定读取请求是
否被允许,解藕了计算节点,通过判断计算节点是否能够执行对应的DDL逻辑,能够在分布
式数据库系统中以最小的代价来保证各计算节点能够彼此正确的修改或读取对应的数据
对象。
[0153] 为了更好的理解本申请实施例提供的数据处理方法,下面以分布式数据库系统包括第一节点、第二节点和存储节点为例,对本申请实施例提供的数据处理方法进行说明。
[0154] 第一节点想要保存A论文至存储节点,在创建存储A论文的数据对象过程中,将初始标识对融入至创建数据对象的过程中,其中,TINDEX_ID设
置为1001,SCHEMA_VERSION设置为V1。具体创建过程可以参见S401‑S411,由此,第一节点将
携带初始标识对<1001,V1>的A论文存储至存储节点中。
[0155] 若第一节点想要对A论文的第一章进行修改,需要从存储节点获取A论文,第一节点发送携带第二标识对的第二读取请求给存储节点,验证其想要修改的A论文是当前存储
的最终版本,其中,第二标识对包括对象标识和第二待核实版本标识,可以表示为<1001,V1
>。当验证通过后,存储节点向第一节点返回A论文。具体验证过程可以参照S2001‑S2003,由
此,第一节点可以对A论文的第一章进行修改。
[0156] 第一节点发送<1001,V2>给存储节点,其中<1001,V2>为目标标识对,存储节点将<1001,V2>与A论文进行关联存储,明确当前A论文的最终版本为V2,在没有获取到包括修改
第一章后的A论文之前,存储节点明确第一节点正在修改A论文,不会允许其他节点对A论文
进行修改。具体修改过程可以参见S301‑S309。
[0157] 若第二节点想要对A论文的第二章进行修改,第二节点发送<1001,V1>给存储节点,其中,<1001,V1>为第一标识对,V1为第一待核实版本。存储节点验证第二节点想要修改
的A论文不是当前存储的最终版本,而且存储节点未从第一节点获取包括修改第一章后的A
论文,拒绝第二节点的读取请求。具体修改过程可以参见S311‑S319。
[0158] 若第一节点想要删除A论文,发送<1001,V3>给存储节点,其中<1001,V3>为待删除标识对,存储节点将<1001,V3>与A论文进行关联存储,明确当前A论文的最终版本为V3,通
过版本标识V3锁定存储节点当前存储的A论文,让其他节点不能进行修改,在删除A论文后,
删除<1001,V3>。具体删除过程可以参见S501‑S510。
[0159] 由此,在执行DDL逻辑过程中,推进数据对象对应的版本标识变化,来阻塞在变更过程中其他计算节点对于数据对象可能产生的破坏性操作。其他计算节点只使用包括版本
标识的读取请求来访问数据对象,根据情况被动更新版本标识到最新,实现利用版本标识
来保护数据对象的目的。
[0160] 针对上述实施例提供的数据处理方法,本申请实施例还提供了一种数据处理装置。
[0161] 参见图6,该图为本申请实施例提供的一种数据处理装置的示意图。如图6所示,该数据处理装置600包括:获取单元601、存储单元602和执行单元603;
[0162] 所述获取单元601,用于获取第一节点用于变更分布式数据库系统中数据对象的目标标识对,所述第一节点为分布式数据库系统中的一个计算节点,所述目标标识对包括
所述数据对象的对象标识和目标版本标识,所述目标版本标识用于标识所述数据对象中第
一数据被变更为第二数据的数据版本;
[0163] 所述存储单元602,用于根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储;
[0164] 所述获取单元601,还用于获取第二节点针对所述数据对象的第一读取请求,所述第二节点为分布式数据库系统中与所述第一节点不同的一个计算节点,所述第一读取请求
包括第一标识对,所述第一标识对包括所述对象标识和所述数据对象的第一待核实版本标
识;
[0165] 所述执行单元603,用于若确定所述目标版本标识与所述第一待核实版本标识不同,且未从所述第一节点获取包括所述第二数据的所述数据对象,拒绝所述第一读取请求。
[0166] 作为一种可能的实现方式,所述装置还包括验证单元,用于:
[0167] 获取所述第一节点针对所述数据对象的第二读取请求,所述第二读取请求包括所述数据对象的第二标识对,所述第二标识对包括所述对象标识和所述数据对象的第二待核
实版本标识;
[0168] 根据所述对象标识确定对应所述数据对象关联存储的第三标识对,所述第三标识对包括所述对象标识和第一版本标识,所述第一版本标识用于标识所述数据对象中所述第
一数据的数据版本;
[0169] 若确定所述第二待核实版本标识与所述第一版本标识相同,向所述第一节点返回与所述第一版本标识对应的所述数据对象。
[0170] 作为一种可能的实现方式,所述验证单元,还用于:
[0171] 若确定所述第二待核实版本标识与所述第一版本标识不相同,指示所述第一节点将所述第二待核实版本标识更新为所述第一版本标识,并重新发送针对所述数据对象的读
取请求。
[0172] 作为一种可能的实现方式,所述目标版本标识是基于预置步长,对所述第一版本标识增加或减少得到的。
[0173] 作为一种可能的实现方式,所述存储单元602,用于:
[0174] 根据所述对象标识,将所述目标标识对存储到所述数据对象对应的元数据中,以及将所述目标标识对存储到所述数据对象对应的用户数据中,所述元数据用于描述所述用
户数据的属性定义。
[0175] 作为一种可能的实现方式,所述装置还包括创建单元,用于:
[0176] 获取所述第一节点针对所述数据对象的创建请求;
[0177] 根据所述创建请求向所述第一节点返回为所述数据对象生成的对象标识;
[0178] 获取对应所述数据对象的初始标识对,所述初始标识对包括所述对象标识和初始版本标识;
[0179] 将所述初始标识对关联于所述数据对象进行存储。
[0180] 作为一种可能的实现方式,所述装置还包括删除单元,用于:
[0181] 获取所述第一节点针对所述数据对象的删除请求,所述删除请求包括待删除标识对,所述待删除标识对包括所述对象标识和第二版本标识,所述第二版本标识是根据所述
目标版本标识更新得到的;
[0182] 将所述待删除标识对关联于所述数据对象进行存储;
[0183] 对所述数据对象进行删除,并在删除完成后删除所述待删除标识对。
[0184] 作为一种可能的实现方式,所述装置还包括删除单元,还用于:
[0185] 获取所述第二节点针对所述数据对象的第三读取请求,所述第三读取请求包括第四标识对,所述第四标识对包括所述对象标识和第三待核实版本标识;
[0186] 响应于确定所述第二版本标识与所述第三待核实版本标识不同,且在所述数据对象的删除期间,拒绝所述第三读取请求。
[0187] 本申请实施例提供的数据处理装置,在分布式数据库系统中包括第一节点和第二节点在内的多个计算节点,若第一节点需要将数据对象所包括的第一数据变更为第二数
据,第一节点会发送包括该数据对象的对象标识和目标版本标识的目标标识对,通过对象
标识可查找到分布式数据库系统中待变更的数据对象,通过目标版本标识明确数据对象被
第一节点变更后的数据版本。由于计算节点读写该数据对象时均需要携带包括版本标识的
标识对,故在从第一节点获取包括第二数据的数据对象之前,系统会先行将目标标识对对
应于数据对象进行关联存储,从而系统中该数据对象的版本标识从用于标识第一数据的数
据版本被更新为标识第二数据的目标版本标识。由此,若在第一节点变更该数据对象的期
间获取其他节点例如第二节点对该数据对象的第一读取请求,由于第二节点所提供的第一
标识对中包括的第一待核实版本标识不会与目标版本标识相同,且此时尚未从第一节点获
取包括第二数据的数据对象,系统将判定此时数据对象尚未变更完毕,目前系统内该数据
对象中的第一数据并非最终版本,不能提供给第二节点,由此系统将拒绝该第一读取请求,
即不会向第二节点提供非最终版本的数据对象,避免出现针对数据对象的数据同步异常问
题。从而保证第二节点不会利用非最终版本的数据对象进行数据变更,确保了数据对象在
分布式数据库系统中正确性和一致性。
[0188] 前述所述的数据处理设备可以为一种计算机设备,该计算机设备可以为服务器,还可以为终端设备,下面将从硬件实体化的角度对本申请实施例提供的计算机设备进行介
绍。其中,图7所示为服务器的结构示意图,图8所示为终端设备的结构示意图。
[0189] 参见图7,图7是本申请实施例提供的一种服务器结构示意图,该服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central 
processing units,CPU)1422(例如,一个或一个以上处理器)和存储器1432,一个或一个以
上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储设备)。其
中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序
可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令
操作。更进一步地,中央处理器1422可以设置为与存储介质1430通信,在服务器1400上执行
存储介质1430中的一系列指令操作。
[0190] 服务器1400还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458,和/或,一个或一个以上操作系统1441,例
如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
[0191] 上述实施例中由服务器所执行的步骤可以基于该图7所示的服务器结构。
[0192] 其中,CPU 1422用于执行如下步骤:
[0193] 获取第一节点用于变更分布式数据库系统中数据对象的目标标识对,所述第一节点为分布式数据库系统中的一个计算节点,所述目标标识对包括所述数据对象的对象标识
和目标版本标识,所述目标版本标识用于标识所述数据对象中第一数据被变更为第二数据
的数据版本;
[0194] 根据所述对象标识,将所述目标标识对关联于所述数据对象进行存储;
[0195] 获取第二节点针对所述数据对象的第一读取请求,所述第二节点为分布式数据库系统中与所述第一节点不同的一个计算节点,所述第一读取请求包括第一标识对,所述第
一标识对包括所述对象标识和所述数据对象的第一待核实版本标识;
[0196] 若确定所述目标版本标识与所述第一待核实版本标识不同,且未从所述第一节点获取包括所述第二数据的所述数据对象,拒绝所述第一读取请求。
[0197] 可选的,CPU 1422还可以执行本申请实施例中数据处理方法任一具体实现方式的方法步骤。
[0198] 参见图8,图8为本申请实施例提供的一种终端设备的结构示意图。图8示出的是与本申请实施例提供的终端设备相关的智能手机的部分结构的框图,该智能手机包括:射频
(Radio Frequency,简称RF)电路1510、存储器1520、输入单元1530、显示单元1540、传感器
1550、音频电路1560、无线保真(wireless fidelity,简称WiFi)模块1570、处理器1580、以
及电源1590等部件。本领域技术人员可以理解,图8中示出的智能手机结构并不构成对智能
手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布
置。
[0199] 下面结合图8对智能手机的各个构成部件进行具体的介绍:
[0200] RF电路1510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1580处理;另外,将设计上行的数据发送给基站。通常,RF电路
1510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise 
Amplifier,简称LNA)、双工器等。此外,RF电路1510还可以通过无线通信与网络和其他设备
通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统
(Global System of Mobile communication,简称GSM)、通用分组无线服务(General 
Packet Radio Service,简称GPRS)、码分多址(Code Division Multiple Access,简称
CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)、长期演进
(Long Term Evolution,简称LTE)、电子邮件、短消息服务(Short Messaging Service,简
称SMS)等。
[0201] 存储器1520可用于存储软件程序以及模块,处理器1580通过运行存储在存储器1520的软件程序以及模块,从而实现智能手机的各种功能应用以及数据处理。存储器1520
可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所
需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机
的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1520可以包括高速随机存
取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易
失性固态存储器件。
[0202] 输入单元1530可用于接收输入的数字或字符信息,以及产生与智能手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1530可包括触控面板1531以及其他
输入设备1532。触控面板1531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如
用户使用手指、触笔等任何适合的物体或附件在触控面板1531上或在触控面板1531附近的
操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1531可包括触摸检
测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作
带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将
它转换成触点坐标,再送给处理器1580,并能接收处理器1580发来的命令并加以执行。此
外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1531。除了触
控面板1531,输入单元1530还可以包括其他输入设备1532。具体地,其他输入设备1532可以
包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等
中的一种或多种。
[0203] 显示单元1540可用于显示由用户输入的信息或提供给用户的信息以及智能手机的各种菜单。显示单元1540可包括显示面板1541,可选的,可以采用液晶显示器(Liquid 
Crystal Display,简称LCD)、有机发光二极管(Organic Light‑Emitting Diode,简称
OLED)等形式来配置显示面板1541。进一步的,触控面板1531可覆盖显示面板1541,当触控
面板1531检测到在其上或附近的触摸操作后,传送给处理器1580以确定触摸事件的类型,
随后处理器1580根据触摸事件的类型在显示面板1541上提供相应的视觉输出。虽然在图8
中,触控面板1531与显示面板1541是作为两个独立的部件来实现智能手机的输入和输入功
能,但是在某些实施例中,可以将触控面板1531与显示面板1541集成而实现智能手机的输
入和输出功能。
[0204] 智能手机还可包括至少一种传感器1550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环
境光线的明暗来调节显示面板1541的亮度,接近传感器可在智能手机移动到耳边时,关闭
显示面板1541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般
为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别智能手机姿态的应
用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)
等;至于智能手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感
器,在此不再赘述。
[0205] 音频电路1560、扬声器1561,传声器1562可提供用户与智能手机之间的音频接口。音频电路1560可将接收到的音频数据转换后的电信号,传输到扬声器1561,由扬声器1561
转换为声音信号输出;另一方面,传声器1562将收集的声音信号转换为电信号,由音频电路
1560接收后转换为音频数据,再将音频数据输出处理器1580处理后,经RF电路1510以发送
给比如另一智能手机,或者将音频数据输出至存储器1520以便进一步处理。
[0206] WiFi属于短距离无线传输技术,智能手机通过WiFi模块1570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示
出了WiFi模块1570,但是可以理解的是,其并不属于智能手机的必须构成,完全可以根据需
要在不改变发明的本质的范围内而省略。
[0207] 处理器1580是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器1520内的软件程序和/或模块,以及调用存储在存储
器1520内的数据,执行智能手机的各种功能和处理数据,从而对智能手机进行整体监控。可
选的,处理器1580可包括一个或多个处理单元;优选的,处理器1580可集成应用处理器和调
制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处
理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1580
中。
[0208] 智能手机还包括给各个部件供电的电源1590(比如电池),优选的,电源可以通过电源管理系统与处理器1580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功
耗管理等功能。
[0209] 尽管未示出,智能手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
[0210] 在本申请实施例中,该智能手机所包括的存储器1520可以存储程序代码,并将所述程序代码传输给所述处理器。
[0211] 该智能手机所包括的处理器1580可以根据所述程序代码中的指令执行上述实施例提供的数据处理方法。
[0212] 本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行上述实施例提供的数据处理方法。
[0213] 本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的
处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算
机设备执行上述方面的各种可选实现方式中提供的数据处理方法。
[0214] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在
执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一
种:只读存储器(英文:read‑only memory,缩写:ROM)、RAM、磁碟或者光盘等各种可以存储
程序代码的介质。
[0215] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,
相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性
的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的
部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络
单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0216] 以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,
都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围
为准。