CN115525679A - 一种数据处理的方法和装置 - Google Patents

一种数据处理的方法和装置 Download PDF

Info

Publication number
CN115525679A
CN115525679A CN202211026703.2A CN202211026703A CN115525679A CN 115525679 A CN115525679 A CN 115525679A CN 202211026703 A CN202211026703 A CN 202211026703A CN 115525679 A CN115525679 A CN 115525679A
Authority
CN
China
Prior art keywords
request
target
server
identifier
authority
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
Application number
CN202211026703.2A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202211026703.2A priority Critical patent/CN115525679A/zh
Publication of CN115525679A publication Critical patent/CN115525679A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据处理的方法和装置。该方法包括:服务器接收来自第一目标终端的第一请求,第一请求请求对目标资源进行查询或更改;响应于满足第一条件,服务器将第一请求存储至目标缓存队列,满足第一条件包括:服务器接收到第一请求时目标缓存队列中至少存储有第二请求,第二请求请求对目标资源进行更改,目标缓存队列存储对目标资源进行查询和/或更改的请求,目标缓存队列为服务器所访问的内存中的内存空间;响应于满足第二条件,服务器对第一请求进行处理,生成第一请求对应的处理结果,满足第二条件包括:第二请求执行完毕;服务器将第一请求对应的处理结果发送给第一目标终端。该方法可以增强数据一致性和提高数据处理的结果的准确性。

Description

