1.本发明涉及数据库网络通信技术领域,具体涉及一种数据库协议解析与封装方法及系统。
背景技术:2.协议是通信对象之间为能准确有效地进行通信,所必须遵守的规则和各种约定事项。数据库协议则是,用于服务端和客户端之间的信息通信,应用于连接认证及数据请求阶段。
3.然而,不同数据库使用的协议不尽相同,这也是使用不同数据库的客户端,不能连接另一个数据库的服务的原因。因此,在实现数据库系统时,一般都会兼容某种开源协议,以获得更多的用户,更广阔的市场。但这样需要在数据库系统内部,实现该开源协议的协议层,增加了开发成本。且若是想兼容多种协议,则会进一步增加成本,提高开发难度,增加数据库系统的维护成本。此外,在需要对多种使用不同协议的数据库进行访问的场景,如需要对不同数据库进行流量审计和实时监控,由于数据库协议规则的不同,则会存在困难。
4.除了部分公开的数据库协议(如mysql、postgresql等)外,还有一些数据库协议是非公开地,其协议规则保密,难以解析协议。而这类非公开协议,同样需要耗费人力与时间去分析处理,增加开发成本,增加了使用上的难度。
技术实现要素:5.本发明的技术任务是提供一种数据库协议解析与封装方法及系统,支持对不同数据库协议的解析与封装,尤其是对非公开的数据库协议;能够兼容多种数据库协议,接收不同数据库客户端的请求。
6.本发明解决其技术问题所采用的技术方案是:
7.一种数据库协议解析与封装方法,基于机器学习实现数据库协议的解析与封装,其实现包括以下步骤:
8.1)、收集大量使用不同协议的数据库的通信请求报文信息,并对这些数据进行预处理操作,分为解析数据和封装数据;同时,把这些数据按照比列分为训练集、验证集和测试集;
9.2)、选择合适的机器学习算法,构建解析器模型与封装器模型,解析器用于解析客户端发送的报文,得到正确的请求信息;封装器则将服务端的响应,封装成对应协议的报文;
10.3)、将训练集传入步骤2)的模型之中,进行训练;
11.4)、将验证集传入步骤3)训练好的模型中,初步评估模型的性能,若验证集的结果没有达到预期,则调整模型的超参数,重复步骤3)至步骤4),直至满足预期结果;
12.5)、将测试集传入已训练好的模型中,评估最终模型的泛化能力,若模型的泛化性过低,则重复步骤3)至步骤5),直至得到高泛化性的模型。
13.本方法利用机器学习训练多种数据库协议报文,得到通用的数据库协议的解析器和封装器,可用于解析和封装各类数据库协议报文,减少数据库系统的开发成本;在数据库服务端使用解析器和封装器,达到能够接收并解析不同数据库协议报文,并将执行结果封装成对应的协议报文,返回给客户端。
14.优选的,对所述数据库的通信请求报文信息数据预处理操作,按照使用的协议种类分类,并按照客户端和服务端发出的报文,分为解析数据和封装数据;
15.解析数据的输入为客户端发送的报文,预期输出为sql语句;封装数据的输入为服务端执行sql语句的结果,预期输出为服务端发送的报文。
16.优选的,将预处理数据按照6:2:2的比例,分成训练集、验证集和测试集;
17.当数据集达到百万级则按照98:1:1的比例划分训练集、验证集和测试集。
18.进一步的,将所述解析器和封装器应用到数据库服务端,服务端在成功解析客户端的连接请求后,会将从解析器中得到客户端所使用的协议类型,记录在连接的session信息中,以待后续使用;同时,根据解析得到的连接信息,进行用户的身份认证。
19.优选的,在连接认证过程中,若解析器接受到的报文协议类型不包含在已知协议中,则返回不支持该协议类型的错误给客户端,并记录该报文信息,以用于解析器和封装器的更新。
20.优选的,所述解析器和封装器的使用过程如下:
21.1)、将所述解析器和封装器,应用到数据库服务端的协议层,在接收到客户端的连接请求后,服务端会使用解析器,解析该请求,进行用户身份的连接认证;
22.2)、连接建立成功后,服务端在接收到客户端发送的查询请求时,同样使用解析器解析该请求,得到sql语句,并执行该语句;
23.3)、服务端将执行器执行sql语句的结果,通过封装器包装成对应类型的协议报文,并发送的客户端。
24.优选的,连接建立成功后,服务端在接收到客户端发送的查询请求时,同样利用记录在session信息中的协议类型,使用解析器解析该请求,得到sql语句,并执行该语句;
25.服务端将执行器执行sql语句的结果,同样利用记录在session信息中的协议类型,使用封装器将执行器执行sql语句的结果进行封装,按照该协议的规则,封装成一个或多个对应的报文信息,返回给客户端。
26.本发明还要求保护一种数据库协议解析与封装系统,包括客户端、服务端以及封装器和解析器,该系统通过上述的方法实现数据库协议的解析与封装,并通过所述的解析与封装,实现客户端与服务端的通信。
27.本发明还要求保护一种数据库协议解析与封装装置,其特征在于包括:至少一个存储器和至少一个处理器;
28.所述至少一个存储器,用于存储机器可读程序;
29.所述至少一个处理器,用于调用所述机器可读程序,执行上述的方法。
30.本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的方法。
31.本发明的一种数据库协议解析与封装方法及系统与现有技术相比,具有以下有益效果:
32.本方法基于机器学习算法生成的解析器和封装器,可用于解析和封装各类数据库协议报文,减少数据库系统的开发成本;同时可用于兼容多种数据库协议,接收不同数据库客户端的请求,获得更多的用户,扩大市场。
附图说明
33.图1是本发明实施例提供的数据库解析器与封装器训练流程图;
34.图2是本发明实施例提供的解析器和封装器的使用示意图;
35.图3是本发明实施例提供的解析器处理报文的流程图;
36.图4是本发明实施例提供的封装器处理报文的流程图。
具体实施方式
37.下面结合具体实施例对本发明作进一步说明。
38.一种数据库协议解析与封装方法,基于机器学习实现数据库协议的解析与封装,其实现包括以下步骤:
39.1)、收集大量使用不同协议的数据库的通信请求报文信息,并对这些数据进行预处理操作,按照使用的协议种类分类,和按照客户端和服务端发出的报文,分为解析数据和封装数据。解析数据的输入为客户端发送的报文,预期输出为sql语句;封装数据的输入为服务端执行sql语句的结果,预期输出为服务端发送的报文。同时,把这些数据按照一定比列分为训练集、验证集和测试集;
40.2)、选择合适的机器学习算法,构建解析器模型与封装器模型,解析器用于解析客户端发送的报文,得到正确的请求信息;封装器则将服务端的响应,封装成对应协议的报文;
41.3)、将训练集传入步骤2)的模型之中,进行训练;
42.4)、将验证集传入步骤3)训练好的模型中,初步评估模型的性能,若验证集的结果没有达到预期,则调整模型的超参数,重复步骤3)至步骤4),直至满足预期结果;
43.5)、将测试集传入已训练好的模型中,评估最终模型的泛化能力,若模型的泛化性过低,则重复步骤3)至步骤5),直至得到高泛化性的模型。
44.如图1所示,为解析器和封装器的训练过程,
45.步骤1:收集大量使用不同协议的数据库,客户端与服务端之间的通信请求报文信息,并对这些数据进行预处理操作,分为训练集、验证集和测试集。
46.步骤2:选择合适的机器学习算法,构建解析器模型与封装器模型。
47.步骤3:将训练集传入步骤2的模型之中,进行训练。
48.步骤4:将验证集传入步骤3训练好的模型中,初步评估模型的性能。若验证集的结果,没有达到预期,则调整模型的超参数,重复步骤3-4,直至满足预期结果。
49.步骤5:将测试集传入已训练好的模型中,评估最终模型的泛化能力。若模型的泛化性过低,则重复步骤3-5,直至得到高泛化性的模型。
50.如图2所示,为解析器和封装器的使用流程,
51.步骤6:将步骤5得到的解析器和封装器,应用到数据库服务端的协议层。在接收到客户端的连接请求后,服务端会使用解析器,解析该请求,进行用户身份的连接认证。
52.步骤7:连接建立成功后,服务端在接收到客户端发送的查询请求时,同样使用解析器解析该请求,得到sql语句,并执行该语句。
53.步骤8:服务端将执行器执行sql语句的结果,通过封装器包装成对应类型的协议报文,并发送的客户端。
54.其中步骤1中,需要对收集到的报文数据进行预处理,将数据按照数据库协议种类划分,已知协议种类的按协议归为一类,未知的按数据库归为一类。同时,这些报文数据又按照客户端和服务端发出的报文,分为两类,一类为解析数据:输入为客户端发送的报文,预期输出为sql语句;一类为封装数据:输入为服务端执行sql语句的结果,预期输出为服务端发送的报文。最后,需要将预处理的数据,按照6:2:2的比例,分成训练集、验证集和测试集。若数据集足够大,达到百万级,只需要按照98:1:1的比例划分。
55.步骤2中,选择合适的学习算法,构建解析器模型与封装器模型,解析器用于解析客户端发送的报文,得到正确的请求信息;封装器则将服务端的响应,封装成对应协议的报文。
56.步骤6中,服务端在成功解析客户端的连接请求后,同时会从解析器中得到客户端所使用的协议类型,并将其记录在连接的session信息中,以待后续使用。服务端对连接请求的响应,包括要求密码信息,连接成功,连接失败等响应,都会通过封装器,分装成改协议对应类型报文,返回给客户端。若解析器接受到的报文协议类型,不包含在已知协议中,则返回不支持该协议类型的错误给客户端,并记录该报文信息,以用于解析器和封装器的更新。同时,根据解析得到的连接信息,进行用户的身份认证。
57.步骤7中,解析器会利用连接过程中,记录在session信息中的协议类型,解析该请求,得到正确的sql语句,并送到数据库执行器中执行。
58.步骤8中,封装器同样利用记录在session信息中的协议类型,将执行器执行sql语句的结果进行封装,按照该协议的规则,封装成一个或多个对应的报文信息,返回给客户端。
59.本方法利用机器学习训练多种数据库协议报文,得到通用的数据库协议的解析器和封装器,可用于解析和封装各类数据库协议报文,减少数据库系统的开发成本;在数据库服务端使用解析器和封装器,达到能够接收并解析不同数据库协议报文,并将sql语句执行结果封装成对应的协议报文,返回给客户端。
60.本发明实施例还提供一种数据库协议解析与封装系统,包括客户端、服务端以及封装器和解析器,该系统通过上述的方法实现数据库协议的解析与封装,并通过所述的解析与封装,实现客户端与服务端的通信。
61.本发明实施例还提供一种数据库协议解析与封装装置,其特征在于包括:至少一个存储器和至少一个处理器;
62.所述至少一个存储器,用于存储机器可读程序;
63.所述至少一个处理器,用于调用所述机器可读程序,执行上述的数据库协议解析与封装方法。
64.本发明实施例还提供一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述实施例中所述的数据库协议解析与封装方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存
储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或gpu)读出并执行存储在存储介质中的程序代码。
65.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
66.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
67.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
68.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
69.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
技术特征:1.一种数据库协议解析与封装方法,其特征在于基于机器学习实现数据库协议的解析与封装,其实现包括以下步骤:1)、收集大量使用不同协议的数据库的通信请求报文信息,并对这些数据进行预处理操作,分为解析数据和封装数据;同时,把这些数据按照比列分为训练集、验证集和测试集;2)、选择合适的机器学习算法,构建解析器模型与封装器模型,解析器用于解析客户端发送的报文,得到正确的请求信息;封装器则将服务端的响应,封装成对应协议的报文;3)、将训练集传入步骤2)的模型之中,进行训练;4)、将验证集传入步骤3)训练好的模型中,初步评估模型的性能,若验证集的结果没有达到预期,则调整模型的超参数,重复步骤3)至步骤4),直至满足预期结果;5)、将测试集传入已训练好的模型中,评估最终模型的泛化能力,若模型的泛化性过低,则重复步骤3)至步骤5),直至得到高泛化性的模型。2.根据权利要求1所述的一种数据库协议解析与封装方法,其特征在于对所述数据库的通信请求报文信息数据预处理操作,按照使用的协议种类分类,并按照客户端和服务端发出的报文,分为解析数据和封装数据;解析数据的输入为客户端发送的报文,预期输出为sql语句;封装数据的输入为服务端执行sql语句的结果,预期输出为服务端发送的报文。3.根据权利要求1或2所述的一种数据库协议解析与封装方法,其特征在于将预处理数据按照6:2:2的比例,分成训练集、验证集和测试集;当数据集达到百万级则按照98:1:1的比例划分训练集、验证集和测试集。4.根据权利要求1或2所述的一种数据库协议解析与封装方法,其特征在于将所述解析器和封装器应用到数据库服务端,服务端在成功解析客户端的连接请求后,会将从解析器中得到客户端所使用的协议类型,记录在连接的session信息中,以待后续使用;同时,根据解析得到的连接信息,进行用户的身份认证。5.根据权利要求4所述的一种数据库协议解析与封装方法,其特征在于在连接认证过程中,若解析器接受到的报文协议类型不包含在已知协议中,则返回不支持该协议类型的错误给客户端,并记录该报文信息,以用于解析器和封装器的更新。6.根据权利要求4所述的一种数据库协议解析与封装方法,其特征在于所述解析器和封装器的使用过程如下:1)、将所述解析器和封装器,应用到数据库服务端的协议层,在接收到客户端的连接请求后,服务端会使用解析器,解析该请求,进行用户身份的连接认证;2)、连接建立成功后,服务端在接收到客户端发送的查询请求时,同样使用解析器解析该请求,得到sql语句,并执行该语句;3)、服务端将执行器执行sql语句的结果,通过封装器包装成对应类型的协议报文,并发送的客户端。7.根据权利要求6所述的一种数据库协议解析与封装方法,其特征在于连接建立成功后,服务端在接收到客户端发送的查询请求时,同样利用记录在session信息中的协议类型,使用解析器解析该请求,得到sql语句,并执行该语句;服务端将执行器执行sql语句的结果,同样利用记录在session信息中的协议类型,使用封装器将执行器执行sql语句的结果进行封装,按照该协议的规则,封装成一个或多个对
应的报文信息,返回给客户端。8.一种数据库协议解析与封装系统,其特征在于包括客户端、服务端以及封装器和解析器,该系统通过权利要求1至7任一所述的方法实现数据库协议的解析与封装,并通过所述的解析与封装,实现客户端与服务端的通信。9.一种数据库协议解析与封装装置,其特征在于包括:至少一个存储器和至少一个处理器;所述至少一个存储器,用于存储机器可读程序;所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至7任一所述的方法。10.计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至7任一所述的方法。
技术总结本发明公开了一种数据库协议解析与封装方法及系统,属于数据库网络通信技术领域,该方法基于机器学习实现数据库协议的解析与封装,其实现包括以下步骤:1)、收集大量使用不同协议的数据库的通信请求报文信息,并对这些数据进行预处理操作,分为解析数据和封装数据;同时,把这些数据按照比列分为训练集、验证集和测试集;2)、选择合适的机器学习算法,构建解析器模型与封装器模型,解析器用于解析客户端发送的报文,得到正确的请求信息;封装器则将服务端的响应,封装成对应协议的报文;3)、将训练集传入步骤2)的模型之中,进行训练。本发明支持对不同数据库协议的解析与封装,能够兼容多种数据库协议,接收不同数据库客户端的请求。求。求。
技术研发人员:沈豪
受保护的技术使用者:浪潮软件集团有限公司
技术研发日:2022.06.10
技术公布日:2022/11/1