一种图数据库的事务请求处理方法与流程

文档序号:33277733发布日期:2023-02-24 20:08阅读:34来源:国知局
一种图数据库的事务请求处理方法与流程

1.本发明涉及电数字数据处理技术领域,特别是涉及一种图数据库的事务请求处理方法。


背景技术:

2.图数据库是实时和大规模并行处理(massively parallel processing,简称mpp),当前的图数据库基本上都是采用图1所示的技术架构,该架构包括图服务(graph service)、元数据服务(meta service)和存储服务(storage service)三个部分。当前的图数据库还不能够实现事务功能,如何实现图数据库的事务功能,是亟待解决的问题。


技术实现要素:

3.本发明目的在于,提供一种图数据库的事务请求处理方法,以实现图数据库的事务功能。
4.根据本发明,提供了一种图数据库的事务请求处理方法,其特征在于,所述图数据库包括图服务、元数据服务和存储服务;所述图数据库还包括事务管理服务,所述事务请求处理方法包括以下步骤:
5.s100,图服务根据接收的事务请求生成事务id和操作集合op,并将事务id发送给事务管理服务,将op发送给图数据库的从节点集worker=(worker1,worker2,

,workern);op=(op1,op2,

,opn),opi为op中的第i个操作,i的取值范围为1到n,n为op包括的操作的总条数,workeri为执行opi的从节点。
6.s200,遍历op,如果opi为删除或修改操作,则执行步骤s300;如果opi为新增操作,则执行步骤s500。
7.s300,如果workeri对resourcei的锁定成功,则workeri向事务管理服务返回带有所述事务id的锁定成功的信息;如果workeri对resourcei的锁定失败,则workeri向事务管理服务返回带有所述事务id的锁定失败的信息;resourcei为opi中被操作的实体。
8.s400,如果worker向事务管理服务返回的带有所述事务id的信息均为锁定成功的信息,则执行步骤s500;如果worker向事务管理服务返回的带有所述事务id的信息中存在锁定失败的信息,则由事务管理服务通知worker中锁定成功的从节点取消锁定,并指示事务执行失败。
9.s500,遍历worker,如果workeri对resourcei的执行结果为执行成功,则workeri向事务管理服务返回带有所述事务id的事务执行成功的信息,并生成回滚日志undologi;如果workeri对resourcei的执行结果为执行失败,则workeri向事务管理服务返回带有所述事务id的事务执行失败的信息。
10.s600,如果worker向事务管理服务返回的带有所述事务id的信息均为执行成功的信息,则由事务管理服务通知worker取消锁定,并指示事务执行成功;如果worker向事务管理服务返回的带有所述事务id的信息中有执行失败的信息,则由事务管理服务通知
workeri根据undologi进行事务回滚,并指示事务执行失败。
11.本发明与现有技术相比具有明显的有益效果,借由上述技术方案,本发明提供的一种图数据库的事务请求处理方法可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
12.本发明对现有图数据库的技术架构进行了改进,主要是在现有图数据库的技术架构中增加了事务管理服务,该事务管理服务在有事务请求时,可以根据执行该事务的各从节点对相应操作的执行结果判定该事务执行成功或该事务执行失败,并在执行失败时通知各从节点进行事务回滚;本发明基于该增加的事务管理服务,实现了图数据库的事务功能。
附图说明
13.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
14.图1为现有的图数据库的技术架构示意图;
15.图2为本发明实施例提供的图数据库的技术架构示意图;
16.图3为本发明实施例提供的图数据库的事务请求处理方法的流程图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.根据本发明,提供了一种图数据库的事务请求处理方法。如图2所示,本发明的图数据库架构与现有图数据库架构的区别在于,除了包括图服务(graph service)、元数据服务(meta service)和存储服务(storage service)之外,还包括事务管理服务(transaction service)。
19.本领域技术人员知悉,使用现有技术中图服务、元数据服务和存储服务的结构构建本发明的图数据库架构均在本发明的保护范围之内。作为现有技术中的一种图数据库架构的具体实施方式,图服务负责处理客户端查询请求,包括解析查询语句、校验语句、生成执行步骤以及按照执行步骤执行四个大步骤;元数据服务负责存储和管理分片的位置信息,并且保证分片的负载均衡,存储了模式(schema)信息,同时还负责schema的添加、修改和删除,并记录它们的版本;存储服务分三层,其中接口层定义了一系列和图相关的应用程序接口(api),通过api针对分片进行键值(kv)操作,共识层实现了multi group raft,保证强一致性和高可用性;存储引擎层提供了对本地数据的get、put、scan等操作。图服务和元数据服务部署在图数据库的主节点(master节点),存储服务部署在图数据库的从节点(worker节点)。
20.根据本发明,图数据库架构中新增的事务管理服务包含事务协调器(transaction coordinator,简称tc)、事务管理器(transaction manager,简称tm)和资源管理器
(resource manager,简称rm)三个组件,这三个组件相互协作,共同完成分布式事务管理。其中,tc用于维护全局和分支事务的状态,驱动全局事务提交或回滚;tm用于定义全局事务的范围:开始全局事务、提交或回滚全局事务;rm用于管理分支事务处理的资源,与tc交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
21.优选的,事务管理服务为了防止单点故障,采用主从方式,用raft共识算法进行选举,保证数据的强一致性。作为一个具体实施方式,本发明使用3个master节点做事务协调,同时使用raft共识算法,对事务协调器进行选举,保证同一时间有一个master节点做事务协调。
22.本发明的图数据库的事务请求处理方法如图3所示,包括以下步骤:
23.s100,图服务根据接收的事务请求生成事务id和操作集合op,并将事务id发送给事务管理服务,将op发送给图数据库的从节点集worker=(worker1,worker2,

,workern);op=(op1,op2,

,opn),opi为op中的第i个操作,i的取值范围为1到n,n为op包括的操作的总条数,workeri为执行opi的从节点。
24.根据本发明,图服务接收到事务请求之后,生成事务id和操作集合op,然后将事务id(即tranid)发送给事务管理服务。事务id具有唯一性,可用于区分该事务请求与其他事务请求,由此,事务管理服务可根据该事务id对后期接收的信息是否属于该事务进行判断。图数据库将生成的op发送给worker,由worker执行事务。
25.根据本发明,图服务根据客户端发送的事务请求还生成执行事务的从节点列表,并将所述从节点列表发送给事务管理服务,由此,事务管理服务就可以知晓执行事务的从节点具体为哪些从节点,进而在其接收到执行事务的所有从节点的返回信息后才做出op是否被全部执行成功的判定。
26.根据本发明,op为n个操作的集合,每个操作由一个从节点执行,由此,worker中包括的从节点的数量也为n。应当理解的是,执行opi的是workeri,因此本发明将op发送给worker时采用的是方法是:将opi发送给workeri。
27.s200,遍历op,如果opi为删除或修改操作,则执行步骤s300;如果opi为新增操作,则执行步骤s500。
28.根据本发明,opi为新增、修改或删除操作,而当opi为修改或删除操作时,需要先锁定实体,因此本发明在opi为修改或删除操作时还包括判断opi中被操作的实体是否被锁定成功的步骤。
29.应当理解的是,如果opi为删除a或者修改a的操作,那么opi中被操作的实体指的就是a。
30.优选的,本发明的锁定指的是写锁定。
31.s300,如果workeri对resourcei的锁定成功,则workeri向事务管理服务返回带有所述事务id的锁定成功的信息;如果workeri对resourcei的锁定失败,则workeri向事务管理服务返回带有所述事务id的锁定失败的信息;resourcei为opi中被操作的实体。
32.应当理解的是,单个的从节点只能获取自身是否锁定成功的信息,而将自身是否锁定成功的信息返回给事务管理服务之后,事务管理服务便具备了判断执行删除或修改操作的所有从节点是否均锁定成功的功能。
33.s400,如果worker向事务管理服务返回的带有所述事务id的信息均为锁定成功的
信息,则执行步骤s500;如果worker向事务管理服务返回的带有所述事务id的信息中存在锁定失败的信息,则由事务管理服务通知worker中锁定成功的从节点取消锁定,并指示事务执行失败。
34.应当理解的是,事务具有原子性,只有当执行删除或修改操作的所有从节点均锁定成功时,事务请求才可能被成功执行。因此,本发明在向事务管理服务返回的信息中存在锁定失败的信息时判定事务执行失败,并通知worker中锁定成功的从节点取消锁定。
35.s500,遍历worker,如果workeri对resourcei的执行结果为执行成功,则workeri向事务管理服务返回带有所述事务id的事务执行成功的信息,并生成回滚日志undologi;如果workeri对resourcei的执行结果为执行失败,则workeri向事务管理服务返回带有所述事务id的事务执行失败的信息。
36.根据本发明,workeri对resourcei执行成功后,还记录操作的回滚日志,以便于在事务执行失败时进行反向操作,保证事务的原子性。优选的,为了简化步骤,本发明中回滚日志只记录各实体在事务执行前的起始值和事务结束后的最终值。
37.s600,如果worker向事务管理服务返回的带有所述事务id的信息均为执行成功的信息,则由事务管理服务通知worker取消锁定,并指示事务执行成功;如果worker向事务管理服务返回的带有所述事务id的信息中有执行失败的信息,则由事务管理服务通知workeri根据undologi进行事务回滚,并指示事务执行失败。
38.应当理解的是,如果某从节点已经成功执行了删除a的操作,那么进行事务回滚时,该从节点需新增a;如果某从节点已经成功执行了修改a的操作,且修改后为a’,那么进行事务回滚时,该从节点需将a’修改为a;如果某从节点已经成功执行了新增a的操作,那么进行事务回滚时,该从节点需将a删除。
39.作为一个具体实施方式,图服务接收的事务请求为一个批量操作的事务请求,其中包含了删除实体a和b,新增实体c和d,以及修改实体e和f。图服务根据接收的事务请求生成对应的操作集合op,操作集合包括以下操作:删除a实体,删除b实体,修改e实体,修改f实体,增加c实体,增加d实体。图服务将op中不同的操作分发给不同的从节点,其中,由worker1节点锁定a实体,worker2节点锁定b实体,worker3节点锁定e实体,worker4节点锁定f实体。如果上述4个从节点存在锁定实体失败的情况,则通知锁定成功的从节点取消锁定,如果上述4个从节点均锁定实体成功,则继续以下步骤:
40.worker1节点删除a实体,worker2节点删除b实体,worker3节点修改e实体,worker4节点修改f实体,worker5节点增加c实体,worker6节点增加d实体。同时记录操作的回滚日志,最后生成的回滚日志如表1所示。
41.表1
42.[0043][0044]
如果上述6个从节点均成功执行对应的操作,则事务管理服务通知worker取消锁定,并指示事务执行成功;如果上述6个从节点中存在执行失败的情形,则事务管理服务通知worker根据回滚日志进行事务回滚,并指示事务执行失败。根据表1的回滚日志,相应的事务回滚操作如表2所示。
[0045]
表2
[0046]
序号回滚日志回滚操作1{tranid,delete,a}在当前节点增加a实体2{tranid,delete,b}在当前节点增加b实体3{tranid,update,e,e’}在当前节点将e’实体改为e4{tranid,update,f,f’}在当前节点将f’实体改为f5{tranid,add,c}在当前节点删除c实体6{tranid,add,d}在当前节点删除d实体
[0047]
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明的范围由所附权利要求来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1