数据操作方法、程序产品、存储介质及电子设备与流程

文档序号:31725000发布日期:2022-10-05 00:18阅读:45来源:国知局
数据操作方法、程序产品、存储介质及电子设备与流程

1.本技术涉及数据处理技术领域,具体而言,涉及一种数据操作方法、程序产品、存储介质及电子设备。


背景技术:

2.执行人工智能、大数据等领域的数据处理任务时,经常需要操作(例如,查询、删除、修改)结构化数据和非结构化数据。目前,结构化数据一般存储在关系型数据库中,而非结构化数据一般存储在外部存储系统(如文件系统、对象存储系统)中。然而,目前的外部存储系统的在权限控制上不够完善,使得对非结构化数据的操作存在安全上的隐患。另外,有些外部存储系统具有单独的权限控制机制,用户需要学习不同外部存储系统的权限控制机制,学习成本较高。


技术实现要素:

3.本技术实施例的目的在于提供一种数据操作方法、程序产品、存储介质及电子设备,以改善上述技术问题。
4.为实现上述目的,本技术提供如下技术方案:
5.第一方面,本技术实施例提供一种数据操作方法,应用于关系型数据库管理系统,所述方法包括:接收第一用户的客户端直接发送或通过第一代理发送的第一数据库操作指令;从所述第一数据库操作指令中解析出针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识;其中,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在所述关系型数据库管理系统的数据库中;判断所述第一用户是否有权限使用所述访问认证信息标识;如果有权限使用,则执行以下步骤:从所述数据库中根据所述访问认证信息标识查询所述访问认证信息;从所述数据库中查询所述第一存储地址;确定针对所述第一数据库操作指令的返回结果,并将所述返回结果发送给所述第一数据库操作指令的直接发送方;其中,所述返回结果包括所述第一存储地址和根据所述访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作得到的第一操作结果。
6.在上述方法中,是根据从关系型数据库中得到的访问认证信息和第一存储地址来实现对位于外部存储系统上的第一非结构化数据直接或间接的操作(直接操作可以指由关系型数据库管理系统访问外部存储系统,获得第一操作结果,间接操作可以指由关系型数据库管理系统向第一用户的客户端或第一代理返回第一存储地址和登录信息,由第一用户的客户端、第一代理等利用第一存储地址和登录信息访问外部存储系统,获得第一操作结果),即将对非结构化数据的操作和对关系型数据库的操作绑定在了一起。
7.而在向第一用户的客户端、代理等使用访问认证信息的主体提供访问认证信息之前,关系型数据库管理系统会先判断第一用户是否有权限使用访问认证信息标识,只有在
第一用户有相应的权限时,才允许其对第一非结构化数据进行直接或间接的操作。从而,相当于利用关系型数据管理系统的权限管理功能强化了外部存储系统的权限管理功能,又由于关系型数据管理系统的权限管理相对而言更加完善,因此此举有利于提高对外部存储系统中的非结构化数据进行操作的安全性。
8.此外,该方法还可以避免用户为了操作非结构化数据去学习不同外部存储系统的权限控制机制,从而降低了用户的学习成本或者说降低了用户的技术门槛。
9.在第一方面的一种实现方式中,判断所述第一用户是否有权限使用所述访问认证信息标识,包括:判断所述第一用户是否有权限使用所述访问认证信息标识所对应的、所述数据库中存储有所述访问认证信息的至少部分数据表,若有权限使用所述至少部分数据表,则表明所述第一用户有权限使用所述访问认证信息标识,否则表明所述第一用户无权限使用所述访问认证信息标识;或者,判断所述第一用户是否有权限扮演所述访问认证信息标识所对应的角色,若有权限扮演所述角色,则表明所述第一用户有权限使用所述访问认证信息标识,否则表明所述第一用户无权限使用所述访问认证信息标识。
10.在上述实现方式中,关系型数据库管理系统对于访问认证信息标识的权限管理既可以实现为对于用户的权限管理,也可以实现为对于角色的权限管理,其方式十分灵活。
11.在第一方面的一种实现方式中,所述从所述数据库中根据所述访问认证信息标识查询所述访问认证信息,包括:从所述数据库中,查询所述访问认证信息标识所对应的所述访问认证信息;或者,从所述数据库中,查询所述访问认证信息标识和附加信息所对应的所述访问认证信息;其中,所述附加信息包括所述外部存储系统的系统标识和/或操作类型,所述系统标识根据所述第一存储地址确定,所述操作类型根据所述第一操作指令确定。
12.在上述实现方式中,既可以直接根据访问认证信息标识查询访问认证信息,也可以进一步结合附加信息来查询访问认证信息,实现访问认证信息标识和访问认证信息更灵活的对应关系。
13.在第一方面的一种实现方式中,所述从所述数据库中根据所述访问认证信息标识查询所述访问认证信息,包括:从所述数据库中,查询所述访问认证信息标识所对应的角色有权限访问的访问认证信息;或者,从所述数据库中,查询访问认证信息标识所对应的角色有权限访问的至少一个访问认证信息中与附加信息对应的访问认证信息;其中,所述附加信息包括所述外部存储系统的系统标识和/或操作类型,所述系统标识根据所述第一存储地址确定,所述操作类型根据所述第一操作指令确定。
14.在上述实现方式中,既可以直接根据访问认证信息标识对应的角色确定其有权限访问的访问认证信息,也可以进一步结合附加信息来确定访问认证信息,实现访问认证信息标识和访问认证信息更灵活的对应关系。
15.在第一方面的一种实现方式中,所述返回结果包括所述第一存储地址和所述登录信息,所述确定针对所述第一数据库操作指令的返回结果,包括:根据访问认证信息访问外部存储系统,得到所述外部存储系统返回的所述登录信息,所述登录信息包括所述外部存储系统的临时访问凭证。
16.在上述实现方式中,返回结果的登录信息中包括外部存储系统的临时访问凭证,从而第一进程或者第二进程可以直接利用临时访问凭证登录外部存储系统,不仅简化了第一进程或者第二进程的设计,而且使得第一进程或者第二进程不用自己去申请临时访问凭
证,从而避免了第一进程或者第二进程直接接触到访问认证信息,有利于提高数据操作的安全性。另外,临时访问凭证是一种临时性的而非永久性的凭证,因此利用临时访问凭证登录外部存储系统并进行数据操作更加安全。
17.在第一方面的一种实现方式中,所述返回结果包括所述第一操作结果,所述确定针对所述第一数据库操作指令的返回结果,包括:根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果。
18.在上述实现方式中,关系型数据库管理系统可以自行登录到外部存储系统,对第一非结构化数据进行操作,并从外部存储系统处获得第一非结构化数据的第一操作结果,从而第一进程或者第二进程无需自己登录外部存储系统去操作数据,因此简化了第一进程或者第二进程的设计,提高了数据操作的安全性。
19.在第一方面的一种实现方式中,所述第一操作指令为在所述关系型数据库管理系统中预先设置的用户自定义函数。
20.在上述实现方式中,第一操作指令实现为用户自定义函数,从而便于用户根据自身的需求定制不同的函数逻辑,极大地扩展了第一数据库操作指令的功能。
21.在第一方面的一种实现方式中,所述数据库中还存储有非结构化数据对应的结构化数据,所述方法还包括:从所述第一数据库操作指令中解析出针对所述第一非结构化数据对应的第一结构化数据进行操作的第二操作指令,所述第二操作指令中包括针对所述第一结构化数据的筛选条件;根据第二操作指令对所述数据库中存储的满足所述筛选条件的所述第一结构化数据执行对应的操作,得到第二操作结果;所述返回结果还包括:所述第二操作结果。
22.在第一方面的方法中,通过执行第一数据库操作指令,可以直接得到非结构化数据的操作结果,或者可以得到第一存储地址和外部存储系统的登录信息,相当于间接地得到非结构化数据的操作结果。而在上述实现方式中,根据第一数据库操作指令中的第二操作指令还能够操作关系型数据库中的结构化数据,得到结构化数据的操作结果,即,上述实现方式将对非结构化数据和结构化数据的操作方式在第一数据库操作指令中统一了起来,从而大大简化了数据操作的逻辑。
23.不过需要指出,第一数据库操作指令虽然支持操作结构化数据和非结构化数据,但并不代表每条数据库操作指令都会同时操作这两种数据,具体要操作哪种数据取决于作业中对数据的需求。
24.在第一方面的一种实现方式中,所述从所述数据库中查询所述第一存储地址,包括:将所述第一结构化数据对应的非结构化数据的存储地址确定为所述第一存储地址。
25.在上述实现方式中,将第一存储地址和第一结构化数据绑定在一起(第一存储地址本身也是一种结构化数据,从而可以和第一结构化数据一起存储于关系型数据库中),从而便于利用第一结构化数据的筛选条件对第一存储地址进行筛选(即对想要操作的第一结构化数据进行筛选)。
26.第二方面,本技术实施例提供一种数据操作方法,应用于第一用户的客户端对应的第一进程,所述方法包括:通过所述第一用户的客户端向关系型数据库管理系统直接发送或通过第一代理发送第一数据库操作指令;其中,所述第一数据库操作指令中包括针对
存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在所述关系型数据库管理系统的数据库中;通过所述第一用户的客户端接收所述关系型数据库管理系统直接发送或通过所述第一代理发送的针对所述第一数据库操作指令的返回结果;其中,所述返回结果包括所述第一存储地址和根据与所述访问认证信息标识对应的所述访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一非结构化数据执行所述第一操作指令对应的操作所得的得到的第一操作结果;或者,通过所述第一用户的客户端接收所述第一代理发送的、所述代理主动从所述外部存储系统获得的所述第一操作结果。
27.在上述方法中,第一用户的客户端或者通过关系型数据库管理系统得到外部存储系统的登录信息或第一非结构化数据的操作结果,或者通过代理得到外部存储系统的登录信息或第一非结构化数据的操作结果,由于代理实际上还是从数据库管理系统处获得外部存储系统的登录信息或第一非结构化数据的操作结果,所以本质上第一用户的客户端必须要通过关系型数据库管理系统才能够操作第一非结构化数据。
28.而如第一方面的方法所述,关系型数据库管理系统会对第一用户是否有权限使用访问认证信息标识进行验证,因此相当于利用关系型数据管理系统的权限管理功能强化了外部存储系统的权限管理功能,从而有利于提高对外部存储系统中的非结构化数据进行操作的安全性,并且还可以避免用户为了操作非结构化数据去学习不同外部存储系统的权限控制机制,从而降低了用户的学习成本或者说降低了用户的技术门槛。
29.在第二方面的一种实现方式中,所述登录信息用所述外部存储系统的第一密钥加密,或所述登录信息包括所述外部存储系统的临时访问凭证。
30.在上述实现方式中,登录信息或者通过加密,或者具有临时性,均有利于提高数据操作的安全性。
31.在第二方面的一种实现方式中,所述第一进程运行在创建于数据处理单元的运行环境中,所述方法还包括:将所述返回结果或所述第一代理主动从所述外部存储系统获得的所述第一操作结果发送给所述数据处理单元中的第二进程,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被所述第一进程调用的可调用作业。
32.在上述实现方式中,数据处理单元中还包括用于执行可调用作业的第二进程,在被调用时,第一进程可将执行可调用作业所需的数据或用于从外部存储系统获取这些数据的必要信息(如登录信息)传递给第二进程,第二进程自身无需直接访问关系型数据库管理系统。
33.在第二方面的一种实现方式中,所述返回结果包括所述第一存储地址和所述登录信息,所述方法还包括:根据所述登录信息直接访问或请求所述第一代理访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果。
34.在上述实现方式中,第一进程可能自己登录外部存储系统去操作第一非结构化数据,也可能请求代理登录外部存储系统去操作第一非结构化数据,其方式比较灵活。特别地,为提高数据操作的安全性,可能外部存储系统的登录信息经过加密,第一进程自身无法解密(即不允许第一进程直接操作非结构化数据),因此需要请求代理去解密并登录。
35.在第二方面的一种实现方式中,所述第一进程运行在创建于数据处理单元的运行环境中,所述方法还包括:将所述第一进程直接或请求所述第一代理从所述外部存储系统获得的所述第一操作结果发送给所述数据处理单元中的第二进程,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被所述第一进程调用的可调用作业。
36.在上述实现方式中,数据处理单元中还包括用于执行可调用作业的第二进程,第二进程自身无需直接访问关系型数据库管理系统,从而可以借助于第一进程来获得其所需的数据操作结果。
37.在第二方面的一种实现方式中,所述方法还包括:将所述第一操作结果存储于缓存中。
38.在上述实现方式中,第一进程可以对返回结果进行缓存,下次若再对同样的数据执行同样的操作,则可以直接从缓存中获取返回结果,无需再实际操作外部存储系统,此举有利于提高数据操作的效率。类似的,关系型数据库管理系统、第一代理、第二代理、第二进程都可以设置缓存。
39.第三方面,本技术实施例提供一种数据操作方法,应用于第一代理,所述方法包括:接收第一进程通过第一用户的客户端发送的第一数据库操作指令;其中,所述第一进程是所述第一用户的客户端所对应的进程,所述第一数据库操作指令中包括针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在关系型数据库管理系统的数据库中;向所述关系型数据库管理系统发送所述第一数据库操作指令;接收所述数据库管理系统发送的针对所述第一数据库操作指令的返回结果;其中,所述返回结果包括所述第一存储地址和根据与所述访问认证信息标识对应的所述访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一非结构化数据执行所述第一操作指令对应的操作得到的第一操作结果;将所述返回结果发送给所述第一用户的客户端,或者,若所述返回结果包括所述第一存储地址和所述登录信息,则根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果,并将所述第一代理主动从所述外部存储系统获得的所述第一操作结果发送给所述第一进程。
40.在上述方法中,第一代理的用途可分为两类:一类是作为第一用户的客户端和关系型数据库管理系统之间进行数据交互的中介,为二者的数据交互提供必要的支持;一类是自身去登录外部存储系统,获得第一非结构化数据的第一操作结果,并将第一操作结果返回给第一用户的客户端,避免第一进程直接登录外部存储系统,从而能够提高数据操作的安全性。
41.在第三方面的一种实现方式中,所述方法还包括:接收所述第一进程发送的针对所述外部存储系统的访问请求,所述访问请求中包括所述登录信息、所述第一存储地址和根据所述第一操作指令确定的第一代理操作指令;响应于所述第一进程发送的访问请求,根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一代理操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果;将所述第一代理应请求获得的所述第一操作结果发送给所述第一进程。
42.在上述实现方式中,第一代理可以应第一进程的请求登录外部存储系统,获得第一非结构化数据的第一操作结果,并将第一操作结果返回给第一用户的客户端,即避免了第一进程直接登录外部存储系统,从而能够提高数据操作的安全性。
43.在第三方面的一种实现方式中,所述登录信息用所述外部存储系统的第一密钥加密,所述方法还包括:用所述外部存储系统的对应于所述第一密钥的第二密钥解密所述登录信息,得到解密后的登录信息;所述根据所述登录信息访问所述外部存储系统,包括:根据所述解密后的登录信息访问所述外部存储系统。
44.在上述实现方式中,登录信息用外部存储系统的第一密钥加密(例如,外部存储系统的私钥),而第一进程无法对其进行解密(例如,不持有外部存储系统的公钥),因此也就无法使用该登录信息,必须将其发送给具有解密能力的第一代理(例如,持有外部存储系统的公钥)去解密登录信息,使用解密后的登录信息访问外部存储系统,并获得数据操作结果。此举相当于强制要求由第一代理来登录外部存储系统,从而有利于提高数据操作的安全性。
45.在第三方面的一种实现方式中,所述第一代理运行在所述进程所在容器的sidecar容器中。
46.在上述实现方式中,第一进程所在容器和其对应的sidecar容器是共享资源的,从而不仅节约了运行代理所需的资源,而且便于第一代理和第一进程之间进行数据交互。
47.第四方面,本技术实施例提供一种数据操作方法,应用于数据处理单元中的第二进程,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被第一进程调用的可调用作业,所述数据处理单元还包括第一用户的客户端对应的第一进程,所述方法包括:接收所述第一进程发送的针对第一数据库操作指令的返回结果;其中,所述第一数据库操作指令为关系型数据库管理系统执行的指令,所述第一数据库操作指令中包括针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在所述关系型数据库管理系统的数据库中;所述返回结果包括所述第一存储地址和根据与所述访问认证信息标识对应的访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一非结构化数据执行所述第一操作指令对应的操作得到的第一操作结果;若所述返回结果包括所述第一存储地址和所述登录信息,则根据所述登录信息直接访问或请求第二代理访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果。
48.在上述方法中,数据处理单元包括第一进程和第二进程,第二进程用于执行可调用作业,在可调用作业被第一进程调用时,第一进程可将执行可调用作业所需的数据或用于从外部存储系统获取这些数据的必要信息(如登录信息)传递给第二进程,第一进程获取执行可调用作业所需的数据或必要信息时,需要向关系型数据库管理系统发送第一数据库操作指令,相应地,关系型数据库管理系统需要先执行第一用户的客户端发送的第一数据库操作指令。由于第二进程自身无需直接访问关系型数据库管理系统,因此可提高数据操作的安全性。
49.进一步的,如第一方面的方法所述,关系型数据库管理系统在执行第一数据库操
作指令之前,会对第一用户是否有权限使用访问认证信息标识进行验证,因此相当于利用关系型数据管理系统的权限管理功能强化了外部存储系统的权限管理功能,从而有利于提高对外部存储系统中的非结构化数据进行操作的安全性,并且还可以避免用户为了操作非结构化数据去学习不同外部存储系统的权限控制机制,从而降低了用户的学习成本或者说降低了用户的技术门槛。
50.第五方面,本技术实施例提供一种数据操作方法,应用于第二代理,所述方法包括:接收第二进程发送的针对外部存储系统的访问请求;其中,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被所述数据处理单元的中的第一进程调用的可调用作业,所述访问请求中包括用于登录所述外部存储系统的登录信息、第一存储地址和根据第一操作指令确定的第二代理操作指令,所述第一操作指令为针对存储在所述外部存储系统中的第一非结构化数据的操作指令;响应于所述第二进程发送的访问请求,根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第二代理操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果;将所述第二代理应请求获得的所述第一操作结果发送给所述第二进程。在上述实现方式中,第二代理可以应第二进程的请求登录外部存储系统,获得第一非结构化数据的第一操作结果,并将第一操作结果返回给第二进程,即避免了第二进程直接登录外部存储系统,从而能够提高数据操作的安全性。
51.另一方面,本技术实施例还提供了与数据操作方法对应的数据操作装置。
52.再一方面,本技术实施例提供一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面、第二方面、第三方面、第四方面、第五方面或这五方面的任意一种可能的实现方式提供的方法。
53.再一方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面、第二方面、第三方面、第四方面、第五方面或这五方面的任意一种可能的实现方式提供的方法。
54.再一方面,本技术实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面、第二方面、第三方面、第四方面、第五方面或这五方面的任意一种可能的实现方式提供的方法。
附图说明
55.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
56.图1示出了本技术实施例提供的数据操作方法的第一种实现方式;
57.图2示出了本技术实施例提供的关系型数据库管理系统中可能存在的数据表;
58.图3示出了本技术实施例提供的数据操作方法的第二种实现方式;
59.图4示出了本技术实施例提供的数据操作方法的第三种实现方式;
60.图5示出了本技术实施例提供的数据操作方法的第四种实现方式;
61.图6示出了本技术实施例提供的数据操作方法的第五种实现方式;
62.图7示出了本技术实施例提供的数据操作方法的第六种实现方式;
63.图8示出了本技术实施例提供的电子设备的结构。
具体实施方式
64.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
65.术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
66.术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
67.在介绍本技术实施例提供的数据操作方法之前,先介绍该方法中可能涉及的几个组件,参照图1、3、4、5、6、7,分别是数据库客户端(db client,以下简称为“客户端”),客户端对应的第一进程,关系型数据库管理系统、用于存储非结构化数据的外部存储系统,可选的还包括用于运行可调用作业的第二进程以及代理(第一代理、第二代理),这些组件可以实现为软件模块,当然也可以采用硬件或者软件与硬件结合的方式实现。通常意义上的数据分为两类,一类是结构化数据,一类是非结构化数据。结构化数据一般是指可以用二维表进行逻辑表示的数据,非结构化数据则泛指结构化数据以外的数据形式,比如,学生的成绩表属于结构化数据,图像、语音、视频、文本、分子结构、基因序列、蛋白质序列等复杂数据属于非结构化数据。
68.其中,结构化数据可以存储在关系型数据库管理系统中,非结构化数据可以存储在关系型数据库管理系统之外的外部存储系统中,关系型数据库管理系统中还可以存储非结构化数据在外部存储系统中的存储地址和访问外部存储系统并操作非结构化数据所需的访问认证信息等,这些信息也属于结构化数据。
69.关系型数据库管理系统中包括数据库(关系型数据库),数据库中包括一张或多张二维的数据表,其中可以存储结构化数据。数据库操作指令可以、但不限于采用类结构化查询语言(structured query language,简称sql)语句来实现。
70.外部存储系统主要用于存储非结构化数据,外部存储系统既可以指为有效存储各类非结构化数据而专门开发的对象存储系统,例如亚马逊web服务(amazon web services,简称aws),阿里云等,也可以指某些通用的存储系统,例如文件系统。在外部存储系统中,每条非结构化数据对应有自己的存储地址(比如,对象存储系统中的objecturl),根据存储地址可以在外部存储系统中快速定位到对应的非结构化数据。
71.针对结构化数据或非结构化数据的数据操作需求产生后,需要向结构化数据存储
系统或外部存储系统发出数据操作指令。如前所述,结构化数据可以存储在关系型数据库管理系统中。因此,在结构化数据操作需求产生后,数据需求方可以向关系型数据库管理系统发送数据库操作指令,以获得结构化数据的数据操作结果。
72.虽然非结构化数据可以存储在关系型数据库之外的外部存储系统,但是非结构化数据在外部存储系统中的存储地址以及访问认证信息等可存储于关系型数据库管理系统中,因此,在非结构化数据操作需求产生后,为获得非结构化数据的数据操作结果,数据需求方也需要向关系型数据库管理系统发送数据库操作指令。也就是说,虽然关系型数据库管理系统原则上仅能对关系型数据库中的结构化数据进行操作,但这其中的部分结构化数据(例如,非结构化数据的存储地址、访问存储于外部存储系统的非结构化数据所需的访问认证信息等)是与操作非结构化数据有关的,从而根据这部分结构化数据,关系型数据库管理系统自身或者其他组件能够进一步对存储在外部存储系统中的非结构化数据进行操作,通过管控这部分结构化数据的使用权限,也就能够管控非结构化数据的操作权限,所以本技术中的数据库操作指令中可以包括针对非结构化数据的指令。这也是本技术的方案对传统关系型数据库管理系统的改进之一。
73.另外,出于计费需要等目的,经常需要对用户操作数据的行为进行监控,在现有技术中,由于操作结构化数据的是关系型数据管理系统用户(下文称为数据库用户),操作非结构化数据的是外部存储系统用户(例如,前面介绍的对象存储系统用户),且两类用户是相互独立的,因此需要同时监控两类用户的行为,其监控逻辑复杂。而在本发明实施例方法中,虽然仍然会涉及这两类用户,但由于外部存储系统用户对非结构化数据的操作权限(登录信息)是数据库用户提供的(第一操作指令是在数据库用户登录关系型数据库管理系统的情况下执行的),外部存储系统用户所执行的操作也是数据库用户决定的(与第一操作指令对应的操作),所以只需监控数据库用户的行为就相当于同时监控了外部存储系统用户的行为,不必再单独监控外部存储系统用户的行为,从而可以简化用户行为监控的逻辑,减轻监控负担。
74.客户端用于向关系型数据库管理系统发送数据库操作指令。也就是说,需要向关系型数据库管理系统发送数据库操作指令的主体(例如,下面提到的第一进程)中可以创建并调用数据库客户端,以向关系型数据库管理系统发送数据库操作指令。创建和/或调用数据库客户端的进程称为数据库客户端所对应的进程。
75.结构化数据或非结构化数据的数据操作需求可以来自于第一进程所对应的程序。
76.例如,用户通过第一进程所对应的程序中的交互界面提交查询图像所对应的查询特征向量,希望在候选特征向量库中检索与查询特征向量相似度较高的候选特征向量(产生向量这种结构化数据的近似查询需求),并返回候选特征向量对应的候选图像(产生非结构化数据的查询需求)。
77.第一进程对应的程序还可以是工程中的作业。此处的工程可以理解为某种业务,如人工智能(artificial intelligence,简称ai)业务,大数据分析业务等。此处的作业可以理解为工程下的某个任务,例如模型训练任务等。第一进程执行作业时,可能产生结构化数据或非结构化数据的增删改查等数据操作需求,根据数据操作结果可进一步执行作业。例如,为训练神经网络模型,需要获取训练图像(非结构化数据)和对应的标签(结构化数据),则产生的数据操作需求为查询。
78.作业包括一次性运行的作业(运行完成就结束),以及运行后处于可被调用状态的作业(也称为可调用作业或可调用服务)。可调用作业可以在数据处理单元(含义稍后说明)中运行,运行之后生成调用端口,可通过该调用端口被数据处理单元中的其他作业调用或被关系型数据库管理系统在调用用户自定义函数(user defined function,简称udf)时调用(该调用端口需要提前被注册为数据库管理系统中的用户自定义函数)。也就是说,可调用作业可被数据处理单元中运行的其他作业调用,也可被关系型数据库管理系统调用。作业可以用计算机程序语言编写并且可以被运行。作业是由进程执行的,该进程可创建于数据处理单元的作业运行环境(比如容器、虚拟机等,作业运行环境简称运行环境,将在后文详细阐述)中,可根据预先设置的作业所需的环境镜像构建作业对应的运行环境,并在运行环境中运行作业对应的进程,以执行作业。需要说明的是,可调用作业在运行时即构建其初始运行环境,在被调用时可根据被调用次数构建更多的运行环境、运行更多进程以并行处理多个调用请求,也可在被调用时不构建更多的运行环境,而是只使用初始运行环境中的进程处理调用请求。
79.对于一次性运行的作业,运行时执行作业的代码,例如,作业用python编写,运行时执行作业的python代码;对于可调用作业,通过调用端口监听到作业被调用时执行作业的代码,例如,作业用python编写,在处于运行状态时被调用了10次,每次被调用时执行一次作业的python代码。
80.通常情况下,调用方调用可调用作业对非结构化的待处理数据进行处理时,会传入待处理数据(例如是图片)或用于获得待处理数据的必要信息(例如,图片存储在外部存储系统,必要信息用于访问外部存储系统并获取图片),被调用的可调用作业执行完毕后,会将执行结果传回调用方。如前所述,调用前,调用方需要与关系型数据库管理系统交互,以获取待处理数据或必要信息,调用后,调用方需要对执行结果进行进一步处理(例如执行结果为结构化数据时,可写入关系型数据库管理系统等),因此调用方需要与关系型数据库管理系统进行交互,而可调用作业对应的进程无需与关系型数据库管理系统交互。
81.在作业执行时,可能产生结构化数据或非结构化数据的数据操作需求。例如,对于一次性运行的作业,数据需求可以是运行作业的进程产生的;又例如,对于可调用作业,其需要的数据是调用方提供的,其数据操作需求也可以认为是调用方进程产生的。
82.有数据操作需求的进程中需要创建客户端,用于向数据库管理系统发送数据库操作指令。可以理解的是,能够在其中创建数据库客户端的进程所在的运行环境中包含有关系型数据库的软件开发工具包(database software development kit,简称db sdk),例如,作业中的python代码在运行到sql语句时,调用该sdk创建客户端,创建好的客户端可向关系型数据库管理系统发送数据库操作指令。另外,可调用作业的运行环境也可安装有用于创建数据库客户端的db sdk,但作业执行时可以不创建数据库客户端。
83.后文中,将客户端所对应的进程称为第一进程,可调用作业对应的进程称为第二进程。第一进程可以创建于数据处理单元的作业运行环境中,也可以创建于独立于数据处理单元的运行环境中。当第一进程创建于数据处理单元的作业运行环境中时,第一进程调用运行于第一进程中的客户端向关系型数据库管理系统发送数据库操作指令;第一进程创建于独立于数据处理单元的运行环境中时,第一进程可以是浏览器或命令行工具所对应的进程,此时客户端可以是c++sdk等。第二进程创建于数据处理单元的作业运行环境中,第二
进程执行可调用作业。一个数据库客户端可以对应一个第一进程,执行一个可调用的作业的可以为一个或多个第二进程。
84.数据处理单元是一个可选组件(图中未示出),其可以包括一个或多个用于运行作业的环境,例如,每个运行环境可以实现为一个容器或虚拟机。数据处理单元中是否有第二进程也是可选的,如果不包含可调用的作业,则数据处理单元中也可以不设置第二进程,在图1、3、4、5、6、7的方法中,若第二进程是可选的,则以虚线示出,否则以实线示出。
85.关于数据处理单元中各个运行环境的创建,一个可能的过程如下:
86.根据预先指定的可调用作业对应的环境镜像创建其运行环境(该运行环境可不包含db sdk),在运行环境中启动第二进程并生成调用端口。根据预先指定的一次性作业对应的环境镜像创建一个包含db sdk的运行环境,此运行环境中启动一个第一进程,该第一进程用于运行该一次性作业的python代码,并在运行到包含sql语句的代码片段时创建数据库的客户端,通过客户端向关系型数据库管理系统发送sql指令,以获得运行可调用作业所需的数据操作结果(例如数据操作是对非结构化数据的查询操作,操作结果是非结构化数据),或者,用于获得数据操作结果的必要信息。在运行到包含对可调用作业进行调用的代码片段时,对可调用作业进行调用并向调用端口传入数据操作结果或获得数据操作结果的必要信息。可调用作业的调用端口接收调用请求以及数据操作结果或必要信息后,有多种处理方式,例如,用第二进程执行可调用作业对应的程序以对数据操作结果(即非结构化数据)进行处理;或者,用必要信息获取非结构化数据后对非结构化数据进行处理;或者,创建更多可调用作业的运行环境、在新创建的可调用作业的运行环境中启动更多第二进程,用更多第二进程和此前已经创建的第二进程共同执行可调用作业对应的程序以对数据操作结果或根据必要信息获得的数据操作结果进行处理(可视可调用作业的被调用次数确定可调用作业的运行环境的创建数量);处理完毕后,将处理结果传回一次性作业对应的第一进程进行后续处理。
87.显然,以上运行环境的创建过程仅为示例,不构成对本技术保护范围的限制。
88.代理是第一进程、第二进程和关系型数据库管理系统、外部存储系统之间的中介,为第一进程、第二进程和关系型数据库管理系统、外部存储系统之间的数据交互提供必要的支持。例如,在某些实现方式中,第一进程发送的数据库操作指令需要经代理中转给关系型数据库管理系统,关系型数据库管理系统发送的数据库操作指令对应的返回结果也需要经代理中转给第一进程。当然,代理并非一定只是作为数据的中转站,也可以实现更复杂的功能,例如,在某些实现方式中,可以由代理去操作外部存储系统中的非结构化数据。
89.设置代理可能有不同的原因:例如,数据库客户端和关系型数据库管理系统位于不同的网络环境中(比如,外网和内网),通过设置代理可以实现跨网络的数据传输。又例如,客户端多个,这些客户端都可以向关系型数据管理系统发送数据操作请求(内含数据库操作指令),通过设置代理可对这些请求进行统一管理或实现负载均衡。又例如,关系型数据库管理系统自己不操作非结构化数据,但也不希望第一进程、第二进程直接去操作非结构化数据,因为操作非结构化数据意味着需要将必要的信息(例如,外部存储系统的登录信息)提供给第一进程或第二进程,可能影响数据操作的安全性或增加第一进程、第二进程负担,此时可以设置代理去操作非结构化数据,并将数据操作结果返回给数据处理单元中的第一进程或第二进程,等等。
90.代理是一个可选的组件,在不设置代理时第一进程、第二进程可以直接和关系型数据库管理系统进行数据交互,在图1、3、4、5、6、7的方法中,若代理是可选的,则以虚线示出,若代理是必须的,则以实线示出。
91.代理和第一进程、第二进程的对应关系不限定,例如可以是每个第一进程、第二进程各自对应一个代理,也可以是多个第一进程、第二进程对应同一个代理,等等。与第一进程对应的代理,后文中统称为第一代理(可用于第一进程和关系型数据管理系统以及外部存储系统的交互),与第二进程对应的代理后文中统称为第二代理(可用于第二进程和外部存储系统的交互),当然第一代理和第二代理也有可能是同一个代理。
92.可选的,若运行环境为容器,则代理可以在进程所在容器的sidecar容器中运行,sidecar容器和运行进程的容器之间是资源共享的,从而此举不仅节约了运行代理所需的资源,而且便于代理和进程之间进行数据交互,例如,在代理和进程之间可以通过共享存储或本地网络进行数据交互。另外,sidecar容器和进程所在容器毕竟是两个容器,因此进程和代理在功能上还进行了良好的隔离。
93.对以上介绍的各个组件,若都采用软件方式实现,则其部署方式不限:例如,可以将它们部署到不同的服务器(或服务器集群)上;又例如,可以将第一进程、第二进程、代理以及数据库管理系统部署到同一台服务器(或服务器集群)上,外部存储系统则无需考虑如何部署(直接使用第三方产品),等等。
94.图1示出了本技术实施例提供的数据操作方法的第一种实现方式,该方法可以但不限于由图8中的电子设备执行,关于该电子设备可能的结构可以参考后文关于图8的阐述。参照图1,该方法包括:
95.步骤1.1:第一进程通过第一用户的客户端向关系型数据库管理系统发送第一数据库操作指令。
96.其中,第一用户的客户端可以是数据处理单元的运行环境中创建的任意一个客户端,也可以是独立于数据处理单元的数据库客户端,第一用户为使用第一进程所对应程序的用户,同时,第一用户也是关系型数据库的用户(非数据库用户显然不能使用数据库的客户端),或者也可以说是关系型数据库管理系统的用户。第一用户的客户端可以由第一进程创建。一旦产生了数据操作需求,第一进程可通过第一用户的客户端向关系型数据库管理系统发送数据库操作指令,第一数据库操作指令可以是其发送的任意一条数据库操作指令。
97.第一数据库操作指令由关系型数据库管理系统执行,而关系型数据库是用于存储结构化数据的,因此原则上第一数据库操作指令是用于对关系型数据库中存储的结构化数据进行操作的指令。然而,如前所述,关系型数据库中的部分结构化数据(例如,非结构化数据的存储地址、访问认证信息等)是与操作非结构化数据有关的,从而根据这部分结构化数据,关系型数据库管理系统自身或者其他组件能够进一步对非结构化数据进行操作,所以第一数据库操作指令实际上既支持操作关系型数据库中的结构化数据,也支持操作外部存储系统中的非结构化数据。或者说,对用户来说,将对非结构化数据和结构化数据的操作方式在第一数据库操作指令中统一了起来,从而大大简化了数据操作的逻辑。
98.不过需要指出,第一数据库操作指令虽然支持操作结构化数据和非结构化数据,但并不代表第一数据库操作指令一定会同时操作这两种数据,每条数据库操作指令具体要
操作哪种数据取决于当前的数据操作需求。
99.第一数据库操作指令在形式上可以是类sql语句(或者,也可以主体是sql语句,但还包含其他信息),但也不排除其他形式。例如,下面这条sql语句,就可以作为第一数据库操作指令:
100.select data_id,label,get_object(url,connection_name)
101.在该sql语句中,关键字select表示第一数据库操作指令的操作类型为查询,该条指令可以同时对结构化数据和非结构化数据进行查询,为便于后文的阐述,这里先结合图2,从总体上介绍一下该select语句的含义:
102.图2示出了本技术实施例提供的关系型数据库中可能存在的数据表。参照图2,关系型数据库中包括二维表test,用于记录训练图片对应的结构化数据,test表中的每条记录(即一行数据)对应外部存储系统中的一张训练图片,test表共有data_id、label、url三个字段,其意义如下:
103.data_id:训练图片的标识。
104.label:训练图片的标签。例如,训练一个用于目标分类的神经网络模型,标签可以是训练图片对应的真实目标类别。
105.url:训练图片在外部存储系统中的存储地址。
106.该select语句表示从关系型数据库中查询data_id和label字段下的所有数据(结构化数据),以及从外部存储系统中查询url字段下的所有存储地址对应的非结构化数据。关于该select语句的具体内容,将在后文详细说明,此处暂不展开。注意,上面的第一数据库操作指令进行了一定的简化,其中并未包含各个字段所属的数据表的信息。
107.步骤1.2:关系型数据库管理系统解析第一数据库操作指令,得到针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识。
108.第一数据库操作指令中至少包括第一操作指令和访问认证信息标识,这两项信息都可以从第一数据库操作指令中解析出来。例如,在第一数据库操作指令select data_id,label,get_object(url,connection_name)中,第一操作指令是指get_object,访问认证信息标识是指connection_name。
109.其中,第一操作指令是指第一数据库操作指令中针对于存储在外部存储系统中的第一非结构化数据的部分,第一非结构化数据即第一数据库操作指令欲操作的非结构化数据,第一非结构化数在外部存储系统中的存储地址称为第一存储地址,非结构化数据的存储地址是一种结构化数据,存储在关系型数据库中。
110.根据第一操作指令,关系型数据库管理系统可以对第一非结构化数据进行直接或间接的操作,其操作结果称为第一操作结果。所谓直接操作,可以指关系型数据库管理系统在执行第一操作指令的过程中自行访问外部存储系统,获得第一操作结果(图1示出的就是直接操作);所谓间接操作,可以指关系型数据库管理系统在执行第一操作指令后,只是获得了能够得到第一操作结果的必要信息,之后其他组件再根据这些必要信息访问外部存储系统,对非结构化数据进行操作,获得第一操作结果(图3、4、5、6、7示出的就是间接操作)。第一操作指令可进行的操作包括查询第一非结构化数据,删除第一非结构化数据,判断第一非结构化数据是否存在,获取第一非结构化数据的大小等,后文主要以查询为例。执行这些操作之前都需要先获得第一存储地址,然后对该地址处的数据执行相应的操作。
111.可选的,第一操作指令可以实现为关系型数据库管理系统中预先设置的用户自定义函数,不妨称为第一操作函数,用户可以根据自身的需求为第一操作函数定制不同的函数逻辑,从而极大地扩展第一数据库操作指令的功能。与第一操作指令可进行的操作相对应,第一操作函数也可以为对非结构化数据执行查询操作、删除、判断非结构化数据是否存在,获取非结构化数据的大小等的函数。并且,这些第一操作函数也并不一定要嵌入select语句中执行,例如也可以嵌入到delete、insert等其他类型的sql语句中。
112.应当理解,第一操作指令不一定要实现为关系型数据库管理系统中预置的用户自定义函数,例如也可能实现为关系型数据库的sdk中预置的函数(由sdk的开发者编写),或者不采用函数的形式实现,等等。
113.可理解的是,以第一操作指令为get_object(url,connection_name)为例,对应于直接操作,第一操作指令的返回结果可以为非结构化数据的url和非结构化数据本身;对应于间接操作,第一操作指令的返回结果可以为非结构化数据的url和能够获取非结构化数据的必要信息(例如非结构化数据所在外部存储系统的标识,登录非结构化数据所在外部存储系统的登录信息)。直接操作无需其他组件与外部存储系统进行额外的交互,但是某些第一数据库操作指令(如get object指令)对应的直接操作的结果包括非结构化数据,需要把非结构化数据传输给其他组件,消耗网络资源且占用数据库管理系统算力(对于drop_object等函数不用考虑这个问题);间接操作需要把必要信息传给其他组件,需考虑安全因素。
114.访问认证信息可以理解为为了访问外部存储系统中存储的第一非结构化数据所需的认证信息,其可以为用于登录外部存储系统的登录信息(例如登录外部存储系统所需的用户名密码、登录外部存储系统所需的token令牌),也可以为获取登录信息所需的信息。访问认证信息存储在关系型数据库中,因此相比于访问认证信息本身就是登录信息,访问认证信息为获取登录信息所需的信息时,安全性更强。访问认证信息标识可以理解为为获得访问认证信息所必须的一项信息,访问认证信息标识与访问认证信息之间具有对应关系(但不一定是一一对应关系),根据访问认证信息标识(只根据访问认证信息标识,或根据访问认证信息标识和其他信息)可以从关系型数据库中查询到其对应的访问认证信息。例如,当访问认证信息标识与访问认证信息一一对应时,访问认证信息标识可以理解为用于区分不同的访问认证信息的标记信息(如上文第一操作指令中的connection_name),此时通过访问认证信息标识可以直接从关系型数据库中查询得到其对应的访问认证信息。
115.访问认证信息标识可以是一项先验信息,即第一用户的客户端在发送第一数据库操作指令时已经获知的信息。例如,在发送第一数据库操作指令前,管理员为第一用户预先分配其有权限使用的访问认证信息标识并告知第一用户;再例如,在发送第一数据库操作指令前,第一用户在数据库中可查看其有权限使用的访问认证信息标识;再例如,第一用户知道其有权限使用的多个访问认证信息标识并在生成第一数据库操作指令的程序中设置了访问认证信息标识的使用规则:如果访问的是外部存储系统a,则在第一数据库操作指令中使用第一访问认证信息标识;如果访问的是外部存储系统b,则在第一数据库操作指令中使用第二访问认证信息标识等。
116.步骤1.3:关系型数据库管理系统判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则从数据库中查询访问认证信息标识对应
的访问认证信息和第一非结构化数据在外部存储系统中的第一存储地址。
117.在介绍步骤1.3的内容之前,先说明一下第一用户、访问认证信息标识、访问认证信息三者之间的关系,总结为以下四种方式:
118.1.第一用户
←→
访问认证信息标识
←→
访问认证信息
119.2.第一用户+附加信息
←→
访问认证信息标识
←→
访问认证信息
120.3.第一用户
←→
访问认证信息标识+附加信息
←→
访问认证信息
121.4.第一用户+附加信息1
←→
访问认证信息标识,访问认证信息标识+附加信息2
←→
访问认证信息
122.其中,第一用户(上述对应关系中的第一用户可以理解为第一用户的标识,如用户名、用户id等)与访问认证信息标识之间的对应关系是第一用户已知的(或者说是第一用户的客户端已知的),从而在生成第一数据库操作指令时,才能将访问认证信息标识嵌入到指令中,并在步骤1.2中被解析;访问认证信息标识与访问认证信息之间的对应关系则可以由关系型数据库管理系统进行维护,用于根据访问认证信息标识查询对应的访问认证信息。当然,关系型数据库也可以维护第一用户与访问认证信息标识之间的对应关系,例如用于判断第一用户是否有权限使用访问认证信息标识(存在对应关系则有权限,否则无权限)。下面具体说明:
123.方式1:第一用户与访问认证信息标识、访问认证信息标识与访问认证信息之间都是一一对应的。一旦第一用户确定了,第一用户(或者说是第一用户的客户端)所能选择的访问认证信息标识也就确定了,关系型数据库管理系统也能够根据访问认证信息标识直接查询到访问认证信息。
124.方式1的例子,比如:
125.user1
←→
connection1
←→
connection_info1
126.是一组合法的对应关系,其中,user1是第一用户的用户名,connection1是一个访问认证信息标识,connection_info1是一个访问认证信息。所谓“合法”,可以理解为第一用户user1有权限使用connection1,关系型数据库管理系统能够根据connection1查询到connection_info1。
127.若第一用户(或者说是第一用户的客户端)在第一数据库操作指令中嵌入的访问认证信息标识为connection2,则关系型数据库管理系统判断该访问认证信息标识第一用户是无权限使用的;或者,若关系型数据库中没有记录connection1对应的访问认证信息,则代表第一用户无权获取connection1对应的访问认证信息,等等。当然,就一般情况而言,关系型数据库管理系统在存储数据时应尽量避免存储的访问认证信息标识无法对应到任何访问认证信息的情况。
128.方式2:第一用户与访问认证信息标识不是一一对应的(而是一对多的),访问认证信息标识与访问认证信息之间是一一对应的,第一用户确定了以后,第一用户(或者说是第一用户的客户端)所能选择访问认证信息标识还不能确定,还需要结合额外的附加信息才能确定访问认证信息标识,而关系型数据库管理系统则能够根据访问认证信息标识直接查询到访问认证信息。
129.其中,附加信息有多种可选的取值,因此第一用户与访问认证信息标识之间是一对多关系。例如,附加信息可以包括、但不限于外部存储系统的系统标识和/或操作类型,系
统标识用于区分不同的外部存储系统,例如,标识“aws”表示aws系统,标识“aliyun”表示阿里云,等等,操作类型用于区分不同的数据操作,例如“get_object_type”表示查询、“drop_object_type”表示删除等等,即对于同一个用户,针对不同的外部存储系统和/或不同的操作类型,需要采用不同的访问认证信息标识。
130.相较于方式1,方式2对于第一用户(或者说是第一用户的客户端)提出了更高的要求,需要其清楚自身、附加信息和访问认证信息标识之间的对应关系,但同时也扩展了第一用户和访问认证信息标识之间的对应关系的灵活性。
131.一例中,根据附加信息选择使用哪个访问认证信息标识可以由用户编写体现选择规则的代码完成,例如用户设置选择规则为:
132.if附加信息1=a and附加信息2=b,则访问认证信息标识=connection1;
133.else访问认证信息标识=connection2。
134.方式2的例子,比如:
135.user1+aws
←→
connection1
←→
connection_info1
136.user1+aliyun
←→
connection2
←→
connection_info2
137.是两组合法的对应关系,其中,user1是第一用户的用户名,aws和aliyun是两个外部存储系统的系统标识,connection1和connection2是两个访问认证信息标识,connection_info1和connection_info2是两个访问认证信息。
138.若第一用户(或者说是第一用户的客户端)在第一数据库操作指令中嵌入的访问认证信息标识为connection3,则关系型数据库管理系统判断该访问认证信息标识第一用户是无权限使用的。
139.方式3:第一用户与访问认证信息标识是一一对应的,访问认证信息标识与访问认证信息之间不是一一对应的(而是一对多的),第一用户确定了以后,第一用户(或者说是第一用户的客户端)所能选择访问认证信息标识就确定了,但关系型数据库管理系统还需要结合额外的附加信息才能够根据访问认证信息标识查询到访问认证信息。
140.其中,附加信息有多种可选的取值,因此访问认证信息标识与访问认证信息之间是一对多关系。例如,附加信息可以包括、但不限于外部存储系统的系统标识和/或操作类型。另外注意,方式3中的附加信息和方式2中的附加信息可能是不同的信息,但为简单起见都将其称为附加信息:例如,方式2中的附加信息是系统标识,方式3中的附加信息是操作类型;或者,方式2中的附加信息是操作类型,方式3中的附加信息是系统标识;或者,方式2中的附加信息是权限等级,方式3中的附加信息是系统标识和操作类型,等等。
141.相较于方式1,方式3要求关系型数据库管理系统维护更多的信息,即需要维护访问认证信息标识、附加信息和访问认证信息之间的对应关系,但同时也扩展了访问认证信息标识和访问认证信息之间的对应关系的灵活性。
142.方式3的例子,比如:
143.user1
←→
connection1+aws
←→
connection_info1
144.user1
←→
connection1+aliyun
←→
connection_info2
145.是两组合法的对应关系,其中,user1是第一用户的用户名,connection1是一个访问认证信息标识,aws和aliyun是两个外部存储系统的系统标识,connection_info1和connection_info2是两个访问认证信息。
146.若第一用户(或者说是第一用户的客户端)在第一数据库操作指令中嵌入的访问认证信息标识为connection2,则该访问认证信息标识第一用户是无权限使用的;或者,若关系型数据库中没有记录connection1结合aws对应的访问认证信息,则代表第一用户无权获取connection_info1(即无权限对aws上的数据进行操作),等等。
147.方式4:第一用户与访问认证信息标识不是一一对应的(而是一对多的),访问认证信息标识与访问认证信息之间也不是一一对应的(而是一对多的),第一用户确定了以后,第一用户(或者说是第一用户的客户端)所能选择访问认证信息标识还不能确定,还需要结合额外的附加信息才能确定访问认证信息标识,访问认证信息标识确定以后访问认证信息还不能确定,关系型数据库管理系统还需要结合额外的附加信息才能够根据访问认证信息标识查询到访问认证信息。可理解的是,确定访问认证信息标识和查询到访问认证信息时使用的附加信息可以是不同的附加信息,例如确定访问认证信息标识时使用的附加信息是外部存储系统的系统标识,查询到访问认证信息时使用的附加信息是操作类型。
148.其中,附加信息有多种可选的取值,因此第一用户与访问认证信息标识之间是一对多关系。例如,附加信息可以包括、但不限于外部存储系统的系统标识和/或操作类型。另外注意,方式4中出现两处附加信息可能是不同的信息,但为简单起见都将其称为附加信息。
149.相较于方式1,方式4对于第一用户(或者说是第一用户的客户端)提出了更高的要求,需要其清楚自身、附加信息和访问认证信息标识之间的对应关系,并且要求关系型数据库管理系统也要维护更多的信息,即需要维护访问认证信息标识、附加信息和访问认证信息之间的对应关系,但同时也扩展了第一用户和访问认证信息标识之间、访问认证信息标识与访问认证信息之间的对应关系的灵活性。
150.和方式2类似的,根据附加信息选择使用哪个访问认证信息标识可以由用户编写体现选择规则的代码完成,例如用户设置选择规则为:
151.if附加信息1=a,则访问认证信息标识=connection1;
152.else访问认证信息标识=connection2。
153.方式4的例子,比如:
154.user1+aws
←→
connection1;connection1+get_object_type
←→
connection_info1
155.user1+drop_object_type
←→
connection2;connection2+aws
←→
connection_info2
156.user1+aliyun
←→
connection3;connection3+get_object_type
←→
connection_info3
157.user1+drop_object_type
←→
connection4;connection4+aliyun
←→
connection_info4
158.是四组合法的对应关系,其中,user1是第一用户的用户名,aws和aliyun是两个外部存储系统的系统标识,get_object_type和drop_object_type是两个操作类型,connection1、connection2、connection3、connection4是四个访问认证信息标识,connection_info1、connection_info2、connection_info3、connection_info4是四个访问认证信息。
159.若第一用户(或者说是第一用户的客户端)在第一数据库操作指令中嵌入的访问认证信息标识为connection5,则该访问认证信息标识第一用户是无权限使用的;或者,若关系型数据库中没有记录connection1结合get_object_type对应的访问认证信息,则代表第一用户无权获取connection_info1(即不能执行aws系统下的查询操作),等等。
160.根据对方式1~4的介绍可以看出,之所以引入“访问认证信息标识”,而不是直接维护第一用户与访问认证信息的对应关系,是因为这样可以将第一用户与访问认证信息标识的对应关系、访问认证信息标识和访问认证信息的对应关系解耦,使得权限管控方式更为灵活便利。
161.在步骤1.3中,先判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则可以继续执行步骤1.3中从数据库中查询访问认证信息标识对应的访问认证信息,以及从数据库中查询第一非结构化数据在外部存储系统中的第一存储地址的步骤(这两个查询步骤的执行先后顺序不限),若第一用户没有权限使用访问认证信息标识,则关系型数据库管理系统可以向第一用户的客户端返回相应的提示信息。下面介绍判断第一用户是否有权限使用访问认证信息标识的两种方式,但也不排除还存在其他的判断方式:
162.方式a:利用关系型数据库管理系统的基于用户的权限管理
163.判断第一用户是否有权限使用访问认证信息标识所对应的、关系型数据库中存储有访问认证信息的至少部分数据表(可以指与访问认证信息标识对应的行和/或列,同时也是访问认证信息所在的行和/或列),若第一用户有权限使用该至少部分数据表,则表明第一用户有权限使用访问认证信息标识,否则表明第一用户无权限使用访问认证信息标识。例如,若关系型数据库管理系统维护有第一用户和访问认证信息标识的对应关系,则可以进行方式a中的判断(有对应关系则表明有权限使用访问认证信息标识所对应的至少部分数据表)。
164.进一步的,在方式a下,一旦确定第一用户有权限使用该至少部分数据表,则关系型数据库管理系统或者从数据库中查询与访问认证信息标识对应的访问认证信息(前文方式1、方式2),或者,从关系型数据库中查询与访问认证信息标识和附加信息对应的访问认证信息(前文方式3、方式4)。
165.此处的附加信息可以包括,但不限于外部存储系统的系统标识和/或操作类型。其中,外部存储系统的系统标识可以根据第一存储地址确定(此时,在步骤1.3中,查询第一存储地址的步骤需要先执行,以获得第一存储地址),例如,第一存储地址的形式可以是“http://aws/...”,则通过解析第一存储地址就可以确定系统标识为aws(第一存储地址可能包含多条,任意解析一条即可),当然也不排除其他确定系统标识的方式。操作类型则可以通过第一数据库操作指令确定,例如,根据第一操作指令get_object,可以确定操作类型为get_object_type,当然也不排除其他确定操作类型的方式。
166.例如,对于方式1和方式2,根据访问认证信息标识connection1,可以查询到第一用户要获取的访问认证信息connection_info1。比如,可以将访问认证信息标识和访问认证信息存储在关系型数据库的数据表中,比如图2中的connection表a,其中connection_name字段代表访问认证信息标识,访问认证信息标识对应有访问认证信息,从而根据connection_name1查询connection表a就可以直接得到connection_info1。
167.又例如,对于方式3和方式4,结合访问认证信息标识connection1与附加信息,可以查询到第一用户要获取的访问认证信息connection_info1。比如,可以将访问认证信息标识、附加信息和访问认证信息存储在关系型数据库的数据表中,比如图2中的connection表b,其中connection_name字段代表访问认证信息标识,provider字段代表系统标识,connection_info字段代表访问认证信息,从而根据connection_name1和provider1查询connection表b就可以直接得到connection_info1。
168.方式b:利用关系型数据库管理系统的基于角色的权限管理
169.判断第一用户是否有权限扮演访问认证信息标识所对应的角色(此时的访问认证信息标识可以就是角色标识,代表角色;也可以根据访问认证信息标识找到对应的角色标识),若第一用户有权限扮演角色,则表明第一用户有权限使用访问认证信息标识,否则表明第一用户无权限使用访问认证信息标识。例如,若关系型数据库管理系统维护有第一用户和访问认证信息标识的对应关系(参照方式1~4中第一用户和访问认证信息标识的对应关系),则可以进行方式b中的判断(有对应关系则表明有权限使用访问认证信息标识所对应的角色)。
170.其中,角色可以认为是关系型数据管理系统创建的具有特定权限的虚拟用户,数据库的实际用户通过扮演角色可以获得该角色所具有的权限。关于角色的更多内容,可以参照后文中关于对象存储系统中的角色的介绍,对象存储系统在角色机制上和关系型数据库管理系统有类似之处。
171.进一步的,在方式b下,一旦确定第一用户有权限扮演访问认证信息标识所对应的角色,则关系型数据库管理系统或者从数据库中查询访问认证信息标识对应的角色有权限访问的访问认证信息(前文方式1、方式2);或者,从关系型数据库中查询访问认证信息标识对应的角色有权限访问的至少一个访问认证信息中与附加信息对应的访问认证信息(前文方式3、方式4)。
172.此处的附加信息可以包括,但不限于外部存储系统的系统标识和/或操作类型。其中,外部存储系统的系统标识可以根据第一存储地址确定,操作类型则可以通过第一数据库操作指令确定,具体可参考方式a中的例子。
173.例如,对于方式1,若connection1代表角色1,角色1仅有权访问connection_info1,从而可以直接查询到第一用户要获取的访问认证信息connection_info1。又例如,对于方式3,若connection1代表角色1,角色1有权访问connection_info1和connection_info2,进一步结合附加信息aws,可以查询到第一用户要实际要获取的访问认证信息connection_info1。若将图2的connection表a、connection表b中的connection_name理解为角色标识,则connection表a、connection表也可以用于这两个例子中访问认证信息的查询。
174.若第一操作指令实现为第一操作函数,则步骤1.3中的权限判断可以实现为函数逻辑的一部分,例如,将connection_name作为参数传入get_object,在get_object内部判断第一用户是否有权限使用connection_name。或者,也可以不实现为函数逻辑的一部分,例如,先判断第一用户是否有权限使用connection_name,如果有权限,才将connection_name作为参数传入get_object执行后续步骤。
175.对于第一非结构化数据的第一存储地址如何查询,可以在第一操作指令指明:一
种是无条件查询,例如,在get_object(url,connection_name)中,url是test表中的字段名称,表示把该字段下的所有url都查询出来,即当前要操作该字段下的所有存储地址对应的非结构化数据;一种是有条件查询,即根据针对第一存储地址的某些筛选条件去查询,例如,若第一数据库操作指令为select data_id,label,get_object(url,connection_name)where data_id=1000,则表示只查询url字段在data_id=1000(筛选条件)这一行的存储地址作为第一存储地址。关于有条件查询,后文介绍结构化数据的操作时还会进一步说明。
176.若第一操作指令实现为第一操作函数,则步骤1.3可以实现为函数逻辑的一部分。例如,将connection_name和url作为get_object的参数,在get_object中查询数据库,从connection表a或connection表b中获取connection_name对应的访问认证信息,从test表中获取url字段中的所有值作为第一存储地址。
177.当然,步骤1.3也存在其他实现方式,例如,先从test表中获取url字段中的所有值,然后将connection_name和获取到的所有存储地址作为get_object的参数,等等。
178.步骤1.4:关系型数据库管理系统根据外部存储系统的登录信息访问外部存储系统,对第一存储地址处的第一非结构化数据执行第一操作指令对应的操作,得到第一操作结果。
179.其中,外部存储系统的登录信息用于登录外部系统,登录信息的具体内容可以由关系型数据库管理系统根据访问认证信息的具体内容确定,比如:
180.方式a
181.根据访问认证信息直接就能得到登录信息。例如,访问认证信息包括外部存储系统的用户名、密码,或者登录外部存储系统所需的令牌,此时访问认证信息本身就是登录信息,凭借访问认证信息本身就可以登录外部存储系统进行非结构化数据的操作。
182.方式b
183.用访问认证信息本身不能登录外部存储系统进行非结构化数据的操作,在执行步骤1.4之前,需要根据访问认证信息访问外部存储系统,才能得到登录信息,进而用登录外部存储系统进行非结构化数据的操作。关系型数据库管理系统可以根据访问认证信息访问外部存储系统,得到外部存储系统返回的登录信息,登录信息例如包括外部存储系统的临时访问凭证,关系型数据库管理系统可以进一步利用该临时访问凭证登录外部存储系统。其中,临时访问凭证是一种临时性的而非永久性的凭证,因此利用临时访问凭证登录外部存储系统并进行数据操作更加安全。
184.可理解的是,临时访问凭证通常具有有效期,可将临时访问凭证缓存于关系型数据库管理系统,到期后删除,以避免有效期内用同样访问认证信息从外部存储读取数据的时候需要都需要去获取临时访问凭证。
185.当然确定登录信息不限于以上两种方式。下面以外部存储系统是对象存储系统的情况为例,对方式b作进一步说明:
186.若访问认证信息包括角色标识(arn),则关系型数据库管理系统根据访问认证信息访问外部存储系统,得到外部存储系统返回的登录信息(临时访问凭证)的步骤可以包括:关系型数据库管理系统可以利用访问认证信息调用对象存储系统中的角色扮演函数,获得对象存储系统的临时访问凭证。
187.其中,角色扮演函数对应于对象存储系统中的角色机制,下面简单介绍角色机制
以及在角色机制下获取临时访问凭证的过程。
188.某些对象存储系统提供角色机制来对用户操作数据的权限进行管控。对象存储系统中的身份至少有以下几类:
189.账户:类似于操作系统中的根用户(root)的概念,是对象存储系统中的资源归属、资源计费的基本单位。例如,公司a购买了亚马逊的aws,则公司a拥有一个aws账户,下辖公司a的所有资源,包括带宽资源、存储资源等。
190.用户:是一种实体身份类型,由账户创建,用户虽然并不拥有资源,但却可以在账户的授权下使用账户所拥有的资源,例如,操作对象存储系统中属于账户的非结构化数据。一个账户下可以创建多个用户,例如,公司a的账户可以为公司a的每个员工都创建一个用户,当然,用户对应的实体并不一定是人,也有可能是应用程序等。每个用户有可以拥有自己的身份认证信息,例如,包括访问密钥access key和/或登录密码secret)。注意,在本技术的方案中,账户执行的操作(例如创建、授权)可以理解为账户管理员(人或程序)在账户的控制台执行的操作,后文不再特别说明。
191.用户组:可以视为具有某种共同属性的用户的集合。在本技术的方案中,为简单起见,在提到用户时,既可以指单个用户,也可以指用户组。
192.角色:是一种虚拟用户,由账户创建,可供实际用户扮演,扮演角色的用户将获得角色所具有使用资源的权限。创建角色的账户称为称信任账户,而扮演角色的用户称为可信用户,可信用户所属的账户称为可信账户,信任账户和可信账户可以是同一个账户,也可以是不同的账户。例如,公司a的一些数据想分享给其他公司使用,则公司a的账户可以为其他每个公司创建一个具有数据访问权限的用户,但这样一来可能会创建很多用户,并且这些用户对应的实体并非公司a的员工,管理上十分不便。另一种做法是,公司a的账户创建一个具有数据访问权限的角色,其他公司的用户欲访问数据,只需扮演该角色即可。所谓扮演角色,实际上是指由可信用户调用对象存储系统提供的角色扮演函数(例如aws的assumerole,可以是普通函数,也可以是接口),调用成功后可信用户将成为对应的角色。可信账户中的一个用户要成为可信用户是需要授权的,否则无权调用角色扮演函数。例如,一种授权方式是,信任账户创建角色时,直接授权可信账户中的用户可以扮演角色;另一种授权方式是,信任账户创建角色时,授权可信账户可以扮演角色,再由可信账户进一步授权其下属的某些用户可以扮演角色。
193.具体到本技术的方案,角色可以是对非结构化数据具有操作权限的虚拟用户,而可信用户则可以被配置为期望操作非结构化数据的可信账户下的用户。
194.到这里为止,本技术的方案中出现了两种用户,一种是关系型数据库的用户(简称数据库用户,例如上面的第一用户),一种是对象存储系统的用户(简称对象存储系统用户,例如上面角色机制中的可信用户),凡是与对象存储系统相关的操作(例如,调用角色扮演函数、操作非结构化数据),可以认为是由对象存储系统用户完成的,而与关系型数据库相关的操作则可以认为是由数据库用户完成的,同一实体(例如,关系型数据库管理系统)在执行不同的操作时,可以认为属于不同的用户。
195.在对象存储系统采用角色机制时,有些情况下,利用访问认证信息即可获取临时访问凭证;有些情况下,除了上文提及的存储于关系型数据库中的访问认证信息,还需要借助其他信息(例如,身份认证信息)才能获取临时访问凭证,此时,关系型数据库管理系统根
据访问认证信息访问外部存储系统,得到外部存储系统返回的登录信息(临时访问凭证)的步骤可以进一步包括:
196.步骤a:关系型数据库管理系统获取可信用户的身份认证信息。
197.根据前文可知,只有可信用户有权调用角色扮演函数,因此可信用户的身份认证信息可供对象存储系统验证调用者是否确实为可信用户,从而决定是否允许调用者扮演角色。这里的可信用户就是指数据库管理系统在对象存储系统中对应的用户。
198.可信用户的身份认证信息可以保存在数据库中,或者,可信用户的身份认证信息也可以保存在数据处理单元中,关系型数据库管理系统在需要身份认证信息时,可以从数据处理单元处获得该信息,此种做法安全性更高。例如,在数据处理单元中的运行环境采用容器实现时,可信用户的身份认证信息可以保存在容器管理系统(例如,kubernetes)的机密存储(secret)中,在关系型数据库管理系统启动后,数据处理单元将包含身份认证信息的配置文件放到pod中,从而关系型数据库管理系统也能够访问该配置文件,进而得到身份认证信息。
199.无论可信用户的身份认证信息保存在什么位置,都有多种方式去获取:例如,身份认证信息可能与访问认证信息标识一一对应,从而可以根据访问认证信息标识去查询身份认证信息;又例如,数据库用户和可信用户(外部存储系统用户)是一一对应的,可以根据当前的数据库用户去查询可信用户的身份认证信息;又例如,还可以通过第一存储地址、外部存储系统的系统标识、操作类型等其他信息去查询身份认证信息,等等。
200.步骤b:关系型数据库管理系统调用对象存储系统中的角色扮演函数,获得临时访问凭证。
201.角色扮演函数的输入包括访问认证信息(例如包括角色的标识arn,还可以包括外部标识external_id、临时访问凭证的有效期duration、系统标识provider等)和身份认证信息,输出则包括临时访问凭证,关系型数据库管理系统获得临时访问凭证表示其代表的可信用户已经成功扮演角色。其中,角色的标识属于访问认证信息中的一项,该项信息用于区分不同的角色。从而,在步骤1.3中获取到访问认证信息后,基于访问认证信息可完成对角色扮演函数的调用。应当理解,在访问认证信息的不同实现方式中,访问认证信息中可包含外部标识external_id、临时访问凭证的有效期duration、系统标识provider中一项或多项,也可能全都不包含。
202.注意,在步骤1.3的方式2中,曾提到结合访问认证信息标识和provider确定对应的访问认证信息,方式2的provider和访问认证信息中provider含义相同,但方式2中的provider不属于访问认证信息,而可以是一项先验信息。
203.可以理解的是,在一些具体实施方式中,如果根据访问认证信息访问外部存储系统、得到外部存储系统返回的登录信息的主体不是关系型数据库管理系统,而是其他主体,步骤a和步骤b相应的也由其他主体完成。
204.可选的,在对象存储系统中的角色创建和权限设置完成后,包含角色的标识的访问认证信息被创建、并与对应的访问认证信息标识关联保存至关系型数据库管理系统中。例如,在图2中,包含arn的访问认证信息与connection_name被关联保存至connection表a中,从而后续根据connection_name可以快速查找到访问认证信息,进而快速完成角色扮演。
205.在步骤a~b中,利用对象存储系统提供的角色机制来对用户操作非结构化数据的权限进行管控,使得对用户的授权管理更加简单灵活。例如,信任账户可以只创建少量具有数据操作权限的角色,可信账户下的可信用户在期望操作非结构化数据时,只需请求扮演这些角色即可获得角色具有的权限,信任账户无需再为每个可信用户单独配置数据操作权限。
206.获得外部存储系统的登录信息(用户名密码、令牌或临时访问凭证等)后,关系型数据库管理系统相当于得到了操作第一非结构化数据的权限,而在步骤1.3中又获得了第一非结构化数据的第一存储地址,从而在步骤1.4中,关系型数据库管理系统可以登录到外部存储系统中执行第一操作指令对应的操作,并获得外部存储系统返回的第一操作结果。注意,由于第一操作指令是关系型数据库管理系统执行的,外部存储系统执行的并不是第一操作指令本身,只是“第一操作指令对应的操作”,例如,第一操作指令是针对第一非结构化数据的查询指令,则外部存储系统执行的也是第一非结构化数据的查询操作。
207.在一种实现方式中,外部存储系统中提供对象操作函数,关系型数据库管理系统通过调用对象操作函数可以完成登录外部存储系统和操作第一非结构化数据这两项行为。其中,对象操作函数可以是普通函数,也可以是接口。对象操作函数与第一操作指令具有对应关系,二者都代表同一种数据操作,例如,第一操作函数是get_object,代表数据查询操作,对象操作函数则为getobject,也代表数据查询操作,且二者查询的对象都是第一存储地址处的第一非结构化数据。当然,在第一操作函数改变时,对象操作函数也会相应的改变。
208.对象操作函数的输入可以包括登录信息和第一存储地址,对象操作函数的输出包括第一非结构化数据操作结果,即第一操作结果。应当理解,对第一非结构化数据进行不同的操作,所得到的第一操作结果也具有不同的形式:例如,若对第一非结构化数据执行查询操作,则第一操作结果是查询出的第一非结构化数据;又例如,若对第一非结构化数据执行删除操作,则第一操作结果可能只是一个表示删除是否成功的标志,而非被删除的数据。
209.可选的,关系型数据库管理系统在调用对象操作函数时,应调用与访问认证信息中的系统标识相对应的外部存储系统中的对象操作函数。
210.可选的,关系型数据库管理系统也可以先登录外部存储系统,再调用对象操作函数,此时的对象操作函数的输入可以只包括非结构化数据的存储地址,即只执行操作第一非结构化数据这项行为。
211.若第一操作指令实现为第一操作函数,则步骤1.4可以实现为函数逻辑的一部分,例如,在get_object中根据登录信息和第一存储地址调用getobject,获得getobject返回的第一操作结果,同时第一操作结果也可以作为第一操作函数的返回值。
212.步骤1.5:关系型数据库管理系统向第一用户的客户端发送第一数据库操作指令对应的返回结果。
213.其中,步骤1.3~1.4可以认为是数据库管理系统执行第一数据库操作指令的过程,步骤1.4的输出为第一数据库操作指令对应的返回结果,在图1中,该返回结果包括第一操作结果。
214.由于非结构化数据的数据量可能较大(例如,非结构化数据可能是音频、视频、图像),因此第一操作结果的数据量也可能较大(例如,对于查询操作),从而可选的,关系型数
据库管理系统可以将第一操作结果存储在缓存中,下次若再对同样的数据执行同样的操作,则可以直接从缓存中获取返回结果,无需再实际登录外部存储系统并操作非结构化数据,此举有利于提高数据操作的效率。类似的,第一进程、代理、第二进程都可以设置缓存,用于缓存第一操作结果,后文不再专门介绍。
215.步骤1.6:第一进程向第二进程发送返回结果。
216.步骤1.6中的返回结果就是第一用户的客户端在步骤1.5中接收到的返回结果(第一用户的客户端属于第一进程)。步骤1.6是可选的,例如,若第一进程没有调用可调用作业,则不需要执行步骤1.6。
217.数据操作的需求方在获得了第一操作结果后,可以继续运行作业。例如,第一用户的客户端对应的第一进程通过第一用户的客户端获得了第一操作结果后,可继续运行作业,在继续运行作业的过程中调用可调用作业对应的服务,将第一操作结果(例如查询操作得到的非结构化数据)作为输入传入执行可调用作业的第二进程,第二进程接收到了调用请求和待处理的非结构化数据,开始执行可调用作业。此时,第二进程可理解为数据的最终使用方。
218.简单总结图1中的方法,在该方法中,关系型数据库管理系统根据从数据库中得到的访问认证信息和第一存储地址来实现对第一非结构化数据的操作,即将对非结构化数据的操作和对数据库的操作绑定在了一起。
219.而在从数据库中查询访问认证信息之前,关系型数据库管理系统会先判断第一用户是否有权限使用访问认证信息标识,只有在第一用户有相应的权限时,才允许其获得访问认证信息标识对应的访问认证信息,从而基于访问认证信息对应的外部存储系统的登录信息对第一非结构化数据进行操作。从而,相当于利用关系型数据库管理系统完善的权限管理功能强化了外部存储系统的权限管理功能,又由于关系型数据的权限管理相对而言更加完善,此举有利于提高对外部存储系统中的非结构化数据进行操作的安全性。
220.进一步的,在图1的方法中,关系型数据库管理系统可以自行登录到外部存储系统,对第一非结构化数据进行操作,并从外部存储系统处获得第一非结构化数据的第一操作结果,从而第一进程无需自己登录外部存储系统去操作数据,因此简化了第一进程的设计。用户只需编写程序与关系型数据库管理系统进行交互、无需关心外部存储系统所使用的权限认证方式,减少了用户的学习成本。同时,第一进程不会获取到访问认证信息或登录信息,进一步提高了数据操作的安全性。
221.下面,在以上实施例的基础上,继续介绍关系型数据库管理系统根据第一数据库操作指令操作结构化数据的步骤:
222.首先,关系型数据库管理系统从第一数据库操作指令中解析出针对第一结构化数据进行操作的第二操作指令,第一结构化数据即第一数据库操作指令欲操作的结构化数据,第一结构化数据存储在关系型数据库中。然后,关系型数据库管理系统通过执行第二操作指令,对第一结构化数据执行对应的操作,得到第二操作结果,第二操作结果可以作为步骤1.5中的第一数据库操作指令的返回结果的一部分,发送给第一用户的客户端,并且还可以在步骤1.6中由第一用户的客户端对应的第一进程进一步发送给第二进程。
223.例如,在第一数据库操作指令select data_id,label,get_object(url,connection_name)中,第二操作指令可以指select data_id,label。其中,test表中data_
id和label字段下的所有数据为第一结构化数据,第二操作指令的内容是将这些数据从test表中查询出来作为第二操作结果。
224.注意,这里并没有将url的查询(见步骤1.3)视为操作结构化数据,因为url字段下的结构化数据比较特殊,它们只是非结构化数据的存储地址,或者说是为了操作非结构化数据的中间结果,往往并非是作业中直接要使用的结构化数据,并且在上面的select语句中也没有显式地查询url。当然,如果作业中确实会使用url,将其视为普通的结构化数据也是可以的。
225.在上面的例子中,对于第一结构化数据的查询属于无条件查询,即查询出data_id和label字段下的所有数据。可选的,在第二操作指令中也可以包括筛选条件,该筛选条件用于从关系型数据库的结构化数据中筛选出第一结构化数据,并对其进行操作。例如,若第一数据库操作指令为select data_id,label,get_object(url,connection_name)where data_id=1000,则第二操作指令可以是select data_id,label where data_id=1000,其中data_id=1000为筛选条件,表示只查询test表中data_id=1000所在行的data_id和label。
226.可选的,关系型数据库中的结构化数据和外部存储系统中的非结构化数据之间可以具有对应关系,这种对应关系可以根据数据之间的逻辑关系建立,例如,test表中的每条记录(包括训练图片的标识、训练图片的标签、训练图片的存储地址)对应外部存储系统中的一张训练图片。从而,在第一数据库操作指令中可以对具有对应关系的第一非结构化数据和第一结构化数据同时进行操作,以简化数据操作过程,提高数据操作效率。
227.例如,若第一数据库操作指令为select data_id,label,get_object(url,connection_name)where data_id=1000,则第一非结构化数据为data_id=1000的训练图片,第一结构化数据为data_id=1000的data_id和label,这三项数据相互关联,可以通过一个select语句同时进行查询。
228.为实现结构化数据和非结构化数据的对应,在关系型数据库管理系统中可以将非结构化数据的存储地址和结构化数据关联保存,由于非结构化数据的存储地址和非结构化数据之间是一一对应关系,从而结构化数据和非结构化数据的对应关系也就建立了。
229.此时在步骤1.3中,可以直接将第一结构化数据对应的非结构化数据的存储地址确定为第一存储地址,而第一结构化数据则可以根据第二操作指令确定。例如,根据筛选条件data_id=1000可以筛选出第一结构化数据(data_id=1000的data_id和label),第一结构化数据对应的存储地址(data_id=1000的url)就是第一存储地址。即,通过将第一存储地址和第一结构化数据绑定在一起,使得在步骤1.3中可以利用第一结构化数据的筛选条件对第一存储地址进行筛选(即对想要操作的第一结构化数据进行筛选)。
230.特别地,通过这种绑定后,即使第一数据库操作指令不对结构化数据进行操作,依然可以在其中设置针对结构化数据的筛选条件,用于筛选第一存储地址,例如,第一数据库操作指令可以是select get_object(url,connection_name)where data_id=1000。
231.可以理解的是,若步骤1.5中第一数据库操作指令的返回结果既包括第一操作结果又包括第二操作结果,第一操作结果和第二操作结果可以是对应的,例如,返回结果中有10条数据,每条数据中包括图片和该图片对应的结构化数据如图片属性、图片标签等。在很多作业中,这种对应是具有实际意义的,比如,对于模型训练任务而言,每张训练图片(非结
构化数据的查询结果)和其带有的标签(结构化数据的查询结果)必须对应起来,才能正确计算每张训练图片的预测损失并更新神经网络模型的参数。
232.应当理解,虽然上面仅用查询操作举例,但第二操作指令对第一结构化数据执行的操作不限于查询,也可以是删除、插入等,对于不同的操作,得到的第二操作结果也不同,例如,对于删除操作,第二操作结果可能只是一个表示删除是否成功的标志,而非被删除的数据。
233.进一步的,继续参照图1,方法中还可以增加代理组件。在步骤1.1中,第一用户的客户端向数据库管理系统发送第一数据库操作指令,可以先发送给第一代理,再由第一代理转发给关系型数据库管理系统。在步骤1.5中,关系型数据库管理系统向第一用户的客户端发送第一数据库操作指令对应的返回结果,可以先发送给第一代理,再由第一代理转发给第一用户的客户端,也即关系型数据库管理系统可将第一数据库操作指令对应的返回结果发送给第一数据库操作指令的直接发送方,若没有设置第一代理,直接发送方就是第一用户的客户端,若设置有第一代理,直接发送方就是第一代理。
234.如前所述,在一些实现方式中,第一代理可以运行在第一用户的客户端所在容器(也就是第一进程所在容器)的sidecar容器中,从而第一代理和第一用户的客户端之间可以共享存储资源,快速地完成数据交互。
235.图3示出了本技术实施例提供的数据操作方法的第二种实现方式,该方法可以但不限于由图8中的电子设备执行,关于该电子设备可能的结构可以参考后文关于图8的阐述。参照图3,该方法包括:
236.步骤2.1:第一进程通过第一用户的客户端向关系型数据库管理系统发送第一数据库操作指令。
237.步骤2.2:关系型数据库管理系统解析第一数据库操作指令,得到针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识。
238.步骤2.3:关系型数据库管理系统判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则从数据库中查询访问认证信息标识对应的访问认证信息和第一非结构化数据在外部存储系统中的第一存储地址。
239.步骤2.1~2.3类似步骤1.1~1.3,不再重复阐述。
240.步骤2.4:关系型数据库管理系统根据访问认证信息从外部存储系统获取临时访问凭证。
241.步骤2.5:关系型数据库管理系统向第一用户的客户端发送第一数据库操作指令对应的返回结果,返回结果中包括第一存储地址和根据访问认证信息确定的登录信息。
242.步骤2.6:第一进程根据返回结果中的外部存储系统的登录信息访问外部存储系统,对第一存储地址处的第一非结构化数据执行第一操作指令对应的操作,得到第一操作结果。
243.步骤2.7:第一进程向第二进程发送第一操作结果。
244.如果登录信息不包括临时访问凭证,例如只是外部存储系统的用户名、密码,则不需要执行步骤2.4,关系型数据库管理系统可以直接根据访问认证信息确定登录信息(同前述方式a),并将登录信息和第一存储地址作为返回结果的至少一部分发送给第一用户的客户端。如果登录信息包括临时访问凭证,则关系型数据库管理系统需要执行步骤2.4获取临
时访问凭证作为登录信息,获取临时访问凭证的具体过程同前述方式b中的描述。
245.步骤2.5中,返回结果中不再包含第一操作结果,而包含第一存储地址和登录信息。可以为返回结果中的第一存储地址和登录信息建立自定义数据类型(user defined type,简称udt),udt可以为一个包含第一存储地址、登录信息等的结构体。可理解的是,该结构体可以在步骤2.4中组织,即步骤2.4中,外部存储系统返回给关系型数据库管理系统的为一包含登录信息的结构体;该结构体也可以在步骤2.5中将第一存储地址和登录信息组织为结构体,返回结果中包含结构体。后续实施例中返回结果的组织形式可以是类似的,不再赘述。
246.步骤2.6和步骤1.4类似,只是使用登录信息的主体从关系型数据库管理系统变成了第一用户的客户端对应的第一进程(使用登录信息的主体是第一进程,包括使用登录信息的主体是第一用户的客户端,或者使用登录信息的主体是第一进程但非第一用户的客户端两种情况)。
247.若第一操作指令采用第一操作函数实现,则对于图3中的方法,根据访问认证信息确定登录信息的步骤可以在第一操作函数中执行,第一操作函数的输出中包括外部存储系统的登录信息。而对于第一存储地址,则可以作为第一操作函数的另一项输出。
248.在一些实现方式中,第一操作函数并不一定直接将第一存储地址和登录信息输出,而是可以为第一操作函数的输出建立自定义数据类型,以便将将第一存储地址和登录信息绑定在一起,并组织为固定的格式输出,便于数据处理单元使用这些数据。
249.若数据操作需求获得的数据是供第一进程自身使用(也就是说,第一用户的客户端或第一进程是非结构化数据的最终使用方),则步骤2.6中得到第一操作结果以后,就无需再执行步骤2.7了(第一进程自身使用,意味着数据不是给可调用作业使用)。若第一进程是用于执行作业的,则第一进程可以基于第一操作结果继续执行作业。若数据操作需求获得的数据是希望在进行可调用作业的调用时传给执行可调用作业对应的第二进程的(也就是说,第二进程是非结构化数据的最终使用方),则步骤2.6中得到第一操作结果以后,第一进程可以将第一操作结果发送给相应的第二进程,以便其执行可调用作业。
250.如果第一数据库操作指令还会对第一结构化数据进行操作,则在步骤2.5的返回结果中还可以包括第二操作结果,操作结构化数据的方法在介绍图1时已经阐述,不再重复。可理解的是,返回结果中的某非结构化数据对应的第一存储地址、登录信息(可以组织成一udt)和该非结构化数据对应的结构化数据可以是对应的。后续实施例中返回结果的组织形式可以是类似的,不再赘述。
251.进一步的,图3的方法中也可以增加代理组件。在步骤2.1中,第一用户的客户端向关系型数据库管理系统发送第一数据库操作指令,可以先发送给第一代理,再由第一代理转发给关系型数据库管理系统。在步骤2.5中,关系型数据库管理系统向第一用户的客户端发送第一数据库操作指令对应的返回结果,可以先发送给第一代理,再由第一代理转发给第一用户的客户端。总结起来,关系型数据库管理系统可将第一数据库操作指令对应的返回结果发送给第一数据库操作指令的直接发送方。在步骤2.6中,第一进程根据返回结果中的外部存储系统的登录信息访问外部存储系统时,可以先发送访问请求给第一代理,再由第一代理转发给外部存储系统;外部存储系统向第一进程返回第一操作结果时,可以先将第一操作结果发送给第一代理,再由第一代理转发给第一进程。
252.图3中的方法利用关系型数据管理系统的权限管理功能强化了外部存储系统的权限管理功能,因此此举有利于提高对外部存储系统中的非结构化数据进行操作的安全性。同时,第一进程使用第一存储地址和登录信息访问外部存储系统去操作非结构化数据的步骤可设置为由第一进程自动完成,用户只需编写程序与关系型数据库管理系统进行交互、无需关心外部存储系统所使用的权限认证方式,减少了用户的学习成本。该有益效果可类似图1中的方法进行分析。
253.另外,在该方法的一些实现方式中,返回结果的登录信息中包括外部存储系统的临时访问凭证,从而第一进程可以直接利用临时访问凭证登录外部存储系统,不仅简化了第一进程的设计,而且使得第一进程不用自己去申请临时访问凭证,从而避免了第一进程直接接触到访问认证信息、只能接触到临时访问凭证,有利于提高数据操作的安全性。
254.图4示出了本技术实施例提供的数据操作方法的第三种实现方式,该方法可以但不限于由图8中的电子设备执行,关于该电子设备可能的结构可以参考后文关于图8的阐述。参照图4,该方法包括:
255.步骤3.1:第一进程通过第一用户的客户端向关系型数据库管理系统发送第一数据库操作指令;
256.步骤3.2:关系型数据库管理系统解析第一数据库操作指令,得到针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识。
257.步骤3.3:关系型数据库管理系统判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则从关系型数据库中查询访问认证信息标识对应的访问认证信息和第一非结构化数据在外部存储系统中的第一存储地址。
258.步骤3.4:关系型数据库管理系统根据访问认证信息从外部存储系统获取临时访问凭证。
259.步骤3.5:关系型数据库管理系统向第一用户的客户端发送第一数据库操作指令对应的返回结果,返回结果包括第一存储地址和登录信息。
260.步骤3.1~3.5类似步骤2.1~2.5,不再重复阐述。
261.步骤3.6:第一进程向第二进程发送返回结果。
262.步骤3.7:第二进程根据返回结果中的外部存储系统的登录信息访问外部存储系统,对第一存储地址处的第一非结构化数据执行第一操作指令对应的操作,得到第一操作结果。
263.步骤3.6~3.7一起阐述。步骤3.7和步骤2.6类似,只是使用登录信息的主体从第一进程变成了第二进程,从而第一进程在获得第一数据库操作指令对应的返回结果后,需要将其转发给第二进程,以便第二进程可以利用返回结果中的登录信息登录外部存储系统,并执行第一操作指令对应的操作,第二进程获得第一操作结果后,可以继续运行作业。
264.图4中的方法适用于数据操作需求获得的数据是希望在进行可调用作业的调用时传给执行可调用作业的第二进程的情况。如前文所述,图3中包含步骤2.7时,图3也适用于数据操作需求获得的数据是希望在进行可调用作业的调用时传给执行可调用作业的第二进程的情况。在这种情况下,图3和图4的区别在于,图3调用可调用作业时,是将非结构化数据本身作为传入数据传给第二进程,图4调用可调用作业时,是将非结构化数据的第一存储地址的获取非结构化数据所需的必要信息(如外部存储系统的登录信息)作为传入数据传
入第二进程,由第二进程自身利用该获取信息去外部存储系统获取非结构化数据。相比于图3的方式,图4的方式能够减轻第一进程的负担,减少非结构化数据在第一进程和第二进程之间传输的开销。
265.如前所述,步骤3.4中的临时访问凭证(登录信息的一种)和/或步骤3.5中的第一存储地址和登录信息可以udt方式组织(当3.4中的临时访问凭证以udt方式组织时,udt可以包含登录信息和第一存储地址),返回结果中除了还可包括第二操作结果,第二操作结果可与第一存储地址、登录信息相对应。后续实施例中返回结果的组织形式可以是类似的,不再赘述。
266.当返回结果包括第一存储地址和登录信息时,使用第一存储地址和登录信息即可直接访问外部存储系统去操作非结构化数据,而无需第二进程自行根据访问认证信息确定登录信息,不仅简化了第二进程的设计,而且使得第一进程不用自己去申请临时访问凭证,从而避免了第二进程直接接触到访问认证信息、只能接触到临时访问凭证,有利于提高数据操作的安全性。并且,第二进程使用第一存储地址和登录信息访问外部存储系统去操作非结构化数据的步骤可设置为自动完成,用户只需编写程序与关系型数据库管理系统进行交互、无需关心外部存储系统所使用的权限认证方式,减少了用户的学习成本。
267.并且,图4中的方法还可能与图3中的方法结合,例如,若数据操作所获取数据的最终使用方为第一进程,则由第一进程登录外部存储系统去操作第一非结构化数据,若数据操作所获取数据的最终使用方为第二进程,则由第二进程登录外部存储系统去操作第一非结构化数据。
268.关于操作结构化数据和设置代理的情况,图4中的方法可以参考图3中的方法。除此之外,第二进程访问外部存储系统也可以通过代理。例如,第二进程访问外部存储系统可通过第二代理。第一代理、第二代理也可以分别运行于第一进程、第二进程所在容器的sidecar容器中、仅供第一进程、第二进程各自使用。第一代理、第二代理也可以是同一个代理,供各第一进程、第二进程共同使用。图4中方法的有益效果也可以参考图3中的方法进行分析,不再重复阐述。
269.图5示出了本技术实施例提供的数据操作方法的第四种实现方式,该方法可以但不限于由图8中的电子设备执行,关于该电子设备可能的结构可以参考后文关于图8的阐述。参照图5,该方法包括:
270.步骤4.1:第一进程通过第一用户的客户端通过第一代理向关系型数据库管理系统发送第一数据库操作指令。
271.步骤4.2:关系型数据库管理系统解析第一数据库操作指令,得到针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识。
272.步骤4.3:关系型数据库管理系统判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则从关系型数据库中查询访问认证信息标识对应的访问认证信息和第一非结构化数据在外部存储系统中的第一存储地址。
273.步骤4.4:关系型数据库管理系统根据访问认证信息从外部存储系统获取临时访问凭证。
274.步骤4.5:关系型数据库管理系统通过第一代理向第一用户的客户端发送第一数据库操作指令对应的返回结果,返回结果包括外部存储系统的登录信息和非结构化数据在
外部存储系统的第一存储地址。
275.步骤4.1~4.5类似步骤2.1~2.5,只是在步骤4.1和4.5中第一用户的客户端和关系型数据库管理系统之间的数据交互都会经过第一代理,即第一代理在图5的方法中是一个必要的而非可选的组件,其余内容不再重复阐述。
276.步骤4.6:第一进程(可通过客户端,也可以不通过客户端而通过第一进程本身)向第一代理发送针对外部存储系统的访问请求,访问请求中包括外部存储系统的登录信息。
277.步骤4.7:第一代理解密访问请求中的外部存储系统的登录信息。
278.步骤4.8:第一代理根据解密后的登录信息访问外部存储系统,对第一存储地址处的第一非结构化数据执行第一代理操作指令对应的操作,得到第一操作结果。
279.步骤4.9:第一代理向第一进程端返回第一操作结果。
280.步骤4.10:第一进程向第二进程发送第一操作结果。
281.步骤4.6~4.10一起阐述。第一进程在获得第一数据库操作指令对应的返回结果后,请求第一代理去登录外部存储系统,并获得第一操作结果。
282.为增加系统的安全性,第一用户的客户端所收到的返回结果中的登录信息可能是加密的(登录信息是用户名、密码时,可以将登录信息中的至少一部分例如密码部分进行加密),例如,登录信息采用外部存储系统的第一密钥加密,需要与第一密钥对应的第二密钥才能解密,而第一进程并不持有第二密钥,而第一代理可获取第二密钥,因此需要将其发送给第一代理进行解密,并由第一代理使用解密后的登录信息去操作外部存储系统中的第一非结构化数据。此举可以避免第一进程直接接触未加密的登录信息,而有利于提高数据操作的安全性。其中,第一密钥和第二密钥可以是对称密钥,也可以是非对称密钥,例如第一密钥可以是外部存储系统的私钥,第二密钥可以是外部存储系统的公钥。
283.可理解的是,第二密钥可以存储在第一代理,也可以存储在其他存储装置,由第一代理在步骤4.6中接收到访问请求后再去其他存储装置中获取第二密钥。示例性的,第二密钥也可以存储于容器管理系统的机密存储中。示例性的,存储装置存储的第二密钥有多个,可根据外部存储系统的系统标识(或结合其他辅助信息)唯一确定。需要说明的是,此处只对第二密钥的存储主体、获取第二密钥的主体进行举例,第二密钥的存储主体、获取第二密钥的主体的可能实施方式并不限于此,只要能满足安全性需求即可。
284.在步骤4.6中,第一用户的客户端可以根据第一数据库操作指令对应的返回结果生成针对外部存储系统的访问请求,并向第一代理发送该请求。请求内容可以包括外部存储系统的登录信息(用第一密钥加密的),第一存储地址和根据第一操作指令确定的第一代理操作指令。其中,第一代理操作指令代表了第一操作指令所要执行的操作,根据第一代理操作指令,第一代理才知道在登录外部存储系统后应该如何操作第一存储地址处的第一非结构化数据,但第一代理操作指令在形式上很可能并不是第一操作指令,因为第一操作指令是关系型数据库管理系统执行的指令,第一代理很可能无法直接执行。
285.第一代理接收到访问请求后,可以解析出请求中的各项信息,在步骤4.7中,第一代理利用第二密钥对请求中的登录信息进行解密,得到解密后的登录信息,在步骤4.8中也使用解密后的登录信息登录外部存储系统。
286.步骤4.4和步骤4.7是可选的,并不是所有形式的登陆信息都有必要加密,例如若执行了步骤4.4,此时获得的临时访问凭证可以不进行加密,因为临时凭证本身已具有较高
的安全性,从而也不必执行步骤4.7。又例如,若未执行步骤4.4,比如登陆信息包含用户名、密码,则可以对其进行加密,从而可以执行步骤4.7,当然也不排除步骤4.4、4.7都执行或都不执行的方案。若不执行步骤4.7,则步骤4.8中的“解密后的登录信息”应替换为“访问请求中的登录信息”。另外需要注意,即使登录信息未进行加密和解密(不执行步骤4.7),也不排除第一进程通过第一代理来获得第一操作结果。
287.步骤4.8和步骤2.6类似,只是使用登录信息的主体从第一进程变成了第一代理,不再详细阐述。由于第一代理自身并不会作为数据操作所获取的数据的使用方,所以代理在得到第一操作结果后需要将其返回给第一进程,即步骤4.9的内容。根据第一代理操作指令的含义,步骤4.8中“执行第一代理操作指令对应的操作”就相当于“执行第一操作指令对应的操作”。
288.步骤4.10和步骤2.7类似,也是一个可选步骤,不再重复阐述。
289.关于操作结构化数据的情况,图5中的方法可以参考图3中的方法,不再重复阐述。图5中方法的有益效果也可以参考图3中的方法进行分析。此外,图5中的方法中,返回结果中的登录信息是经过加密的,第一代理可以对登录信息进行解密,而第一进程接收到的返回结果中的登录信息是加密的,能够进一步提高数据操作的安全性。
290.图6示出了本技术实施例提供的数据操作方法的第五种实现方式,该方法可以但不限于由图8中的电子设备执行,关于该电子设备可能的结构可以参考后文关于图8的阐述。参照图6,该方法包括:
291.步骤5.1:第一进程通过第一用户的客户端向关系型数据库管理系统发送第一数据库操作指令。
292.步骤5.2:关系型数据库管理系统解析第一数据库操作指令,得到针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识。
293.步骤5.3:关系型数据库管理系统判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则从关系型数据库中查询访问认证信息标识对应的访问认证信息和第一非结构化数据在外部存储系统中的第一存储地址。
294.步骤5.4:关系型数据库管理系统根据访问认证信息从外部存储系统获取临时访问凭证。步骤5.5:关系型数据库管理系统向第一用户的客户端发送第一数据库操作指令对应的返回结果,返回结果包括外部存储系统的登录信息和非结构化数据在外部存储系统的第一存储地址。
295.步骤5.6:第一进程向第二进程发送返回结果。
296.步骤5.1~5.6类似步骤3.1~3.6,不再重复阐述。
297.步骤5.7:第二进程向第二代理发送针对外部存储系统的访问请求。
298.步骤5.8:第二代理解密访问请求中的外部存储系统的登录信息。
299.步骤5.9:第二代理根据解密后的登录信息访问外部存储系统,对第一存储地址处的第一非结构化数据执行第一代理操作指令对应的操作,得到第一操作结果。
300.步骤5.10:第二代理向第二进程返回第一操作结果。
301.步骤5.7~5.10和步骤4.6~4.9类似,只是其中的第一进程变成了第二进程,第一代理变成了第二代理,另外需要注意,在图6的方案中,第一代理只是一个可选组件,而第二代理则是一个必选组件。步骤5.4和步骤5.8是可选的,并不是所有形式的登陆信息都必要
进行加密,例如若执行了步骤5.4,此时获得的临时访问凭证可以不进行加密,因为临时凭证本身已具有较高的安全性,从而也不必执行步骤5.8。又例如,若未执行步骤5.4,比如登陆信息包含用户名、密码,则可以对其进行加密,从而可以执行步骤5.8,当然也不排除步骤5.4、5.8都执行或都不执行的方案。若不执行步骤5.8,则步骤5.9中的“解密后的登录信息”应替换为“访问请求中的登录信息”。另外需要注意,即使登录信息未进行加密和解密(不执行步骤5.8),也不排除第二进程通过第二代理来获得第一操作结果。对于步骤5.7~5.10的其余内容,不再重复阐述。
302.图6中的方法适用于第二进程为数据操作所获取数据的最终使用方的情况,并且,图6中的方法还可能与图5中的方法结合,例如,若数据操作所获取数据的最终使用方为第一进程,则由第一进程通过第一代理登录外部存储系统去操作第一非结构化数据,若数据操作所获取数据的最终使用方为第二进程,则由第二进程通过第二代理登录外部存储系统去操作第一非结构化数据。
303.关于操作结构化数据的情况,图6中的方法可以参考图4中的方法,不再重复阐述。图6中方法的有益效果也可以参考图4中的方法进行分析,此外,图6中的方法中,返回结果中的登录信息是经过加密的,第二代理可以对登录信息进行解密,而第二进程接收到的返回结果中的登录信息是加密的,能够进一步提高数据操作的安全性。
304.图7示出了本技术实施例提供的数据操作方法的第六种实现方式,该方法可以但不限于由图8中的电子设备执行,关于该电子设备可能的结构可以参考后文关于图8的阐述。参照图7,该方法包括:
305.步骤6.1:第一进程通过第一用户的客户端通过第一代理向关系型数据库管理系统发送第一数据库操作指令。
306.步骤6.2:关系型数据库管理系统解析第一数据库操作指令,得到针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识。
307.步骤6.3:关系型数据库管理系统判断第一用户是否有权限使用访问认证信息标识,若第一用户有权限使用访问认证信息标识,则从关系型数据库中查询访问认证信息标识对应的访问认证信息和第一非结构化数据在外部存储系统中的第一存储地址。
308.步骤6.4:关系型数据库管理系统根据访问认证信息从外部存储系统获取临时访问凭证。
309.步骤6.1~6.4和步骤4.1~4.4类似,不再重复阐述。
310.步骤6.5:关系型数据库管理系统向第一代理发送第一数据库操作指令对应的返回结果,返回结果包括外部存储系统的登录信息和非结构化数据在外部存储系统的第一存储地址。
311.步骤6.6:第一代理解密返回结果中的外部存储系统的登录信息。
312.步骤6.7:第一代理根据解密后的登录信息访问外部存储系统,对第一存储地址处的第一非结构化数据执行第一操作指令对应的操作,得到第一操作结果。
313.步骤6.5~6.7一起阐述。在步骤4.5中,其实关系型数据管理系统也会向第一代理发送第一数据库操作指令对应的返回结果,但第一代理仅仅是简单地将返回结果转发给第一用户的客户端。第一进程向第一代理发送针对外部存储系统的访问请求时(步骤4.6),第一代理才会应请求对外部存储系统进行访问。而在步骤6.5中,第一代理接收到返回结果以
后,并不会进行转发,而是自己利用返回结果中的登录信息执行步骤6.6~6.7获得第一操作结果(第一代理主动从外部存储系统获得的第一操作结果),类似于步骤4.7~4.8。
314.步骤6.6是可选的,并不是所有形式的登陆信息都适合进程加密,例如若执行了步骤6.4,此时获得的临时访问凭证可以不进行加密,因为临时凭证本身已具有较高的安全性,从而也不必执行步骤6.6。又例如,若未执行步骤6.4,比如登陆信息包含用户名、密码,则可以对其进行加密,从而可以执行步骤6.6,当然也不排除步骤6.4、6.6都执行或都不执行的方案。若不执行步骤6.6,则步骤6.7中的“解密后的登录信息”应替换为“返回结果中的登录信息”。
315.步骤6.8:第一代理向第一用户的客户端返回第一操作结果。
316.步骤6.9:第一进程向第二进程发送第一操作结果。
317.步骤6.8~6.9和步骤4.9~4.10类似,不再重复阐述。
318.关于操作结构化数据的情况,图7中的方法可以参考图5中的方法,不再重复阐述。虽然都是利用代理操作第一非结构化数据,但相较于图5或图6中的方法,图7中的方法更进一步,第一数据库操作指令对应的返回结果根本不会返回给第一用户的客户端对应的第一进程或者第二进程,从而返回结果中的登录信息不会泄露给第一进程或第二进程,因此进一步提高了数据操作的安全性,并有利于简化第一进程和第二进程的设计。图7中方法的其余有益效果可以参考图5或图6中的方法,不再重复阐述。
319.可理解的是,如果返回结果中还包括第二操作结果,除了第一操作结果,步骤6.8和步骤6.9中可将第二操作结果也一并发送第一进程或第二进程。步骤6.8和6.9中第一操作结果和第二操作结果可以是对应的。例如,某非结构化数据与其对应的结构化数据作为一条数据记录。
320.本技术实施例还提供一种数据操作装置,包括:
321.第一指令接收模块,用于利用关系型数据库管理系统接收第一用户的客户端直接发送或通过第一代理发送的第一数据库操作指令;
322.指令解析模块,用于利用所述关系型数据库管理系统从所述第一数据库操作指令中解析出针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识;其中,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在所述关系型数据库管理系统的数据库中;
323.权限控制模块,用于利用所述关系型数据库管理系统判断所述第一用户是否有权限使用所述访问认证信息标识;
324.指令执行模块,用于在所述第一用户有权限使用所述访问认证信息标识时,利用所述关系型数据库管理系统执行以下步骤:从所述数据库中根据所述访问认证信息标识查询所述访问认证信息;从所述数据库中查询所述第一存储地址;确定针对所述第一数据库操作指令的返回结果,并将所述返回结果发送给所述第一数据库操作指令的直接发送方;其中,所述返回结果包括所述第一存储地址和根据所述访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作得到的第一操作结果。
325.在所述数据操作装置的一种实现方式中,所述权限控制模块利用所述关系型数据
库管理系统判断所述第一用户是否有权限使用所述访问认证信息标识,包括:判断所述第一用户是否有权限使用所述访问认证信息标识所对应的、所述数据库中存储有所述访问认证信息的至少部分数据表,若有权限使用所述至少部分数据表,则表明所述第一用户有权限使用所述访问认证信息标识,否则表明所述第一用户无权限使用所述访问认证信息标识;或者,判断所述第一用户是否有权限扮演所述访问认证信息标识所对应的角色,若有权限扮演所述角色,则表明所述第一用户有权限使用所述访问认证信息标识,否则表明所述第一用户无权限使用所述访问认证信息标识。
326.在所述数据操作装置的一种实现方式中,所述指令执行模块利用所述关系型数据库管理系统从所述数据库中根据所述访问认证信息标识查询所述访问认证信息,包括:从所述数据库中,查询所述访问认证信息标识所对应的所述访问认证信息;或者,从所述数据库中,查询所述访问认证信息标识和附加信息所对应的所述访问认证信息;其中,所述附加信息包括所述外部存储系统的系统标识和/或操作类型,所述系统标识根据所述第一存储地址确定,所述操作类型根据所述第一操作指令确定。
327.在所述数据操作装置的一种实现方式中,所述指令执行模块利用所述关系型数据库管理系统从所述数据库中根据所述访问认证信息标识查询所述访问认证信息,包括:从所述数据库中,查询所述访问认证信息标识所对应的角色有权限访问的访问认证信息;或者,从所述数据库中,查询访问认证信息标识所对应的角色有权限访问的至少一个访问认证信息中与附加信息对应的访问认证信息;其中,所述附加信息包括所述外部存储系统的系统标识和/或操作类型,所述系统标识根据所述第一存储地址确定,所述操作类型根据所述第一操作指令确定。
328.在所述数据操作装置的一种实现方式中,所述返回结果包括所述第一存储地址和所述登录信息,所述指令执行模块利用所述关系型数据库管理系统确定针对所述第一数据库操作指令的返回结果,包括:利用所述数据库管理系统根据访问认证信息访问外部存储系统,得到所述外部存储系统返回的所述登录信息,所述登录信息包括所述外部存储系统的临时访问凭证。
329.在所述数据操作装置的一种实现方式中,所述返回结果包括所述第一操作结果,所述指令执行模块利用所述数据库管理系统确定针对所述第一数据库操作指令的返回结果,包括:利用所述数据库管理系统根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果。
330.在所述数据操作装置的一种实现方式中,所述第一操作指令为在所述关系型数据库管理系统中预先设置的用户自定义函数。
331.在所述数据操作装置的一种实现方式中,所述数据库中还存储有非结构化数据对应的结构化数据,所述指令解析模块还用于:利用所述数据库管理系统从所述第一数据库操作指令中解析出针对所述第一非结构化数据对应的第一结构化数据进行操作的第二操作指令,所述第二操作指令中包括针对所述第一结构化数据的筛选条件;所述指令执行模块还用于:利用所述数据库管理系统根据第二操作指令对所述数据库中存储的满足所述筛选条件的所述第一结构化数据执行对应的操作,得到第二操作结果;所述返回结果还包括:所述第二操作结果。
332.在所述数据操作装置的一种实现方式中,所述指令执行模块利用所述数据库管理系统从所述数据库中查询所述第一存储地址,包括:利用所述数据库管理系统将所述第一结构化数据对应的非结构化数据的存储地址确定为所述第一存储地址。
333.本技术实施例还提供一种数据操作装置,包括:
334.第一指令发送模块,用于利用第一进程通过第一用户的客户端向关系型数据库管理系统直接发送或通过第一代理发送第一数据库操作指令;其中,所述第一进程是所述第一用户的客户端所对应的进程,所述第一数据库操作指令中包括针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在所述关系型数据库管理系统的数据库中;
335.第一结果接收模块,用于利用第一进程中通过所述第一用户的客户端接收所述数据库管理系统直接发送或通过所述代理发送的针对所述第一数据库操作指令的返回结果;其中,所述返回结果包括所述第一存储地址和根据与所述访问认证信息标识对应的所述访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一非结构化数据执行所述第一操作指令对应的操作所得的得到的第一操作结果;或者,用于利用第一进程中通过所述第一用户的客户端接收所述第一代理发送的、所述第一代理主动从所述外部存储系统获得的所述第一操作结果。
336.在所述数据操作装置的一种实现方式中,所述登录信息用所述外部存储系统的第一密钥加密,或所述登录信息包括所述外部存储系统的临时访问凭证。
337.在所述数据操作装置的一种实现方式中,所述第一进程运行在创建于数据处理单元的运行环境中,所述数据操作装置还包括:第一结果发送模块,用于:利用所述第一进程将所述返回结果或所述代理主动从所述外部存储系统获得的所述第一操作结果发送给所述数据处理单元中的第二进程,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被所述第一进程调用的可调用作业。
338.在所述数据操作装置的一种实现方式中,所述返回结果包括所述第一存储地址和所述登录信息,所述数据操作装置还包括:第一数据操作模块,用于:利用所述第一进程根据所述登录信息直接访问或请求所述第一代理访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果。
339.在所述数据操作装置的一种实现方式中,所述第一进程运行在创建于数据处理单元的运行环境中,所述第一结果发送模块还用于:利用所述第一进程将所述第一进程直接或请求所述第一代理从所述外部存储系统获得的所述第一操作结果发送给所述数据处理单元中的第二进程,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被所述第一进程调用的可调用作业。
340.在所述数据操作装置的一种实现方式中,所述数据操作装置还包括:数据缓存模块,用于利用所述第一进程将所述第一操作结果存储于缓存中。
341.本技术实施例还提供一种数据操作装置,包括:
342.第二指令接收模块,用于利用第一代理接收第一进程通过第一用户的客户端发送的第一数据库操作指令;其中,所述第一进程是所述第一用户的客户端所对应的进程,所述
第一数据库操作指令中包括针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在关系型数据库中;
343.第二指令发送模块,用于利用所述第一代理向所述关系型数据库管理系统发送所述第一数据库操作指令;
344.第二结果接收模块,用于利用所述第一代理接收所述关系型数据库管理系统发送的针对所述第一数据库操作指令的返回结果;其中,所述返回结果包括所述第一存储地址和根据与所述访问认证信息标识对应的所述访问认证信息确定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一非结构化数据执行所述第一操作指令对应的操作得到的第一操作结果;
345.第二结果发送模块,用于利用所述第一代理将所述返回结果发送给所述第一用户的客户端,或者,若所述返回结果包括所述第一存储地址和所述登录信息,则根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果,并将所述第一代理自身从所述外部存储系统获得的所述第一操作结果发送给所述第一用户的客户端。
346.在所述数据操作装置的一种实现方式中,所述数据操作装置还包括:第一请求接收模块,用于利用所述第一代理接收所述第一进程发送的针对所述外部存储系统的访问请求,所述访问请求中包括所述登录信息、所述第一存储地址和根据所述第一操作指令确定的第一代理操作指令;所述第二结果发送模块还用于:利用所述第一代理响应于所述访问请求,根据登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一代理操作指令对应的操作;将所述第一代理应请求从所述外部存储系统获得的所述第一操作结果发送给所述第一进程。
347.在所述数据操作装置的一种实现方式中,所述登录信息用所述外部存储系统的第一密钥加密,所述第二结果发送模块还用于:利用所述第一代理用所述外部存储系统的对应于所述第一密钥的第二密钥解密所述登录信息,得到解密后的登录信息;所述第二结果发送模块利用所述第一代理根据所述登录信息访问所述外部存储系统,包括:利用所述第一代理根据所述解密后的登录信息访问所述外部存储系统。
348.在所述数据操作装置的一种实现方式中,所述第一代理运行在所述第一进程所在容器的sidecar容器中。
349.本技术实施例还提供一种数据操作装置,包括:
350.第三结果接收模块,用于利用数据处理单元中的第二进程接收所述数据处理单元中的第一进程发送的针对第一数据库操作指令的返回结果;其中,所述数据处理单元还包括第一用户的客户端对应的第一进程,所述第二进程创建于所述数据处理单元的运行环境中,所述第二进程执行被所述第一进程调用的可调用作业,所述第一数据库操作指令为关系型数据库管理系统执行的指令,所述第一数据库操作指令中包括针对存储在外部存储系统中的第一非结构化数据的第一操作指令和访问认证信息标识,所述第一非结构化数据在所述外部存储系统中的第一存储地址存储在所述关系型数据库管理系统的数据库中;所述返回结果包括所述第一存储地址和根据与所述访问认证信息标识对应的访问认证信息确
定的登录信息,所述登录信息用于登录所述外部存储系统;或者,所述返回结果包括对存储在所述外部存储系统中的所述第一非结构化数据执行所述第一操作指令对应的操作得到的第一操作结果;
351.第一数据操作模块,用于在所述返回结果包括所述第一存储地址和所述登录信息时,利用所述第二进程根据所述登录信息直接访问或请求第二代理访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第一操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果。
352.本技术实施例还提供一种数据操作装置,包括:
353.第二请求接收模块,用于利用第二代理接收第二进程发送的针对外部存储系统的访问请求;其中,所述第二进程创建于数据处理单元的运行环境中,所述第二进程执行被所述数据处理单元的中的第一进程调用的可调用作业,所述访问请求中包括用于登录所述外部存储系统的登录信息、第一存储地址和根据第一操作指令确定的第二代理操作指令,所述第一操作指令为针对存储在所述外部存储系统中的第一非结构化数据的操作指令;
354.第二数据操作模块,用于利用所述第二代理响应于所述第二进程发送的访问请求,根据所述登录信息访问所述外部存储系统,并对存储在所述第一存储地址处的所述第一非结构化数据执行所述第二代理操作指令对应的操作,得到所述外部存储系统返回的所述第一操作结果;
355.第三结果发送模块,用于利用所述第二代理将应请求获得的所述第一操作结果发送给所述第二进程。
356.本技术实施例提供的以上各种数据操作装置可用于实现本技术实施例提供的数据操作方法,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
357.图8示出了本技术实施例提供的电子设备100的一种可能的结构。参照图8,电子设备100包括:处理器110、存储器120以及通信接口130,这些组件通过通信总线140和/或其他形式的连接机构(未示出)互连并相互通讯。
358.其中,处理器110包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器110可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、微控制单元(micro controller unit,简称mcu)、网络处理器(network processor,简称np)或者其他常规处理器;还可以是专用处理器,包括图形处理器(graphics processing unit,gpu)、神经网络处理器(neural-network processing unit,简称npu)、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuits,简称asic)、现场可编程门阵列(field programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器310为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
359.存储器120包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(random access memory,简称ram),只读存储器(read only memory,简称rom),可编程只读存储器(programmable read-only memory,简称prom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),电可擦除可编程只读存储器
(electric erasable programmable read-only memory,简称eeprom)等。
360.处理器110以及其他可能的组件可对存储器120进行访问,读和/或写其中的数据。特别地,在存储器120中可以存储一个或多个计算机程序指令,处理器110可以读取并运行这些计算机程序指令,以实现本技术实施例提供的数据操作方法中的部分或全部的步骤。例如,若关系型数据库管理系统和数据处理单元分别部署在电子设备a和b上(a和b都可以采用电子设备100的结构),则电子设备a只执行数据操作方法中由关系型数据库管理系统执行的步骤,电子设备b只执行数据操作方法中由数据处理单元执行的步骤。
361.通信接口130包括一个或多个(图中仅示出一个),可以用于和其他设备(例如,外部存储系统的服务器)进行直接或间接地通信,以便进行数据的交互。通信接口130可以包括进行有线和/或无线通信的接口。
362.可以理解,图8所示的结构仅为示意,电子设备100还可以包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。图8中所示的各组件可以采用硬件、软件或其组合实现。电子设备100可能是实体设备,例如服务器、pc机、笔记本电脑、平板电脑、手机、机器人等,也可能是虚拟设备,例如虚拟机、容器等。并且,电子设备100也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
363.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,这些计算机程序指令被处理器读取并运行时,执行本技术实施例提供的数据操作方法。例如,计算机可读存储介质可以实现为图8中电子设备100中的存储器120。
364.本技术实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序指令,这些计算机程序指令被处理器读取并运行时,执行本技术实施例提供的数据操作方法中的部分或全部的步骤。
365.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1