一种数据处理的方法和装置
技术领域
本申请涉及网络技术领域,尤其涉及一种数据处理的方法和装置。
背景技术
在高并发场景下,服务器会接收到终端发送的多个数据库更新请求,例如,任意一个更新请求用于请求对数据库中存储的目标数据(例如,终端拥有的权限)进行更改或查询。这种场景中,数据库系统的查询压力很大,导致系统响应速度变慢。
为解决上述问题,传统技术中,对数据库数据进行缓存,缓存系统中的缓存数据存储在计算机的内存中,与传统数据库数据需要从磁盘读取相比,访问缓存系统中的数据的效率要高很多。这种技术中,更新请求所请求的数据优先从缓存中获取,从而减少访问数据库的次数。然而,这种技术中对数据库数据更新到缓存的过程中,可能存在因为并发请求等原因引起的缓存数据与数据库数据不一致的情况,从而导致用户从缓存中查询到的是脏数据(dirty read)。
因此,亟需一种数据处理的方法,该方法可以增强数据一致性和提高数据处理的结果的准确性。
发明内容
本申请提供了一种数据处理的方法和装置,该方法可以增强数据一致性和提高数据处理的结果的准确性。
本申请实施例第一方面提供了一种数据处理的方法,包括:服务器接收来自第一目标终端的第一请求,所述第一请求用于请求对目标资源进行查询或更改;响应于满足第一条件,所述服务器将所述第一请求存储至目标缓存队列,所述满足第一条件包括:所述服务器接收到所述第一请求时所述目标缓存队列中至少存储有第二请求,所述第二请求用于请求对所述目标资源进行更改,所述目标缓存队列用于存储对所述目标资源进行查询或更改的请求,且所述目标缓存队列为所述服务器所访问的内存中的内存空间;响应于满足第二条件,所述服务器对所述第一请求进行处理,生成所述第一请求对应的处理结果,所述满足第二条件包括:所述第二请求执行完毕;所述服务器将所述第一请求对应的处理结果发送给所述第一目标终端。
可选的,在一些实现方式中,所述第一请求包括所述目标资源的标识,在所述服务器将所述第一请求存储至目标缓存队列之前,所述方法还包括:所述服务器根据所述目标资源的标识和所述内存中设置的至少一个缓存队列的标识,确定将所述第一请求存储至所述目标缓存队列,所述至少一个缓存队列包括所述目标缓存队列。
可选的,在另一些实现方式中,所述第一请求具体用于请求对所述目标资源进行更改,所述服务器对所述第一请求进行处理,生成所述第一请求对应的处理结果,包括:所述服务器根据所述目标资源的标识,执行删除所述服务器所访问的缓存中存储的所述目标资源的操作;若所述服务器成功删除所述缓存中存储的所述目标资源,则所述服务器根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的第一处理结果或第二处理结果;或者,若所述服务器删除所述缓存中存储的所述目标资源失败,则所述服务器生成所述第一请求对应的第二处理结果;其中,所述第一处理结果表示成功执行所述第一请求,所述第二处理结果表示执行所述第一请求失败。
可选的,在另一些实现方式中,所述第一请求包括所述目标资源的标识,所述服务器根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的处理结果,包括:所述服务器根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果;若所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限,则所述服务器根据所述第一请求对所述数据库中记录的所述目标资源进行更改,并生成所述第一请求对应的第一处理结果;或者,若所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限,则所述服务器生成所述第二处理结果。
可选的,在另一些实现方式中,所述第一请求包括所述目标资源的标识,所述第一请求具体用于请求对所述目标资源进行查询,所述服务器对所述第一请求进行处理,生成所述第一请求对应的处理结果,包括:所述服务器根据所述目标资源的标识对所述服务器所访问的缓存执行查询操作,获得查询结果;若所述查询结果表示所述第一目标终端具有查询所述目标资源的标识所关联的资源的权限,则所述服务器根据所述第一请求从所述缓存中读取所述目标资源的标识所关联的资源,并生成所述第一请求对应的第一处理结果;或者,若所述查询结果表示所述第一目标终端不具有查询所述目标资源的标识所关联的资源的权限,则所述服务器根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的第一处理结果或第二处理结果,其中,所述第一处理结果表示成功执行所述第一请求,所述第二处理结果表示执行所述第一请求失败。
可选的,在另一些实现方式中,所述缓存中设置有标志位,所述方法还包括:所述服务器接收第二目标终端发送的第三请求,所述第二目标终端与所述第一目标终端相同或不同,所述第三请求是在所述服务器接收所述第一请求之后接收到的一个请求,且所述第三请求用于请求对所述目标资源进行查询;响应于满足第三条件,所述服务器根据所述第三请求包括的所述目标资源的标识从所述缓存中读取所述目标资源,并生成所述第三请求对应的第三处理结果,所述第三处理结果表示成功执行所述第三请求;其中,所述满足第三条件包括:所述标志位的取值用于指示所述缓存中存储有所述目标资源的标识对应的资源;所述服务器向所述第二目标终端发送所述第三请求。
可选的,在另一些实现方式中,所述目标资源包括以下至少一种资源:目标终端的账号信息、目标角色、目标权限、所述目标终端的账号信息和所述目标角色的关联关系、或所述目标终端的账号信息和所述目标权限的关联关系。
可选的,在另一些实现方式中,所述目标资源包括所述第一目标终端的账号信息和所述目标权限的关联关系,所述数据库中存储至少一个用户权限模型,所述至少一个用户权限模型中记录终端和权限之间的关联关系,所述服务器根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果,包括:所述服务器根据所述目标资源的标识对所述至少一个用户权限模型执行第一查询操作,获得第一查询结果,所述目标资源的标识包括所述第一目标终端的标识和所述目标权限的标识;若所述第一查询结果表示所述目标资源的标识所包括的所述目标权限的标识与所述至少一个用户权限模型中记录的分配给所述第一目标终端的权限的标识相匹配,则所述服务器获得所述查询结果,且所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限;或者,若所述第一查询结果表示所述目标资源的标识所包括的所述目标权限的标识与所述至少一个用户权限模型中记录的分配给所述第一目标终端的权限的标识不匹配,则所述服务器获得所述查询结果,且所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限。
可选的,在另一些实现方式中,所述目标资源包括所述第一目标终端的账号信息和所述目标权限的关联关系,所述数据库中存储基于角色的访问控制RBAC模型,所述RBAC模型包括至少一个用户角色关联表和至少一个角色权限关联表,所述至少一个用户角色关联表中记录终端和角色之间的关联关系,所述至少一个角色权限关联表中记录权限和所述角色之间的关联关系,所述服务器根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果,包括:所述服务器根据所述目标资源的标识对所述至少一个用户角色关联表执行第二查询操作,获得第二查询结果,所述目标资源的标识包括所述第一目标终端的标识和所述目标权限的标识,所述第二查询结果包括所述至少一个用户角色关联表中记录的所述第一目标终端对应的角色的标识;所述服务器根据所述第一目标终端对应的角色的标识对所述至少一个角色权限表执行第三查询操作,获得第三查询结果,所述第三查询结果包括所述至少一个角色权限关联表中记录的与所述第一目标终端对应的角色的标识所对应的权限的标识;其中,若所述第三查询结果所包括的权限的标识与所述目标资源的标识所包括的所述目标权限的标识相匹配,则所述服务器生成所述查询结果,且所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限;或者,若所述第三查询结果所包括的权限的标识与所述目标资源的标识所包括的所述目标权限的标识不匹配,则所述服务器生成所述查询结果,且所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限。
本申请实施例第二方面提供了一种数据处理的装置,包括:收发单元,用于接收来自第一目标终端的第一请求,所述第一请求用于请求对目标资源进行查询或更改;处理单元用于:响应于满足第一条件,将所述第一请求存储至目标缓存队列,所述满足第一条件包括:所述服务器接收到所述第一请求时所述目标缓存队列中至少存储有第二请求,所述第二请求用于请求对所述目标资源进行更改,所述目标缓存队列用于存储对所述目标资源进行查询或更改的请求,且所述目标缓存队列为所述服务器所访问的内存中的内存空间;所述处理单元还用于:响应于满足第二条件,对所述第一请求进行处理,生成所述第一请求对应的处理结果,所述满足第二条件包括:所述第二请求执行完毕;所述收发单元还用于:将所述第一请求对应的处理结果发送给所述第一目标终端。
可选的,在一些实现方式中,所述第一请求包括所述目标资源的标识,所述处理单元还用于:在所述服务器将所述第一请求存储至目标缓存队列之前执行以下操作:根据所述目标资源的标识和所述内存中设置的至少一个缓存队列的标识,确定将所述第一请求存储至所述目标缓存队列,所述至少一个缓存队列包括所述目标缓存队列。
可选的,在另一些实现方式中,所述第一请求具体用于请求对所述目标资源进行更改,所述处理单元还用于:根据所述目标资源的标识,执行删除所述服务器所访问的缓存中存储的所述目标资源的操作;若所述服务器成功删除所述缓存中存储的所述目标资源,则根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的第一处理结果或第二处理结果;或者,若所述服务器删除所述缓存中存储的所述目标资源失败,则生成所述第一请求对应的第二处理结果;其中,所述第一处理结果表示成功执行所述第一请求,所述第二处理结果表示执行所述第一请求失败。
可选的,在另一些实现方式中,所述第一请求包括所述目标资源的标识,所述处理单元还用于:根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果;若所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限,则根据所述第一请求对所述数据库中记录的所述目标资源进行更改,并生成所述第一请求对应的第一处理结果;或者,若所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限,则生成所述第二处理结果。
可选的,在另一些实现方式中,所述第一请求包括所述目标资源的标识,所述第一请求具体用于请求对所述目标资源进行查询,所述处理单元还用于:根据所述目标资源的标识对所述服务器所访问的缓存执行查询操作,获得查询结果;若所述查询结果表示所述第一目标终端具有查询所述目标资源的标识所关联的资源的权限,则根据所述第一请求从所述缓存中读取所述目标资源的标识所关联的资源,并生成所述第一请求对应的第一处理结果;或者,若所述查询结果表示所述第一目标终端不具有查询所述目标资源的标识所关联的资源的权限,则根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的第一处理结果或第二处理结果,其中,所述第一处理结果表示成功执行所述第一请求,所述第二处理结果表示执行所述第一请求失败。
可选的,在另一些实现方式中,所述缓存中设置有标志位,所述收发单元还用于:接收第二目标终端发送的第三请求,所述第二目标终端与所述第一目标终端相同或不同,所述第三请求是在所述服务器接收所述第一请求之后接收到的一个请求,且所述第三请求用于请求对所述目标资源进行查询;所述处理单元还用于:响应于满足第三条件,根据所述第三请求包括的所述目标资源的标识从所述缓存中读取所述目标资源,并生成所述第三请求对应的第三处理结果,所述第三处理结果表示成功执行所述第三请求;其中,所述满足第三条件包括:所述标志位的取值用于指示所述缓存中存储有所述目标资源的标识对应的资源;所述收发单元还用于:向所述第二目标终端发送所述第三请求。
可选的,在另一些实现方式中,所述目标资源包括以下至少一种资源:目标终端的账号信息、目标角色、目标权限、所述目标终端的账号信息和所述目标角色的关联关系、或所述目标终端的账号信息和所述目标权限的关联关系。
可选的,在另一些实现方式中,所述目标资源包括所述第一目标终端的账号信息和所述目标权限的关联关系,所述数据库中存储至少一个用户权限模型,所述至少一个用户权限模型中记录终端和权限之间的关联关系,所述处理单元还用于:根据所述目标资源的标识对所述至少一个用户权限模型执行第一查询操作,获得第一查询结果,所述目标资源的标识包括所述第一目标终端的标识和所述目标权限的标识;若所述第一查询结果表示所述目标资源的标识所包括的所述目标权限的标识与所述至少一个用户权限模型中记录的分配给所述第一目标终端的权限的标识相匹配,则获得所述查询结果,且所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限;或者,若所述第一查询结果表示所述目标资源的标识所包括的所述目标权限的标识与所述至少一个用户权限模型中记录的分配给所述第一目标终端的权限的标识不匹配,则获得所述查询结果,且所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限。
可选的,在另一些实现方式中,所述目标资源包括所述第一目标终端的账号信息和所述目标权限的关联关系,所述数据库中存储基于角色的访问控制RBAC模型,所述RBAC模型包括至少一个用户角色关联表和至少一个角色权限关联表,所述至少一个用户角色关联表中记录终端和角色之间的关联关系,所述至少一个角色权限关联表中记录权限和所述角色之间的关联关系,所述处理单元还用于:根据所述目标资源的标识对所述至少一个用户角色关联表执行第二查询操作,获得第二查询结果,所述目标资源的标识包括所述第一目标终端的标识和所述目标权限的标识,所述第二查询结果包括所述至少一个用户角色关联表中记录的所述第一目标终端对应的角色的标识;根据所述第一目标终端对应的角色的标识对所述至少一个角色权限表执行第三查询操作,获得第三查询结果,所述第三查询结果包括所述至少一个角色权限关联表中记录的与所述第一目标终端对应的角色的标识所对应的权限的标识;其中,若所述第三查询结果所包括的权限的标识与所述目标资源的标识所包括的所述目标权限的标识相匹配,则生成所述查询结果,且所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限;或者,若所述第三查询结果所包括的权限的标识与所述目标资源的标识所包括的所述目标权限的标识不匹配,则生成所述查询结果,且所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限。
本申请实施例第三方面还提供一种数据处理的设备,包括:处理器;以及存储器,用于存储数据处理程序,该数据处理的设备通电并通过所述处理器运行该程序后,执行如上所述的数据处理的方法。
本申请实施例第四方面还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述任意一种技术方案所述的数据处理的方法。
本申请实施例第五方面还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现上述任意一种技术方案所述的数据处理的方法。
应当理解,本部分所描述的内容并非旨在标识本申请公开的实施例的关键或重要特征,也不用于限制本申请公开的范围。本申请公开的其它特征将通过以下的说明书而变得容易理解。
本申请实施例所提供的数据处理的方法的技术方案,包括:该服务器接收来自第一目标终端的第一请求,第一请求请求对目标资源进行查询或更改;响应于满足第一条件,服务器将第一请求存储至目标缓存队列,满足第一条件包括:服务器接收到第一请求时目标缓存队列中至少存储有第二请求,第二请求请求对目标资源进行更改,目标缓存队列存储对目标资源进行查询或更改的请求,目标缓存队列为服务器所访问的内存中的内存空间;响应于满足第二条件,服务器对第一请求进行处理,生成第一请求对应的处理结果,满足第二条件包括:第二请求执行完毕;服务器将第一请求对应的处理结果发送给第一目标终端。上述实现方式中,在服务器正在执行目标缓存队列中存储的第二请求的过程中,服务器将新接收到的第一请求先存储至目标缓存队列中,其中,第二请求是对目标资源进行更改的请求,第一请求是对所述目标资源进行更改或查询的请求。直到服务器对目标缓存队列中存储的第二请求执行完毕的情况下,服务器开始对目标缓存队列中存储的第一请求进行处理。其中,服务器处理第二请求和第一请求的处理顺序是严格按照每个请求存储至缓存队列的顺序进行的,即服务器执行完第二请求后(即,已经根据第二请求对缓存或数据库中的数据进行了更新)才开始执行第一请求,该方法可以避免服务器还未根据第二请求的执行结果对原始数据库中存储的目标资源进行更改,服务器又根据原始数据库对后续接收到的第一请求进行处理,上述实现方式不会存在数据一致性的问题(即,缓存中存储的目标资源与数据库中存储的目标资源不一致),该方法可以增强数据一致性和提高数据处理的结果的准确性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一种RBAC模型的结构示意图。
图2是本申请实施例提供的数据处理的方法适用的一种应用场景的示意图。
图3是本申请实施例提供的一种数据处理的方法的示意图。
图4是本申请实施例提供的另一种数据处理的方法的示意图。
图5是本申请实施例提供的又一种数据处理的方法的示意图。
图6是适用于本申请实施例提供的一种数据处理的方法的数据库设计E-R图。
图7是本申请实施例提供的一种数据处理的装置的结构示意图。
图8是本申请实施例提供的一种数据处理的设备的结构示意图。
具体实施方式
为了使本领域的技术人员能够更好的理解本申请的技术方案,下面结合本申请实施例中的附图,对本申请进行清楚、完整地描述。但本申请能够以很多不同于上述描述的其他方式进行实施,因此,基于本申请提供的实施例,本领域普通技术人员在不经过创造性劳动的情况下,所获得的所有其他实施例,都应属于本申请保护的范围。
需要说明的是,本申请的权利要求书、说明书及附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,并不用于描述特定的顺序或先后次序。这样使用的数据在适当情况下是可以互换的,以便于本文所描述的本申请的实施例,能够以除了在本文图示或描述的内容以外的顺序实施。此外,术语“包括”、“具有”以及他们的变形形式,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本申请实施例之前,首先对本申请实施例中涉及的专业名词进行介绍。
1,脏数据(dirty read)
脏数据是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑。
通俗的讲,当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
2,缓存(cache)
缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。可以理解的是,缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速率就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的。
缓存的工作原理是当中央处理器(central processing unit,CPU)要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。总的来说,CPU读取数据的顺序是先缓存后内存。
3,数据库(database)
数据库,是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。目前常用的数据库类型包括关系型数据库(例如,MySQL数据库或MariaDB数据库)和非关系型数据库(例如,MongoDB数据库)。
4,用户
用户,是一个在业务逻辑中存在的实体或者虚实体(不可见,但存在)。用户带有某种目的和权利。
5,角色
角色,可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。
6,权限
权限,是规定了一系列的访问规则。权限的本质是规则。也就是说,权限是规定哪些用户可以做哪些事情,哪些用户不可以做哪些事情的规则。示例性的,在一些实际应用中,权限类型又可以分为:功能权限、数据权限和现场权限等。功能权限,例如增加产品等,能做什么的问题。数据权限,例如查看本人所有订单等,可以看到哪些数据的问题。现场权限,例如看不到供应商帐户、角色、部门等信息等,会出现什么样的信息的问题。
7,基于角色的访问控制(role-based access control,RBAC)
基于RBAC权限访问控制,就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系。这种访问控制的方式,通过将角色和权限分离开来提高设计的可扩展性。示例性的,图1示出了一种RBAC模型的结构示意图。参见图1,用户与角色之间,角色与权限之间,均是多对多的关系。
8,数据一致性
数据一致性,就是当多个用户试图同时访问一个数据库,它们的事务同时使用相同的数据,可能会发生以下四种情况:丢失更新、未确定的相关性、不一致的分析和幻想读。
产生数据一致性问题的根本原因是对一个数据的多个操作过程,缓存和数据库数据的一致性也是这个原理。下面,基于这种系统操作流程,举例介绍数据一致性问题。假设有两个任务,分别为Task A和Task B,其中Task A的优先级高于Task B。Task A每次访问均使X加2,Task B每次访问均使X加1,假定X=5。这两个任务中都要执行读(step1)、修改(step2)、写(step3)三步操作,则可能会发现以下情况:
步骤1,Task B执行读取(step1)X=5,并临时存储(堆栈或MCU寄存器中);
步骤2,Task A优先级高于Task B,Task B被打断;
步骤3,Task A执行读,修改,写操作,将X=7写回内存中;
步骤4,Task A结束,继续执行Task B;
步骤5,Task B将之前临时存储的X(操作2)取出,并加1,将X=6写回内存。
显然,开发人员期待的结果是X=8,但是最终的确实X=6,Task A的运算失效。
下面,结合附图对适用于本申请实施例的数据处理的方法的应用场景、网络架构、数据处理的方法进行详细说明。可以理解的是,本申请提供的各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
首先,结合附图介绍适用于本申请实施例的数据处理的方法的应用场景。
图2是本申请实施例提供的数据处理的方法适用的一种应用场景的示意图。示例性的,如图2所示,该应用场景包括服务器104、多个终端(即,终端101和终端102)、网络103和多个用户。服务器104与任意一个终端之间可以通过网络103进行通信,以实现数据的传输。其中,网络103可以是有线网络或无线网络,本申请对此不作具体限定。
终端(例如,终端101或终端102)向用户提供读写接口,用户可以通过该终端发起请求(例如,写请求或读请求),终端将该请求通过网络103发送给服务器104,以执行请求。终端上可以安装和运行有各种通讯客户端应用,例如人力资源管理、客户关系管理系统、即时通信系统或者数据库系统等。终端可以是具有显示屏且支持网页浏览的各类电子设备,例如可以但不限于是个人电脑、智能手机、平板电脑、台式计算机、行车记录仪或者可穿戴设备(如智能手表或蓝牙耳机)等。上述仅是举例,而非穷举,终端包含但不限于上述电子设备,所述电子设备还可以包括服务器,例如,云服务器。
服务器104可以是提供各种服务的服务器。例如,终端向服务器104发送写请求,写请求用于请求对服务器104所访问的数据库1中的数据1进行更改。相应的,服务器104接收到终端发送的写请求1后,在确定该终端通过权限认证的情况下,服务器104对数据库1中的数据1执行写请求1。又如,例如,终端向服务器104发送读请求,读请求用于请求读取服务器104所访问的数据库1中的数据1。相应的,服务器104接收到终端发送的读请求1后,在确定该终端通过权限认证的情况下,服务器104将从数据库1中获取的数据1发送给该终端。上述示例中的数据库1可以是服务器104本地存储的数据库,即数据库1是服务器104自己维护的数据库,例如该数据库1可以存储在服务器的存储器中。可选的,上述数据库1也可以是与服务器104通信的其他服务器中存储的数据库。基于此,服务器104还可以通过与所述其他服务器交互以获取数据库1。
需要说明的是,本申请实施例提供的数据处理的方法可以由服务器104执行,相应地,数据处理的装置可以设置于服务器104中。服务器104可以是硬件,也可以是软件。当服务器104为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器104为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。本申请实施例对此不作具体限定。
可选的,上述无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也能够是任何网络,包括但不限于局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide area network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(hyper text mark-up language,HTML)、可扩展标记语言(extensible markuplanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(secure socket layer,SSL)、传输层安全(transport layer security,TLS)、虚拟专用网络(virtual private network,VPN)、网际协议安全(internet protocolsecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
应理解,上述图2示出的应用场景仅为示意,并不对本申请实施例提供的数据处理的方法适用的应用场景构成任何限定。也就是说,图2示出的终端、网络和服务器的数目仅是示意性的。根据实际需求,可以在上述应用场景中设置与需求相匹配的数目的终端、网络和服务器。
上述图2示出的场景中,终端通过向服务器发送读写请求,可以实现对该终端所关联的信息(例如,终端的账号或终端的权限)进行操作(例如,查询或更改)。随着互联网用户数量的飞速增长,上述场景中,服务器通常会接收到终端发送的大量的读写请求,在这种高并发场景下,数据库系统的查询压力很大,导致系统响应速度变慢。如何提高服务器的响应速度和如何准确地执行大量的读写请求,是亟需解决的问题。
为解决上述问题,传统技术中,对数据库数据进行缓存,缓存系统中的缓存数据存储在计算机的内存中,与传统数据库数据需要从磁盘读取相比,访问效率要高很多。这种技术中,用户请求的数据优先从缓存中获取,从而减少访问数据库的次数。然而对数据库数据更新到缓存的过程中,可能存在因为并发请求等原因引起的缓存数据与数据库数据不一致的情况(例如,缓存中存储的终端A拥有的权限和数据库中存储的终端A拥有的权限不一致),导致用户从缓存中查询到的是脏数据,从而使得数据处理的结果不准确。
传统技术中,数据库和缓存中通过存储RBAC模型,以记录用户拥有的权限。这样,服务器可以根据从数据库或缓存中查询到的RBAC模型对用户请求进行处理。RBAC模型中用户通过角色与权限绑定,当对一个用户通过一个角色为该一个用户单独授权时,会导致模型中存在仅被一个用户绑定的角色。也就是说,授权给用户的访问权限通常由用户担当的角色来确定。RBAC中许可被授权给角色,角色被授权给用户,权限的授权由管理员统一管理,RBAC根据用户在组织内所处的角色作出访问授权与控制,相较于自主式访问控制和强制式访问控制,能够保证安全性且便于管理。在一些场景中,当用户请求用于请求查询该用户拥有的所有权限时,例如,该用户拥有1000个权限。这时,基于RBAC模型对用户请求进行处理时,需要先根据用户确定用户关联的多个角色,然后根据用户关联的多个角色确定用户关联的多个权限,实现过程较为复杂。在另一些场景中,当某一用户需要临时获取其不具备的权限时,比如在面对一些紧急情况时,如果通过修改角色的权限来对该用户进行授权,那么会导致担当该角色的所有用户都会获得授权。如果通过新增一个角色,将该新增的一个角色与临时权限关联,并将该新增的一个角色赋予用户以使用户具有该临时权限,那么会导致RBAC模型中存在大量角色,使得模型变得复杂。
因此,本申请实施例提供了一种数据处理的方法和装置,以解决上述存在的问题。接下来,结合图3至图6详细介绍本申请实施例提供的数据处理的方法。
图3是本申请实施例提供的一种数据处理的方法的示意图。本申请实施例提供的数据处理的方法可以应用于上述图2示出的应用场景。示例性的,图3所描述的服务器可以是上述图2示出的服务器104,所描述的目标终端(即,第一目标终端或第二目标终端)可以为上述图2示出的终端102或终端101。如图3所示,本申请实施例提供的数据处理的方法包括S310至S340。下面,对S310至S340进行详细介绍。
S310,服务器接收来自第一目标终端的第一请求,第一请求用于请求对目标资源进行查询或更改。
第一请求用于请求对目标资源进行查询或更改。具体的,当第一请求用于请求对目标资源进行查询时,第一请求可以理解为是一个读请求;当第一请求用于请求对目标资源进行更改时,第一请求可以理解为是一个写请求。对第一请求所请求对目标资源进行更改的具体方式不作限定,例如,该更改方式可以但不限于是以下至少一种更改方式:修改、删除或新增。例如,当更改方式为修改方式时,第一请求具有用于请求对目标资源进行修改。可选的,第一请求还可以包括目标资源的标识,目标资源的标识用于唯一标识该目标资源。
对目标资源包括的资源类型和数目不作具体限定,可以根据应用领域或实际需求确定目标资源包括的资源类型和数目。在一些实现方式中,目标资源包括以下至少一种资源:目标终端的账号信息、目标角色、目标权限、目标终端的账号信息和目标角色的关联关系、或目标终端的账号信息和目标权限的关联关系。对目标终端的账号信息包括的内容不作具体限定。在一些实现方式中,目标终端的账号信息包括但不限于:目标终端的账号(例如,邮箱账号)名称、目标终端的账号密码、或者目标终端的类型。目标角色,可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是目标角色。对目标角色进行更改包括对以下至少一项进行更改:对目标角色的名称、对目标角色的标识、或者对目标角色的标识和目标角色之间的对应关系进行更改。目标权限,是规定了一系列的访问规则。目标权限的本质是规则。也就是说,权限是规定哪些用户可以做哪些事情,哪些用户不可以做哪些事情的规则。对目标权限进行更改包括对以下至少一项进行更改:对目标权限的名称、对目标权限的标识、或者对目标权限的标识和目标权限之间的对应关系进行更改。目标终端的账号信息和目标角色的关联关系,可以是指目标终端的账号信息和一个或多个目标角色之间的关联关系,该多个目标角色中任意两个目标角色具有的权限的集合不同。目标终端的账号信息和目标权限的关联关系,可以是指目标终端的账号信息和一个或多个目标权限之间的关联关系,该多个目标权限中任意两个目标权限不同。
对目标资源与第一目标终端的关系不作具体限定。在一些实现方式中,目标资源与第一目标终端关联,即目标资源可以包括与第一目标终端的信息关联的资源。例如,当目标资源包括目标终端的账号信息,且目标终端为第一目标终端时,目标资源与第一目标终端关联。在另一些实现方式中,目标资源与第一目标终端不关联,即目标资源不包括与第一目标终端的信息关联的资源。例如,当目标资源包括目标终端的账号信息,且目标终端为除第一目标终端之外的其他目标终端时,目标资源与第一目标终端不关联。又如,当目标资源包括目标角色,且第一目标终端不具有该目标角色时,目标资源与第一目标终端不关联。
在本申请实施例中,对第一目标终端发送第一请求的实现方式不作具体限定。例如,可以是第一目标终端主动向服务器发送的第一请求。又如,还可以第一目标终端接收服务器发送的指令后,第一目标终端根据该指令向服务器发送第一请求。
可选的,在执行上述S310之前,服务器和第一目标终端还可以执行建立通信连接的步骤。对服务器和第一目标终端建立通信连接的步骤不作具体限定,例如可以基于现有的建立通信连接的方式建立服务器和第一目标终端的通信连接。
S320,响应于满足第一条件,服务器将第一请求存储至目标缓存队列,满足第一条件包括:服务器接收到第一请求时目标缓存队列中至少存储有第二请求,第二请求用于请求对目标资源进行更改,目标缓存队列用于存储对目标资源进行查询和/或更改的请求,且目标缓存队列为服务器所访问的内存中的内存空间。
满足第一条件包括:服务器接收到第一请求时目标缓存队列中至少存储有第二请求,第二请求用于请求对目标资源进行更改。服务器接收到第一请求时目标缓存队列中至少存储有第二请求,可以理解为,服务器接收到第一请求时服务器还未执行该第二请求,或者服务器接收到第一请求时服务器正在执行该第二请求且并未执行完该第二请求。可以理解的是,若缓存队列中存储的一个请求未被执行完毕,则该缓存队列中会一直存储该一个请求,直到该一个请求被执行完毕后,该缓存队列中存储的该一个请求会被删除。
第二请求用于请求对目标资源进行更改,即第二请求可以理解为是一个写请求。对第二请求所请求对目标资源进行更改的具体方式不作限定,例如,该更改方式可以但不限于是以下至少一种更改方式:修改、删除或新增。第二请求所请求的更改方式可以与第一请求所请求的更改方式相同或不同,对此不作具体限定。可选的,第二请求可以包括目标资源的标识,目标资源的标识用于唯一标识该目标资源。其中,第二请求包括的目标资源的标识与第一请求包括的目标资源的标识相同。在一些实现方式中,第二请求用于请求对目标资源进行更改,第一请求用于请求对目标资源进行更改。这种实现方式中,第二请求和第一请求均为对目标资源执行写操作的请求。在另一些实现方式中,第二请求用于请求对目标资源进行更改,第一请求用于请求对目标资源进行查询。这种实现方式中,第二请求为对目标资源执行写操作的请求,第一请求为对目标资源执行读操作的请求。
目标缓存队列用于存储对目标资源进行查询和/或更改的请求,即目标缓存队列可以用于存储对所述目标资源进行操作的读请求和/或写请求。也就是说,目标缓存队列中存储的请求具体是根据目标资源确定的。下面,举例描述目标资源和目标缓存队列存储的请求。例如,当目标资源包括目标终端的账号信息时,目标缓存队列用于存储对目标终端的账号信息进行查询和/或更改的请求。例如,当目标资源包括目标角色时,目标缓存队列用于存储对目标角色进行查询和/或更改的请求。在RBAC模型中,一个目标角色可以赋予一个或多个不同的终端,这种场景中,目标缓存队列用于存储对目标角色进行操作的读请求和/或写请求,可以理解为,目标缓存队列用于存储对分配给一个终端的目标角色进行操作的读请求和/或写请求,或者目标缓存队列用于存储对分配给多个不同终端的目标角色进行操作的读请求和/或写请求。例如,目标缓存队列存储写请求1和读请求1,写请求1用于请求对终端A的角色1进行更改操作,读请求1用于请求查询终端A的角色1,或者读请求1用于请求查询终端B的角色1,且任意一个请求对应的角色1为目标角色。例如,当目标资源包括目标权限时,目标缓存队列用于存储对目标权限进行查询和/或更改的请求。在RBAC模型中,一个权限可以赋予一个或多个角色,一个角色可以赋予一个或多个不同的终端。在用户权限模型中,一个权限可以赋予一个或多个不同的终端,这种实现方式中,目标缓存队列用于存储对目标权限进行操作的读请求和/或写请求,可以理解为,目标缓存队列用于存储对分配给一个终端的目标权限进行操作的读请求和/或写请求,或者目标缓存队列用于存储对分配给多个不同终端的目标权限进行操作的读请求和/或写请求。
可选的,上述服务器的内存中还可以设置多个缓存队列,多个缓存队列与多个目标资源一一对应,多个目标资源中的任意一个目标资源包括以下至少一种资源:目标终端的账号信息、目标角色、目标权限、目标终端的账号信息和目标角色的关联关系、或目标终端的账号信息和目标权限的关联关系,且多个目标资源中的任意两个目标资源包括的资源不完全相同。其中,多个缓存队列中的每个缓存队列用于存储对所述每个缓存队列对应的目标资源进行操作的读请求和/或写请求。例如,服务器的内存中设置有3个缓存队列,缓存队列A用于存储对终端A的账号信息进行操作的读请求和/或写请求;缓存队列B用于存储对终端B的账号信息进行操作的读请求和/或写请求;缓存队列C用于存储对角色1进行操作的读请求和/或写请求;其中,终端A和终端B为两个不同的终端。
可选的,服务器的内存中设置的一个或多个缓存队列可以是服务器启动时初始化设置在服务器的内存中的一个或多个队列。可选的,服务器还可以给每个缓存队列分配有效期,即每个缓存队列在分配的有效期内用于存储对所述每个缓存队列对应的目标资源进行操作的读请求和/或写请求。服务器中的每个缓存队列是按照先进先出的规则进行访问的内存单元的集合。在写入阶段,先写入的内存单元将在读取阶段先被读取。例如,内存单元1、2、3的写入顺序为3、2、1,则在读取阶段,先读取内存单元3,再读取内存单元2,最后读取内存单元1。上述内存单元也可以命名为内存存储单元或内存存储空间等,只要表示主机的物理内存即可,不限于本申请实施例所限定的内存单元的命名。对缓存队列的深度不作具体限定。例如,缓存队列的深度可以但不限于为3G或5G等。
可选的,在执行上述S320之前,第一请求包括目标资源的标识,在服务器将第一请求存储至目标缓存队列之前,还可以执行以下步骤:服务器根据目标资源的标识和内存中设置的至少一个缓存队列的标识,确定将第一请求存储至目标缓存队列,至少一个缓存队列包括目标缓存队列。在本申请实施例中,对服务器根据目标资源的标识和内存中设置的至少一个缓存队列的标识确定将第一请求存储至目标缓存队列的实现方式不作具体限定。在一些可能的实现方式中,服务器根据目标资源的标识和内存中设置的至少一个缓存队列的标识,确定将第一请求存储至目标缓存队列,包括:服务器对目标资源的标识进行哈希处理,获得哈希处理结果;服务器对哈希处理结果进行取模处理,获得取模处理结果,取模处理与内存中设置的缓存队列的数目关联;若取模处理结果与至少一个缓存队列的标识相同,服务器确定将第一请求存储至少一个缓存队列,至少一个缓存队列为目标缓存队列。其中,取模处理与内存中设置的缓存队列的数目关联,可以理解为,当服务器的内存中设置有L个缓存队列时,取模处理具体为模L处理,L为正整数。例如,服务器中设置有10个缓存队列,且缓存队列k的标识为k,k=1,2,…,10,所述10个缓存队列包括目标缓存队列。基于此,服务器A中的生产者线程采用哈希算法对第一请求所请求的目标资源的标识进行哈希计算,获得处理结果1;生产者对处理结果1执行模10处理,获得处理结果2;生产者根据所述10个缓存队列中每个缓存队列的标识和处理结果2,确定处理节点2与目标队列的标识相匹配;生产者线程将所述第一请求写入目标缓存队列中。可选的,上述哈希算法还可以替换为其他算法,该其他算法可以实现上述哈希算法的功能即可。
S330,响应于满足第二条件,服务器对第一请求进行处理,生成第一请求对应的处理结果,满足第二条件包括:第二请求执行完毕。
满足第二条件包括:第二请求执行完毕,第二请求为在第一请求存储至目标缓存队列之前存储的写请求。在一些实现方式中,服务器执行第二写请求执行完毕,可以理解为,服务器成功执行第二写请求。可以理解的是,服务器成功执行第二写请求后,若服务器将执行第二写请求的执行结果存储至缓存中,则缓存中会存储目标资源;若服务器将执行第二写请求的执行结果存储至缓存中,则缓存中不会存储目标资源。在另一些实现方式中,服务器执行第二写请求执行完毕,可以理解为,服务器执行第二写请求失败,则缓存中不会存储根据第二写请求对目标资源进行更改操作后的执行结果。
在本申请实施例中,第一请求用于请求对目标资源进行更改或查询。根据第一请求的不同,本申请实施例提供了两种对第一请求进行处理的方式,分别记为方式一和方式二。下面,详细介绍方式一和方式二所描述的处理流程。
方式一:
这种实现方式中,第一请求具体用于请求对目标资源进行更改,即第一请求为对目标资源进行写操作的请求。
这种实现方式中,服务器对第一请求进行处理,生成第一请求对应的处理结果,包括:服务器根据目标资源的标识,执行删除服务器所访问的缓存中存储的目标资源的操作;若服务器成功删除缓存中存储的目标资源,则服务器根据第一请求对服务器所访问的数据库进行操作,并生成第一请求对应的第一处理结果或第二处理结果;或者,若服务器删除缓存中存储的目标资源失败,则服务器生成第一请求对应的第二处理结果;其中,第一处理结果表示成功执行第一请求,第二处理结果表示执行第一请求失败。
其中,缓存为服务器能够访问的缓存,且服务器访问缓存的速度快于服务器所能访问的数据库的速度。例如,缓存可以是服务器的本地缓存。又如,缓存还可以是服务器的远端缓存。对缓存的类型不作具体限定。例如,缓存可以为以下任意一种缓存:一级缓存(level 1 cache,L1 cache)、二级缓存(level 2 cache,L2 cache)或三级缓存(level 3cache,L3 cache)。可选的,本申请实施例中可以为缓存中存储的数据设置有效时长,缓存中存储的数据的预设有效时长可以由缓存配置也可以由服务器的业务层配置,缓存中缓存的数据的预设有效时长可以相同或不同,具体的,可以根据实际需要对预设有效时长进行设定,例如,预设有效时长可以设定为30秒,也可以设定为60秒等。
其中,对服务器删除缓存中的目标资源的实现方式不作具体限定。示例性的,响应于满足第二条件,服务器根据目标资源的标识,执行删除服务器所访问的缓存中存储的目标资源的操作,包括:服务器中的目标缓存第六对应的工作线程向缓存发送缓存删除指令,缓存删除指令携带目标资源的标识;缓存根据缓存删除指令执行删除缓存中的目标资源的操作。
可选的,在一些实现方式中,第一请求包括目标资源的标识,服务器根据第一请求对服务器所访问的数据库进行操作,并生成第一请求对应的处理结果,包括:服务器根据目标资源的标识对数据库执行查询操作,获得查询结果;若查询结果表示第一目标终端具有对目标资源进行更改的权限,则服务器根据第一请求对数据库中记录的目标资源进行更改,并生成第一请求对应的第一处理结果;或者,若查询结果表示第一目标终端不具有对目标资源进行更改的权限,则服务器生成第二处理结果。
上述方式一中,服务器接收到的第一请求和第二请求均为对目标资源进行查询的读请求。服务器在执行目标缓存队列中的第二请求(即,对目标资源进行更的写请求)的过程中,先将新接收到的第一请求存储至目标缓存队列中,直到服务器执行完毕第二请求后再对目标缓存队列中存储的第一请求进行处理,服务器按照接收请求的顺序依次将请求存储至目标缓存队列,并按照接收的顺序依次执行目标缓存队列中存储的请求。具体的,服务器成功删除缓存中存储的第一请求所请求的目标资源的情况下,不论服务器根据第一请求对数据库执行更改操作是否成功,均不会存在缓存和数据库出现数据一致性问题;服务器删除缓存中存储的第一请求所请求的目标资源失败的情况下,服务器会直接向终端返回执行第一请求失败的操作,此时也不会存在缓存和数据库出现数据一致性问题。
方式二:
这种实现方式中,第一请求包括目标资源的标识,第一请求具体用于请求对目标资源进行查询,即第一请求为对目标资源进行写操作的请求。
这种实现方式中,服务器对第一请求进行处理,生成第一请求对应的处理结果,包括:服务器根据目标资源的标识对服务器所访问的缓存执行查询操作,获得查询结果;若查询结果表示第一目标终端具有查询目标资源的标识所关联的资源的权限,则服务器根据第一请求从缓存中读取目标资源的标识所关联的资源,并生成第一请求对应的第一处理结果;或者,若查询结果表示第一目标终端不具有查询目标资源的标识所关联的资源的权限,则服务器根据第一请求对服务器所访问的数据库进行操作,并生成第一请求对应的第一处理结果或第二处理结果;其中,第一处理结果表示成功执行所述第一请求,第二处理结果表示执行第一请求失败。具体的,在数据库中存储有目标资源的情况下,服务器根据第一请求对服务器所访问的数据库进行操作,并生成第一请求对应的第一处理结果;在数据库中未存储目标资源的情况下,服务器根据第一请求对服务器所访问的数据库进行操作,并生成第一请求对应的第二处理结果。上述方式二中服务器对数据库进行查询的实现方式,与上述方式一中服务器对数据库进行查询的实现方式相同,此处未详细赘述的内容可以参见上述方式一中的相关描述。
上述方式二中,第一请求为读请求,服务器先根据第一请求所请求的目标资源从缓存中进行查询,若缓存中未查询到第一请求所请求查询的目标资源,服务器再根据第一请求所请求的目标资源从数据库中进行查询。当服务器根据第一请求从缓存中成功查询到第一请求所请求的目标资源时,该方法还可以提高服务器处理第一请求的效率。
可选的,在一些实现方式中,缓存中设置有标志位,在执行上述方式二之后,还可以执行以下步骤:服务器接收第二目标终端发送的第三请求,第二目标终端与第一目标终端相同或不同,第三请求是在服务器接收第一请求之后接收到的一个请求,且第三请求用于请求对目标资源进行查询;响应于满足第三条件,服务器根据第三请求包括的目标资源的标识从缓存中读取目标资源,并生成第三请求对应的第三处理结果,第三处理结果表示成功执行第三请求;其中,满足第三条件包括:标志位的取值用于指示缓存中存储有目标资源的标识对应的资源;服务器向第二目标终端发送第三请求。
其中,对标志位的取值不作具体限定。例如,标志位的取值等于“1”用于执行缓存中存储有目标资源的标识对应的资源,标志位的取值等于“0”用于执行缓存中未存储有目标资源的标识对应的资源。
其中,第二目标终端与第一目标终端相同或不同。在一些实现方式中,当目标资源包括目标终端的账号信息、目标终端的账号信息和目标角色的关联关系、或目标终端的账号信息和目标权限的关联关系中的任意一种资源时,第二目标终端与第一目标终端与第二目标终端相同,目标终端为第一目标终端或第二目标终端。在另一些实现方式中,当目标资源包括目标角色、目标权限、或目标角色和目标权限之间的关联关系中的任意一种资源时,第一目标终端与第二目标终端相同或不同。
在执行上述方式二之后执行上述服务器和第二目标终端交互的步骤,服务器接收到的第一请求和第三请求均为对目标资源进行查询的读请求,第二请求为对目标资源进行更改的写请求。服务器在执行目标缓存队列中的第二请求(即,对目标资源进行更的写请求)的过程中,先将新接收到的第一请求存储至目标缓存队列中,直到服务器执行完毕第二请求后再对目标缓存队列中存储的第一请求进行处理,服务器按照接收请求的顺序依次将请求存储至目标缓存队列,并按照接收的顺序依次执行目标缓存队列中存储的请求。在服务器执行第一请求或第一请求的过程中,若又接收到了新的第三请求(即,对目标资源进行查询的读请求),服务器没有先将第三请求存储至目标缓存队列,而是通过检测缓存中的标志位以确定缓存中是否存储有目标资源,在服务器确定缓存中存储目标资源的情况下,根据第三请求直接从目标缓存队列中读取第三请求所请求的目标资源,
在本申请实施例中,根据上述方式一和方式二中目标资源包括的具体资源的不同,服务器根据目标资源的标识对数据库执行查询操作获得查询结果的实现流程不完全相同,但实现的基本原理是类似的。下面,以目标资源包括第一目标终端的账号信息和目标权限的关联关系,以及目标资源存储在数据库中的RBAC模型或用户权限模型为例,描述“服务器根据目标资源的标识对数据库执行查询操作,获得查询结果”的两种具体实现方式。
具体实现方式一:
在这种实现方式中,服务器所访问的数据库中存储有至少一个用户权限模型。其中,至少一个用户权限模型中记录终端和权限之间的关联关系,终端和权限之间的关联关系可以通过终端的标识和权限的标识之间的关联关系进行表示。所述数据库中还可以存储有:用户表和权限表。其中,用户表,用于保存目标终端的基本信息,目标终端的基本信息可以包括但不限于:目标终端的id标识和目标终端的账号等。权限表,用于保存定义权限的基本信息,该权限的基本信息可以包括但不限于:权限id标识与权限之间的对应关系。
这种实现方式中,服务器根据目标资源的标识对数据库执行查询操作,获得查询结果,包括:服务器根据目标资源的标识对至少一个用户权限模型执行第一查询操作,获得第一查询结果,目标资源的标识包括第一目标终端的标识和目标权限的标识;若第一查询结果表示目标资源的标识所包括的目标权限的标识与至少一个用户权限模型中记录的分配给第一目标终端的权限的标识相匹配,则服务器获得查询结果,且查询结果表示第一目标终端具有对目标资源进行更改的权限;或者,若第一查询结果表示目标资源的标识所包括的目标权限的标识与至少一个用户权限模型中记录的分配给第一目标终端的权限的标识不匹配,则服务器获得查询结果,且查询结果表示第一目标终端不具有对目标资源进行更改的权限。
在上述具体实现方式一中,一个终端拥有的所有权限可以存储在一个或多个不同的用户权限模型中,每个用户权限模型可以理解为是用于记录终端和权限之间的关联关系的数据表。在一些实现方式中,终端和权限之间的关联关系可以通过终端的标识和权限的标识之间的关联关系进行表示。示例性的,表1示出了本申请实施例提供的一种用户权限模型,表1中的任意两个标识都不相同。其中,终端A与4个权限存在对应关系;终端B与3个权限存在对应关系。
表1
Figure BDA0003815881900000261
当一个终端拥有的多个权限时,基于上述实现方式一提供的技术方案可以提高服务器执行第一查询操作的处理效率,进一步可以提高服务器执行第一请求的处理效率。
具体实现方式二:
在这种实现方式中,服务器所访问的数据库中存储有基于角色的访问控制RBAC模型。其中,RBAC模型包括至少一个用户角色关联表和至少一个角色权限关联表。其中,至少一个用户角色关联表中记录终端和角色之间的关联关系,可选的,终端和角色之间的关联关系可以通过终端的标识和角色的标识之间的关联关系进行表示;至少一个角色权限关联表中记录权限和角色之间的关联关系,可选的,角色和权限之间的关联关系可以通过角色的标识和权限的标识之间的关联关系进行表示。也就是说,所述RBAC模型记录有所述目标资源(该目标资源包括第一目标终端的账号信息和目标权限的关联关系)。所述数据库中还可以存储有:用户表、角色表和权限表。其中,用户表,用于保存目标终端的基本信息,目标终端的基本信息可以包括但不限于:目标终端的id标识。角色表,用于保存定义的角色的信息,该角色的基本信息可以包括但不限于:角色id标识与角色之间的对应关系。权限表,用于保存定义权限的基本信息,该权限的基本信息可以包括但不限于:权限id标识与权限之间的对应关系。
这种实现方式中,服务器根据目标资源的标识对数据库执行查询操作,获得查询结果,包括:服务器根据目标资源的标识对至少一个用户角色关联表执行第二查询操作,获得第二查询结果,目标资源的标识包括第一目标终端的标识和目标权限的标识,第二查询结果包括至少一个用户角色关联表中记录的第一目标终端对应的角色的标识;服务器根据第一目标终端对应的角色的标识对至少一个角色权限表执行第三查询操作,获得第三查询结果,第三查询结果包括至少一个角色权限关联表中记录的与第一目标终端对应的角色的标识所对应的权限的标识;其中,若第三查询结果所包括的权限的标识与目标资源的标识所包括的目标权限的标识相匹配,则服务器生成查询结果,且查询结果表示第一目标终端具有对目标资源进行更改的权限;或者,若第三查询结果所包括的权限的标识与目标资源的标识所包括的目标权限的标识不匹配,则服务器生成查询结果,且查询结果表示第一目标终端不具有对目标资源进行更改的权限。
其中,用户角色关联表中记录终端和角色之间的关联关系。在一些实现方式中,终端和终端角色之间的关联关系,可以通过终端的标识和角色的标识之间的关联关系进行表示。
示例性的,下文中的表2示出了本申请实施例提供的一种用户角色关联表,表2中的终端的标识与终端B的标识不同。其中,终端与2个角色存在关联关系,终端B与3个角色存在关联关系,其中角色1、角色2和角色3中的任意两个角色不同。可以理解的是,下文中的表2中示出的终端具有的角色可以为终端具有的全部角色中的部分或全部角色。当表2示出的终端具有的角色为终端具有的全部角色中的部分角色时,终端具有的其他角色可以存储在除表2之外的用户角色关联表中。也就是说,一个终端和角色的对应关系可以存储在一个或多个用户角色关联表中,本申请实施例对此不作具体限定。
表2
Figure BDA0003815881900000281
其中,角色权限关联表中记录权限和角色之间的对应关系。在一些实现方式中,角色和权限之间的对应关系,可以通过角色的标识和权限的标识之间的对应关系进行表示。示例性的,表3示出了本申请实施例提供的一种角色权限,表3中的任意两个标识都不相同。其中,角色1与2个权限存在对应关系;角色2与1个权限存在对应关系;角色3与1个权限存在对应关系。可以理解的是,表3示出的角色具有的权限可以为该角色具有的全部权限中的部分或全部权限。当表3示出的角色具有的权限为该角色具有的全部权限中的部分权限时,该角色具有的其他权限可以存储在除表3之外的角色权限关联表中。也就是说,一个角色和多个权限的对应关系可以存储在一个或多个角色权限关联表中,本申请实施例对此不作具体限定。
表3
Figure BDA0003815881900000282
可以理解的是,上述任意一个角色的标识用于唯一标识该任意一个角色。上述任意一个权限的标识用于唯一标识该任意一个权限。
可选的,在一些实现方式中,上述具体实现方式一中数据库中存储的至少一个用户权限模型所指示的第一目标终端拥有的所有权限的数目,大于上述具体实现方式二中数据库中存储的RBAC模型所指示的第一目标终终端拥有的所有权限的数目。也就是说,RBAC模型所指示的一个终端拥有的权限集合,为用户权限模型所指示的该一个终端拥有的权限集合的子集。这种实现方式中,用户权限模型中的部分权限为对RBAC模型所指示的权限的补充。示例性的,上文中的表2和表3示出了利用RBAC模型通过角色指示终端A具有3个权限,下文中的表4示出了利用用户权限模型#1直接指示终端A具有4个权限,这种实现方式中,上述RBAC模型所指示的终端A的权限的数目和用户权限模型#1所指示的终端A的权限的数目不相同。
表4
Figure BDA0003815881900000291
S340,服务器将第一请求对应的处理结果发送给第一目标终端。
上述S340中,在服务器成功执行第一请求的情况下,第一请求对应的处理结果表示成功执行第一请求;在服务器执行第一请求失败的情况下,第一请求对应的处理结果表示执行第一请求失败。
可选的,当第一请求为对目标资源进行查询的请求,且成功执行第一请求时,在执行上述S340后还以执行以下步骤:服务器将根据第一请求所请求查询到的目标资源发送给第一目标终端。
应理解,上述图3示出的方法仅为示意,并不对本申请提供的数据处理的方法构成任何限定。
在本申请实施例中,在服务器正在执行目标缓存队列中存储的第二请求的过程中,服务器将新接收到的第一请求先存储至目标缓存队列中,其中,第二请求是对目标资源进行更改的请求,第一请求是对所述目标资源进行更改或查询的请求。直到服务器对目标缓存队列中存储的第二请求执行完毕的情况下,服务器开始对目标缓存队列中存储的第一请求进行处理。其中,服务器处理第二请求和第一请求的处理顺序是严格按照每个请求存储至缓存队列的顺序进行的,即服务器执行完第二请求后(即,已经根据第二请求对缓存或数据库中的数据进行了更新)才开始执行第一请求,该方法可以避免服务器还未根据第二请求的执行结果对原始数据库中存储的目标资源进行更改,服务器又根据原始数据库对后续接收到的第一请求进行处理,上述实现方式不会存在数据一致性的问题(即,缓存中存储的目标资源与数据库中存储的目标资源不一致),该方法可以增强数据一致性和提高数据处理的结果的准确性。
下面,结合图4介绍本申请提供的另一种数据处理的方法。可以理解的是,图4所述描述的数据处理的方法为上述图3所描述的数据处理的方法的一个具体示例。具体的,图4所示的终端A为图3所示的终端,服务器A为图3所示的服务器,且图4以图3中的目标资源具体为权限1为例介绍了本申请实施例提供的另一种数据处理的方法。
图4是本申请实施例提供的另一种数据处理的方法的示意图。应理解,图4的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图4的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。如图4所示,该方法包括S401至S409。下面,详细介绍S401至S409。
在本申请实施例中,数据库1和缓存1中均可以存储有:用户表、角色表、权限表、RBAC模型和用户权限模型,服务器A通过查询这些表可以获取终端A拥有的权限。可以理解的是,服务器A可以根据终端发送的写请求对数据库1和/或缓存1进行操作,使得在时刻1数据库1和缓存1中存储的信息,与在时刻1数据库1和缓存1中存储的信息不同,时刻1和时刻2为两个不同的时刻。示例性的,图6示出了适用于本申请实施例提供的一种数据库设计E-R图,该E-R图包括上述用户表、角色表、权限表、RBAC模型和用户权限模型。图6示出的E-R图仅为示意,并不对本申请实施例适用的E-R图构成任何限定。对用户表、角色表、权限表、RBAC模型和用户权限模型的描述可以参见上文中的相关内容,此处不再详细赘述。
S401,终端A向服务器A发送写请求1,写请求1用于请求对权限1进行更改操作1。相应的,服务器A接收到终端A发送的写请求1。
权限1的权限包括登录网站的权限。
更改操作1用于将权限1的权限修改为,权限1的权限包括登录网站的权限和对网站信息进行更改的权限。
写请求1包括权限1的标识,权限1的标识用于唯一指示该权限1。具体的,权限1的标识可以为“标识1”。
S402,响应于满足条件1,服务器A将写请求1存储至缓存队列1中。
满足条件1包括:服务器A接收到写请求1时缓存队列1中仅存储有写请求2,写请求2用于请求对权限1进行更改操作2。更改操作2用于将权限1的权限修改为,权限1的权限包括登录网站的权限。
缓存队列1中存储写请求2,可以理解为是,服务器A还未执行该写请求2,或服务器A正在执行该写请求2且并未执行完该写请求2。换句话说,若缓存队列1中的一个请求(例如,写请求2)未执行完毕,缓存队列1中会一直存储该一个请求。直到该一个请求执行完毕后,缓存队列1中存储的该一个请求会被删除。
写请求2是服务器A在接收到写请求1之前接收到的一个写请求。写请求2包括权限1的标识,即写请求2包括的权限1的标识为“标识1”。
缓存队列1用于存储对权限1进行查询和/或更改的请求。
执行上述S402,可以理解为,在服务器A的缓存队列1中仅存储一个写请求2的情况下(即,写请求2未被执行完毕的情况下),服务器A先将接收到的写请求1存储至缓存队列1中,直到服务器A的缓存队列1中存储的该至少一个写请求2执行完毕后,服务器A才会执行该写请求1。上述实现方式中,服务器A中的缓存队列1用于存储对权限1进行操作的读请求和/或写请求,服务器A中的与该缓存队列1对应的工作线程串行从缓存队列1中按照每个请求存储至缓存队列1的顺序,依次执行该缓存队列1中存储的请求,这种串行化处理请求的方式,能够保证缓存数据和数据库数据一致,不会导致终端从缓存中查询到的是脏数据,即该方法可以保证数据处理的结果是准确的。此外,服务器执行每个写请求(例如,写请求2)所需的时间很短暂,也就是说,服务器A在接收写请求1后仅需要等待很短的时间便会执行该写请求1。综上,上述实现方式在保证数据处理的结果准确的前提下,还可以提高数据处理的效率。
S403,响应于满足条件2,服务器A执行删除缓存1中存储的目标数据的操作。
满足条件2包括:写请求2执行完毕。可以理解的是,缓存队列1中存储的写请求2执行完毕后,缓存队列1中存储的写请求2会被删除。
缓存1为服务器A能够访问的缓存,且服务器A访问缓存1的速度快于服务器A所能访问的数据库的速度。对缓存1的类型不作具体限定,缓存1与上文S330中的缓存的定义相同,此处未详细描述的内容可以参见上文S330中的相关描述。
缓存1中的目标数据,是指执行写请求1之前缓存1中存储的权限1所关联的数据。具体的,缓存1中的目标数据可以包括:RBAC模型中记录的信息1和用户权限模型中记录的信息2。其中,信息1包括:权限1的标识、权限1的标识和权限1的对应关系、权限1的标识和角色的标识的对应关系;信息2包括:权限1的标识、权限1的标识和权限1的对应关系、以及权限1的标识和终端的标识的对应关系。
执行上述S402之后执行上述S403,可以理解为,在满足条件2的情况下,服务器A会直接执行删除缓存1中的目标数据的操作。也就是说,本申请实施例中,在满足条件2的情况下,服务器A不会先去查询缓存1中是否存在目标数据的操作,再根据查询结果确定是否执行删除目标数据的操作。本申请实施例提供的方法,即直接删除缓存1中目标数据的方式,具有更高的执行效率。
实际应用中,服务器A执行删除缓存的操作是否成功,还受当前服务器A的工作环境的影响。例如,当服务器A在执行删除缓存1中的目标数据的过程中,若服务器A发生宕机时,服务器A执行删除缓存1中的目标数据的操作会失败。也就是说,服务器A执行删除缓存1中的目标数据的操作不一定成功。因此,在执行上述S403之后还需要执行S404。
S404,服务器A确定是否成功删除缓存1中的目标数据。
其中,服务器A确定是否成功删除缓存1中的目标数据,包括:若服务器A确定成功删除缓存1中的目标数据,在执行上述S404之后执行S406;若服务器A确定未成功删除缓存1中的目标数据,在执行上述S404之后执行S405。
可以理解的是,当服务器A执行删除缓存1中的目标数据后,若缓存1中没有存储目标数据中的部分或全部数据,则服务器A可以确定成功删除缓存1中的目标数据。当服务器A执行删除缓存1中的目标数据后,若缓存1中还存储有目标数据中的部分或全部数据,则服务器A可以确定删除缓存1中的目标数据失败。
S405,服务器A向终端A发送写请求1的响应消息2,响应消息2表示执行写请求1失败。
在执行上述S404后,若服务器A确定删除缓存1失败,则服务器继续执行上述S405。这种实现方式中,服务器A在执行写请求1之前,先执行删除缓存1。在删除缓存1失败的情况下,服务器A就不会执行写请求1。
需说明的是,执行上述S405之后,服务器A所访问的数据库1中存储的写请求1对应的权限1,与服务器A所访问的缓存1中的写请求1对应的权限1是一致的,即这种实现方式中缓存和数据库不会存在数据一致性的问题。其中,数据库1可以是服务器A的本地数据库或远端数据库,对此不作具体限定。
S406,服务器A根据终端A的标识对数据库1进行查询,确定终端A是否具有对写请求1对应的权限1进行更改操作的权限。
其中,服务器A根据终端A的标识对数据库1进行查询,确定终端A是否具有对写请求1对应的权限1进行更改操作的权限,包括:若服务器A确定终端A具有对写请求1对应的权限1进行更改操作的权限,则在执行上述S406之后执行S407;或者,若服务器A确定终端A不具有对写请求1对应的权限1进行更改操作的权限,则在执行上述S406之后执行S405。
可以理解的是,执行上述S404至S406,即服务器A接收到一个写请求的操作后,服务器A会先删除服务器A所访问的缓存1中存储与该一个写请求对应的资源所关联的数据,然后才会去操作服务器A的数据库1并根据该一个写请求对该数据库1进行数据更新。如果服务器A发现删除缓存失败,则服务器A就不会根据该一个写请求去操作数据库1了。这样,可以避免数据库1和缓存1存在数据一致性问题,即避免数据库1存储的数据和缓存1存储的数据不一致的问题。
S407,服务器A对数据库1中存储的目标数据执行更改操作1。
数据库1中存储的目标数据,是指执行写请求1之前数据库1中存储的权限1所关联的数据。
更改操作1用于对权限1的标识进行更改,权限1的标识存储在RBAC模型中的角色权限关联表中、权限1的标识还存储在用户权限模型中,权限1的标识还存储在权限表中。基于此,服务器A对数据库1中存储的目标数据执行更改操作1,包括:服务器A对RBAC模型中的角色权限关联表中记录的权限1的标识、用户权限模型中记录的权限1的标识、以及权限表中记录的权限1的标识执行更改操作1,以使执行更改操作1后RBAC模型和用户权限模型中存储的权限1包括登录网站的权限和对网站信息进行更改的权限,其中,数据库1包括RBAC模型和用户权限模型。
S408,服务器A确定是否成功修改数据库1。
其中,服务器A确定是否成功修改数据库1,包括:若服务器A确定成功修改数据库1,则在执行上述S408之后执行S409;或者,若服务器A确定修改数据库1失败,则在执行上述S408之后执行S405。
S409,服务器A向终端A发送写请求1的响应消息1,响应消息1表示成功执行写请求1。
可选的,在执行上述S409之后,服务器A还可以将成功执行写请求1对应的执行结果存储至缓存1中。基于此,若终端向服务器A发送读请求1,读请求1用于查询写请求1对应的权限1时,服务器A可以根据读请求1直接从缓存1中查询读请求1所请求查询的数据,并将查询到的结果返回给终端。
应理解的是,上述图4所描述的数据处理的方法仅为示意,并不对本申请实施例提供的数据处理的方法构成任何限定。
在本申请实施例中,在服务器A的内存中设置用于存储对权限1进行操作(例如,读操作或写操作)的缓存队列1。当服务器A接收到一个写请求时该缓存队列1中已经存储有其他写请求,且该一个写请求用于请求对所述权限1进行操作,服务器A先将该一个写请求按照服务器A接收请求的顺序存储至缓存队列1中。直到缓存队列1中存储的在该一个写请求之前接收到的所有请求处理完毕后,服务器A在执行该一个写请求。也就是说,缓存队列1中存储的写请求是严格按照服务器A接收到的请求的顺序串行化处理的。由于服务器A执行每个写请求的所消耗的时间很短暂,故缓存队列1中的未被执行的写请求仅需等待很短的时间便会被执行。上述实现方式,通过缓存队列和串行化处理写请求的方式,强制保证了执行写请求的顺序性,是保证缓存数据和数据库数据一致性的关键。此外,服务器A在确定终端是否具有写请求对应的权限时,采用用户权限模型查询终端对应的权限,可以提高数据处理的效率。综上,本申请实施例提供的数据处理的方法,该方法可以增强数据一致性、提高数据处理的结果的准确性,以及提高数据处理的效率。
基于上述图4提供的数据处理的方法,服务器A在执行上述S401至S409的过程中(即,数据库1和/或缓存1还未根据执行上述图5所述的写请求(即,写请求1和至少一个写请求2)进行更新的情况下),服务器A还可以获取终端(例如,终端A或除终端A以外的设备)发送的一个或多个读请求,任意一个读请求用于请求查询权限1。
下面,结合图5介绍服务器A执行上述S401至S409的过程中,服务器A又接收到一个或多个读请求时,本申请实施例提供的另一种数据处理的方法。图5是本申请实施例提供的又一种数据处理的方法的示意图。应理解,图5的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图5的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。如图5所示,该方法包括S501至S508。下面,详细介绍S501至S508。
S501,终端A向服务器A发送读请求1,读请求1请求查询权限1。相应的,服务器A接收到终端A发送的读请求1。
读请求1用于请求查询权限1,有关权限1的详细介绍可参加上文图4对应的相关描述,此处不再详细赘述。读请求1包括权限1的标识,且读请求1携带的权限1的标识为“权限#2”。
S502,服务器A确定缓存队列1中是否存储读请求2。
可选的,在执行上述S502之前,服务器A还可以执行以下步骤:接收到终端A发送的读请求2;根据读请求2携带的权限1的标识和服务器A中的设置的缓存队列的标识,确定读请求2与缓存队列1对应;将读请求2写入缓存队列1中。其中,读请求2携带的权限1的标识为“标识1”。
可选的,在执行上述S502之前,服务器A还可以执行以下步骤:根据读请求1携带的权限1的标识和服务器A中的设置的缓存队列的标识,确定读请求1与缓存队列1对应。服务器A确定读请求1与缓存队列1对应的方法,与上文中服务器A确定写请求1与缓存队列1对应的方法类似,此处未详细赘述的内容可以参见上文中的相关描述。
读请求2为服务器A在接收到读请求1之前接收到的一个读请求,且,读请求2是服务器A在接收到上文所述的写请求1之后接收到的一个请求。具体的,读请求2请求查询权限1。在一些实现方式中,上述读请求1和读请求2均是服务器A在执行写请求1的过程中接收到的读请求。这种实现方式中,服务器A的缓存队列1中按照以下顺序依次存储上述请求:写请求1、读请求2、读请求1。基于此,服务器A可以在执行完写请求1之后,再执行读请求2和读请求1(例如,并行执行读请求2和读请求1)。在另一些实现方式中,上述读请求1和读请求2均是在服务器A执行完写请求1之后接收到的读请求,这种实现方式中,服务器A的缓存队列1中存储的请求依次包括:读请求2和读请求1。在另一些实现方式中,上述读请求2是在服务器A执行写请求1的过程中接收到的,读请求1是在服务器A执行完写请求1后收到的。
其中,服务器A确定缓存队列1中是否存储读请求2,包括:若服务器A确定缓存队列1中存储有读请求2,则执行S502之后执行S503;若服务器A确定缓存队列1中未存储有读请求2,则执行S502之后执行S504。对确定服务器A的缓存队列1中是否存储读请求2的方式不作具体限定。例如,读请求2可以携带权限1的标识,服务器A确定缓存队列1中是否存储读请求2,包括:若读请求2携带的权限1的标识与缓存队列1中存储的一个请求携带的标识相同,则服务器A确定缓存队列1中存储读请求2;若读请求2携带的权限1的标识与缓存队列1中存储的一个请求携带的标识不相同,则服务器A确定缓存队列1中未存储读请求2。
S503,响应于满足条件#1,服务器A根据读请求1从缓存中查询读请求1所请求的权限1,并获取读请求1所请求的权限1。
满足条件#1包括:缓存1中存储权限1。在一些实现方式中,在写请求1成功执行后,若服务器A将执行写请求1后获得的权限1成功写入缓存1,则缓存1中可以存储有读请求1所请求的权限1。在另一些实现方式中,当服务器A成功执行读请求2后,缓存1中会存储有权限1。
上述缓存1中设置有标志位1,标志位1的取值用于指示是否满足条件#1。其中,标志位1的值为“1”时,标志位1用于指示满足条件#1;标志位1的值为“0”时,标志位1用于指示不满足条件#1。基于此,服务器A可以根据标志位1确定是否满足条件#1。此后,响应于满足条件#1,服务器A根据读请求1从缓存中查询读请求1所请求的数据,并获得读请求1所请求的数据。包括:响应于满足条件#1,服务器A根据读请求1携带的权限1的标识从缓存1中查询存储权限1的位置为位置1;服务器A从位置1处获取读请求1所请求的权限1。
可以理解的是,执行上述S502和上述S503,即当服务器A的缓存队列1中存储有读请求2,且满足条件#1时,服务器A可以直接根据读请求1从缓存中查询读请求1所请求的数据。这种实现方式中,服务器A没有先将读请求1存储至缓存队列1,直到读请求2执行完毕后,再从缓存队列1中取出读请求1并对读请求1进行处理,可以提高读请求处理的效率。
S504,服务器A将读请求1存储至缓存队列1。
其中,服务器A将读请求1存储至缓存队列1的实现原理,与服务器A将写请求1存储至缓存队列1的实现原理类似,此处未详细赘述的内容可以参见上文中的相关描述。
可以理解的是,执行上述S502和上述S504后,若缓存队列1中存储的写请求1执行完毕,则缓存队列1中按顺序依次存储有读请求2和读请求1。执行上述S502和上述S504后,若缓存队列1中存储的写请求1尚未执行完毕,则缓存队列1中按顺序依次存储有写请求1、读请求2和读请求1。
S505,响应于满足条件#2,服务器A根据读请求1从缓存1中查询读请求1所请求的权限1。
满足条件#2包括:缓存队列1中的写请求1执行完毕。在一些实现方式中,服务器A执行写请求1执行完毕,可以理解为,服务器A成功执行写请求1。可以理解的是,服务器A成功执行写请求1后,若服务器A将执行写请求1的执行结果存储至缓存1中,则缓存1中会存储权限1;若服务器A将执行写请求1的执行结果存储至缓存1中,则缓存1中不会存储权限1。在另一些实现方式中,服务器A执行写请求1执行完毕,可以理解为,服务器A执行写请求1失败,则缓存1中不会存储根据写请求1对权限1进行更改操作后的执行结果。
其中,服务器A根据读请求1从缓存1中查询读请求1所请求的权限1,包括:服务器A根据读请求1携带的权限1的标识,从缓存1中查询读请求1所请求的权限1。
缓存1中存储有用户权限模型和RBAC模型中的均记录有权限1。基于此,服务器A根据读请求1从缓存1中查询读请求1所请求的数据,包括:服务器A根据读请求1携带的权限1的标识对用户权限模型和/或RBAC模型中查询,以获得存储权限1的位置为位置1;服务器A从位置1处获取读请求1所请求查询的权限1。这种实现方式中,服务器A从缓存1中能够成功查询到读请求1所请求的数据。
S506,服务器A是否从缓存1中成功查询到读请求1所请求的权限1。
其中,服务器A是否从缓存1中成功查询到读请求1所请求的权限1,包括:若服务器A从缓存1中成功查询到读请求1所请求的权限1,则执行S506之后执行S508;若服务器A从缓存1中未成功查询到读请求1所请求的权限1,则执行S506之后执行S507。
在一些实现方式中,上述S505中满足条件#2,具体是指,缓存队列1中的写请求1执行完毕,且成功执行写请求1。这种实现方式中,缓存1中会存储根据写请求1对权限1进行更改操作后的执行结果。基于此,服务器A执行上述S506后,服务器能够从缓存1中成功查询到读请求1所请求的权限1。
可选的在一些实现方式中,上述S505中满足条件#2,具体是指,缓存队列1中存储的写请求1执行完毕,且执行写请求1失败。这种实现方式中,由于服务器A在接收到写请求1后已经删除了缓存1中存储的与权限1关联数据,且服务器A执行写请求1失败,故缓存1中没有存储权限1。基于此,服务器A执行上述S506后,服务器不能成功从缓存1中成功查询到读请求1所请求的权限1。
可以理解的是,若服务器A从缓存1中成功查询到读请求1所请求的数据,则执行S506之后继续执行S508。这种实现方式中,服务器A优先从缓存1中查询读请求1所请求的数据,避免了对数据库进行频繁访问操作,可以提高数据处理的效率。
S506,服务器A是否从缓存1中成功查询到读请求1所请求的权限1。
其中,服务器A是否从缓存1中成功查询到读请求1所请求的权限1,包括:若服务器A从缓存#1中成功查询到读请求1所请求的权限1,则执行S506之后执行S508;若服务器A从缓存1中未成功查询到读请求1所请求的权限1,则执行S506之后执行S507。
可以理解的是,若服务器A从缓存1中成功查询到读请求1所请求的权限1,则执行S506之后继续执行S508。这种实现方式中,服务器A优先从缓存1中查询读请求1所请求的数据,避免了对数据库进行操作,可以提高查询效率。
上述实现方式中,执行S502之后依次执行S504、S505和S506,可以理解为,在服务器A的缓存队列1中并未存储读请求2(与读请求1所请求查询的资源相同)的情况下,直到等到服务器A执行写请求1(即,对权限1进行更改操作的请求)后,服务器A才会执行上述S505。当服务器A成功执行写请求1后,缓存1中会存储执行写请求1的执行结果。此后,服务器A根据读请求1能够成功从缓存1中查询读请求1所请求的权限1。当服务器A执行写请求1失败后,服务器A根据读请求1无法从缓存1中查询读请求所请求的权限1。
S507,服务器A根据读请求1从数据库1中查询读请求1所请求的权限1,并根据查询到的权限1对缓存1进行更新。
执行上述S506后,服务器A确定缓存1中没有存储读请求1所请求的数据后,服务器A才会从数据库1中查询读请求1所请求的数据。这种实现方式中,服务器A优先从缓存1中查询读请求1所请求的数据,在确定缓存1中并未存储读请求1所请求的数据的情况下,服务器A会从数据库1中查询读请求1所请求的数据,这样可以保证服务器A成功执行读请求1。
上述S507中,服务器A根据读请求1从数据库1中查询读请求1所请求的数据的方法,与上述S505中服务器A根据读请求1从数据库1中查询读请求1所请求的数据的方法类似,即将上述S505中的缓存1替换为上述S507中的数据库1。此处未详细赘述的内容可以参见上文中对S505的相关描述。
S508,服务器A向终端A发送读请求1的响应消息,读请求1的响应消息表示成功执行读请求1。
可选的,在执行上述S508之后,服务器A还会向终端A发送读请求1所请求查询的数据。
在执行上述S506之后执行上述S507和S508,即数据库1中存储读请求1所请求查询的数据,缓存1中没有存储读请求1所请求查询的数据。基于此,在执行上述S508之后,服务器A还可以执行以下步骤:根据数据库1存储的读请求1所请求查询的数据,对缓存1进行更新,使得更新后的缓存中的数据与数据库中的数据保存一致。这样,当服务器A再次接收到一个读请求,且该一个读请求所请求查询的数据与读请求所请求查询的数据相同时,服务器A可以直接从缓存1中查询到该一个读请求所请求查询的数据,可以提高数据查询的效率。
可以理解的是,上述读请求1和读请求2是服务器A在执行写请求1之后执行的请求。当服务器A成功执行写请求1后,若服务器A又成功执行读请求(例如,读请求1或读请求2),则该读请求所查询到的权限1是根据写请求1进行更改后的权限1。当服务器A执行写请求1失败后,若服务器A又成功执行至少一个读请求,则该一个读请求所查询到的权限1是数据库中存储的权限1,且该权限1未根据写请求1进行更改。
应理解的是,上述图5描述的数据处理的方法仅为示意,并不对本申请实施例提供的数据处理的方法构成任何限定。
在本申请实施例中,在服务器A的内存中设置用于存储对权限1进行操作(例如,读操作或写操作)的缓存队列1。在服务器A在执行缓存队列1中存储的写请求1(即,用于对权限1进行更改的请求)的过程中,又接收到多个读请求(即,用于查询对权限1)的场景下,服务器A先将第一个接收到的读请求(即,读请求2)存储至缓存队列1中。直到写请求1成功执行后,服务器A先执行该第一个接收到的读请求(例如,读请求2),执行该第一个接收到的读请求后缓存1中会存储权限1。之后,服务器A根据其他请求查询权限1的读请求(例如,读请求1)直接从缓存1中查询权限1,可以提高服务器A处理数据的效率和避免对数据库进行频繁访问。上述实现方式,通过缓存队列和串行化处理写请求的方式,强制保证了执行写请求的顺序性,是保证缓存数据和数据库数据一致性的关键;通过并行化处理查询相同资源的读请求,可以进一步提高服务器A处理数据的效率。此外,服务器A在确定终端是否具有读请求对应的权限时,采用用户权限模型查询终端对应的权限,可以提高数据处理的效率。综上,本申请实施例提供的数据处理的方法,可以增强数据一致性、提高数据处理的结果的准确性、以及提高数据处理的效率。
上文,结合图1至图6详细介绍了本申请提供的数据处理的方法适用的应用场景和数据处理的方法。下面,结合图7和图8介绍本申请提供的数据处理的装置和设备。应理解,上文中数据处理的方法与下文中数据处理的装置和设备相对应。下文中未详细描述的内容可以参见上述方法实施例中的相关描述。
图7本申请实施例提供的一种数据处理的装置的结构示意图。如图7示,该装置包括收发单元701和处理单元702,
收发单元701,用于接收来自第一目标终端的第一请求,所述第一请求用于请求对目标资源进行查询或更改;处理单元702用于:响应于满足第一条件,将所述第一请求存储至目标缓存队列,所述满足第一条件包括:所述服务器接收到所述第一请求时所述目标缓存队列中至少存储有第二请求,所述第二请求用于请求对所述目标资源进行更改,所述目标缓存队列用于存储对所述目标资源进行查询或更改的请求,且所述目标缓存队列为所述服务器所访问的内存中的内存空间;所述处理单元702还用于:响应于满足第二条件,对所述第一请求进行处理,生成所述第一请求对应的处理结果,所述满足第二条件包括:所述第二请求执行完毕;所述收发单元701还用于:将所述第一请求对应的处理结果发送给所述第一目标终端。
图8是本申请实施例提供的一种数据处理设备的结构示意图。如图8所示,包括存储器801、处理器802、通信接口803以及通信总线804。其中,存储器801、处理器802、通信接口803通过通信总线804实现彼此之间的通信连接。
存储器801可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器801可以存储程序,当存储器801中存储的程序被处理器802执行时,处理器802和通信接口803用于执行本申请实施例的数据处理的方法的各个步骤。
处理器802可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的数据处理的装置中的单元所需执行的功能,或者执行本申请实施例的数据处理的方法的各个步骤。
处理器802还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请提供的数据处理的方法的各个步骤可以通过处理器802中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器802还可以是通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器802读取存储器801中的信息,结合其硬件完成本申请实施例的数据处理的装置中包括的单元所需执行的功能,或者执行本申请方法实施例的数据处理的方法。
通信接口803使用例如但不限于收发器一类的收发装置,来实现图8所示的设备与其他设备或通信网络之间的通信。例如,可以通过通信接口803输出第一请求对应的处理结果等。
通信总线804可包括在图8所示的设备各个部件(例如,存储器801、处理器802、通信接口803)之间传送信息的通路。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质包括计算机指令,计算机指令在被处理器执行时用于实现本申请实施例中任意一种数据处理的方法的技术方案。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读介质上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请公开实施方式的方法。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储介质或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

Claims (13)

1.一种数据处理的方法,其特征在于,包括:
服务器接收来自第一目标终端的第一请求,所述第一请求用于请求对目标资源进行查询或更改;
响应于满足第一条件,所述服务器将所述第一请求存储至目标缓存队列,所述满足第一条件包括:所述服务器接收到所述第一请求时所述目标缓存队列中至少存储有第二请求,所述第二请求用于请求对所述目标资源进行更改,所述目标缓存队列用于存储对所述目标资源进行查询和/或更改的请求,且所述目标缓存队列为所述服务器所访问的内存中的内存空间;
响应于满足第二条件,所述服务器对所述第一请求进行处理,生成所述第一请求对应的处理结果,所述满足第二条件包括:所述第二请求执行完毕;
所述服务器将所述第一请求对应的处理结果发送给所述第一目标终端。
2.根据权利要求1所述的方法,其特征在于,所述第一请求包括所述目标资源的标识,在所述服务器将所述第一请求存储至目标缓存队列之前,所述方法还包括:
所述服务器根据所述目标资源的标识和所述内存中设置的至少一个缓存队列的标识,确定将所述第一请求存储至所述目标缓存队列,所述至少一个缓存队列包括所述目标缓存队列。
3.根据权利要求1或2所述的方法,其特征在于,所述第一请求具体用于请求对所述目标资源进行更改,所述服务器对所述第一请求进行处理,生成所述第一请求对应的处理结果,包括:
所述服务器根据所述目标资源的标识,执行删除所述服务器所访问的缓存中存储的所述目标资源的操作;
若所述服务器成功删除所述缓存中存储的所述目标资源,则所述服务器根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的第一处理结果或第二处理结果;或者,
若所述服务器删除所述缓存中存储的所述目标资源失败,则所述服务器生成所述第一请求对应的第二处理结果;
其中,所述第一处理结果表示成功执行所述第一请求,所述第二处理结果表示执行所述第一请求失败。
4.根据权利要求3所述的方法,其特征在于,所述第一请求包括所述目标资源的标识,所述服务器根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的处理结果,包括:
所述服务器根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果;
若所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限,则所述服务器根据所述第一请求对所述数据库中记录的所述目标资源进行更改,并生成所述第一请求对应的第一处理结果;或者,
若所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限,则所述服务器生成所述第二处理结果。
5.根据权利要求1或2所述的方法,其特征在于,所述第一请求包括所述目标资源的标识,所述第一请求具体用于请求对所述目标资源进行查询,所述服务器对所述第一请求进行处理,生成所述第一请求对应的处理结果,包括:
所述服务器根据所述目标资源的标识对所述服务器所访问的缓存执行查询操作,获得查询结果;
若所述查询结果表示所述第一目标终端具有查询所述目标资源的标识所关联的资源的权限,则所述服务器根据所述第一请求从所述缓存中读取所述目标资源的标识所关联的资源,并生成所述第一请求对应的第一处理结果;或者,
若所述查询结果表示所述第一目标终端不具有查询所述目标资源的标识所关联的资源的权限,则所述服务器根据所述第一请求对所述服务器所访问的数据库进行操作,并生成所述第一请求对应的第一处理结果或第二处理结果;
其中,所述第一处理结果表示成功执行所述第一请求,所述第二处理结果表示执行所述第一请求失败。
6.根据权利要求5所述的方法,其特征在于,所述缓存中设置有标志位,所述方法还包括:
所述服务器接收第二目标终端发送的第三请求,所述第二目标终端与所述第一目标终端相同或不同,所述第三请求是在所述服务器接收所述第一请求之后接收到的一个请求,且所述第三请求用于请求对所述目标资源进行查询;
响应于满足第三条件,所述服务器根据所述第三请求包括的所述目标资源的标识从所述缓存中读取所述目标资源,并生成所述第三请求对应的第三处理结果,所述第三处理结果表示成功执行所述第三请求;其中,所述满足第三条件包括:所述标志位的取值用于指示所述缓存中存储有所述目标资源的标识对应的资源;
所述服务器向所述第二目标终端发送所述第三请求。
7.根据权利要求1至6任一项所述的方法,其特征在于,
所述目标资源包括以下至少一种资源:目标终端的账号信息、目标角色、目标权限、所述目标终端的账号信息和所述目标角色的关联关系、或所述目标终端的账号信息和所述目标权限的关联关系。
8.根据权利要求7所述的方法,其特征在于,所述目标资源包括所述第一目标终端的账号信息和所述目标权限的关联关系,所述数据库中存储至少一个用户权限模型,所述至少一个用户权限模型中记录终端和权限之间的关联关系,
所述服务器根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果,包括:
所述服务器根据所述目标资源的标识对所述至少一个用户权限模型执行第一查询操作,获得第一查询结果,所述目标资源的标识包括所述第一目标终端的标识和所述目标权限的标识;
若所述第一查询结果表示所述目标资源的标识所包括的所述目标权限的标识与所述至少一个用户权限模型中记录的分配给所述第一目标终端的权限的标识相匹配,则所述服务器获得所述查询结果,且所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限;或者,
若所述第一查询结果表示所述目标资源的标识所包括的所述目标权限的标识与所述至少一个用户权限模型中记录的分配给所述第一目标终端的权限的标识不匹配,则所述服务器获得所述查询结果,且所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限。
9.根据权利要求7所述的方法,其特征在于,所述目标资源包括所述第一目标终端的账号信息和所述目标权限的关联关系,所述数据库中存储基于角色的访问控制RBAC模型,所述RBAC模型包括至少一个用户角色关联表和至少一个角色权限关联表,所述至少一个用户角色关联表中记录终端和角色之间的关联关系,所述至少一个角色权限关联表中记录权限和所述角色之间的关联关系,
所述服务器根据所述目标资源的标识对所述数据库执行查询操作,获得查询结果,包括:
所述服务器根据所述目标资源的标识对所述至少一个用户角色关联表执行第二查询操作,获得第二查询结果,所述目标资源的标识包括所述第一目标终端的标识和所述目标权限的标识,所述第二查询结果包括所述至少一个用户角色关联表中记录的所述第一目标终端对应的角色的标识;
所述服务器根据所述第一目标终端对应的角色的标识对所述至少一个角色权限表执行第三查询操作,获得第三查询结果,所述第三查询结果包括所述至少一个角色权限关联表中记录的与所述第一目标终端对应的角色的标识所对应的权限的标识;
其中,若所述第三查询结果所包括的权限的标识与所述目标资源的标识所包括的所述目标权限的标识相匹配,则所述服务器生成所述查询结果,且所述查询结果表示所述第一目标终端具有对所述目标资源进行更改的权限;或者,
若所述第三查询结果所包括的权限的标识与所述目标资源的标识所包括的所述目标权限的标识不匹配,则所述服务器生成所述查询结果,且所述查询结果表示所述第一目标终端不具有对所述目标资源进行更改的权限。
10.一种数据处理的装置,其特征在于,包括:
收发单元,用于接收来自第一目标终端的第一请求,所述第一请求用于请求对目标资源进行查询或更改;
处理单元用于:响应于满足第一条件,将所述第一请求存储至目标缓存队列,所述满足第一条件包括:所述服务器接收到所述第一请求时所述目标缓存队列中至少存储有第二请求,所述第二请求用于请求对所述目标资源进行更改,所述目标缓存队列用于存储对所述目标资源进行查询或更改的请求,且所述目标缓存队列为所述服务器所访问的内存中的内存空间;
所述处理单元还用于:响应于满足第二条件,对所述第一请求进行处理,生成所述第一请求对应的处理结果,所述满足第二条件包括:所述第二请求执行完毕;
所述收发单元还用于:将所述第一请求对应的处理结果发送给所述第一目标终端。
11.一种数据处理设备,其特征在于,包括:存储器和处理器、所述存储器和所述处理器耦合;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令,以实现如权利要求1至9任意一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述权利要求1至9任一项所述的数据处理的方法。
13.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如上述权利要求1至9任一项所述的数据处理的方法。
CN202211026703.2A 2022-08-25 2022-08-25 一种数据处理的方法和装置 Pending CN115525679A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211026703.2A CN115525679A (zh) 2022-08-25 2022-08-25 一种数据处理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211026703.2A CN115525679A (zh) 2022-08-25 2022-08-25 一种数据处理的方法和装置

Publications (1)

Publication Number Publication Date
CN115525679A true CN115525679A (zh) 2022-12-27

Family

ID=84697593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211026703.2A Pending CN115525679A (zh) 2022-08-25 2022-08-25 一种数据处理的方法和装置

Country Status (1)

Country Link
CN (1) CN115525679A (zh)

Similar Documents

Publication Publication Date Title
US10747889B2 (en) Method and system for time window encryption tokenization of data
US11762970B2 (en) Fine-grained structured data store access using federated identity management
US11574070B2 (en) Application specific schema extensions for a hierarchical data structure
US7548918B2 (en) Techniques for maintaining consistency for different requestors of files in a database management system
US20150301824A1 (en) Version control of applications
US10503923B1 (en) Centralized data store for multiple data processing environments
US9910881B1 (en) Maintaining versions of control plane data for a network-based service control plane
US10191663B1 (en) Using data store accelerator intermediary nodes and write control settings to identify write propagation nodes
US20210216523A1 (en) Data Storage Method, Metadata Server, and Client
US20060136508A1 (en) Techniques for providing locks for file operations in a database management system
CN113743955A (zh) 基于智能合约的食材溯源数据安全访问控制方法
US11762846B1 (en) Key prefix driven data encryption in tree structures
US11489844B2 (en) On-the-fly creation of transient least privileged roles for serverless functions
US11853284B2 (en) In-place updates with concurrent reads in a decomposed state
US10685019B2 (en) Secure query interface
US11734432B2 (en) Detecting second-order security vulnerabilities via modelling information flow through persistent storage
US20210176067A1 (en) System and method for authorizing secondary users to access a primary user's account using blockchain
EP3458979B1 (en) Reconciling foreign key references and table security policies
US8635331B2 (en) Distributed workflow framework
US7716260B2 (en) Techniques for transaction semantics for a database server performing file operations
CN115525679A (zh) 一种数据处理的方法和装置
US11500837B1 (en) Automating optimizations for items in a hierarchical data store
US11853319B1 (en) Caching updates appended to an immutable log for handling reads to the immutable log
US11893103B2 (en) Offline processing using on-demand access tokens
WO2023159458A1 (en) Device runtime update pre-authentication

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