一种数据操作方法及装置制造方法

文档序号:6638560阅读:129来源:国知局
一种数据操作方法及装置制造方法
【专利摘要】本发明公开了一种数据操作方法及装置,所述方法应用于耦接在客户端与数据库之间的数据操作装置以进行数据操作,其包括:接收客户端发送的第一数据连接请求;建立所述数据操作装置与所述客户端之间的第一数据连接;通过所述第一数据连接,接收所述客户端发送的操作请求;根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接;以及将所述操作请求通过所述第二数据连接发送至所述数据库。从而,不仅能够避免客户端与数据库之间的数据连接因不匹配而导致的数据操作失败,同时也节省了数据库资源。
【专利说明】一种数据操作方法及装置

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种数据操作方法及装置。

【背景技术】
[0002]随着信息技术的发展,用户可以使用客户端通过网络途径访问相应的数据库(如MySQL数据库、Oracle数据库等)来获取所需的数据。通常在数据库和客户端之间设置有中间件(一种数据中转设备),以管理数据库与大量客户端之间的连接交互,并为各客户端提供数据服务,即客户端与数据库之间通过中间件进行数据连接。数据连接建立的过程是:客户端首先与中间件连接,再由该中间件在数据库上建立数据连接。
[0003]目前,为了避免多个客户端在进行大量的数据操作时数据库的处理压力,而采用多个不同类型的数据库的方式,完成对数据的读操作及写操作的分离处理,例如:由从数据库处理客户端发出的读操作请求,由主数据库处理客户端发出的写操作请求。客户端通过中间件与数据库建立数据连接时,不发送任何语句,数据库无法判断客户端将要发出的是读操作请求还是写操作请求,因此在数据库中建立的数据连接难以确定是在主库上建立还是在从库上建立。通常数据库可能会将数据连接全都建立在主库上(或从库上),而造成数据库的主库(或从库)满负荷运行。
[0004]在现有技术中,采用在数据库的主库或从库中预置数据连接值的方式解决上述问题(这里预置数据连接值小于主库或从库最大负荷的数据连接数量),如:在主库中预置数据连接值为16,当客户端进行数据连接时,优先检查主库上的数据连接的数量,若该数量小于16,则在主库上建立该数据连接,若该数量不小于16,则在从库中建立该数据连接。
[0005]但是,如果实际数据连接的数量多于预置数据连接值,且建立这些数据连接的客户端均发送同一种操作请求(如:写操作请求,写操作请求只对应于数据库中的主库)时,超过预置数据连接值的多余数据连接将建立在数据库的从库上,从而导致建立在数据库的从库上的写操作请求处理失败(数据库的从库只处理读操作请求)。可见,现有技术中客户端与数据库之间的数据连接容易出现不匹配的情况,并且在数据连接不匹配时,不仅使得数据操作失败,也造成数据库资源的浪费。


【发明内容】

[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据操作方法及装置,能够有效避免客户端与数据库之间的数据连接因不匹配而导致的数据操作失败,同时也节省了数据库资源。
[0007]根据本发明的第一个方面,提出一种数据操作方法,应用于耦接在客户端与数据库之间数据操作装置(也可称为中间件)以进行数据操作,所述方法包括:
[0008]接收所述客户端发送的第一数据连接请求;
[0009]建立所述数据操作装置与所述客户端之间的第一数据连接;
[0010]通过所述第一数据连接,接收所述客户端发送的操作请求;
[0011]根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接;以及
[0012]将所述操作请求通过所述第二数据连接发送至所述数据库。
[0013]可选地,建立所述数据操作装置与所述客户端之间的第一数据连接,具体包括:
[0014]将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密;
[0015]接收所述客户端发送的加密后的认证信息;
[0016]采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;
[0017]建立所述数据操作装置与所述客户端之间的第一数据连接,并向所述客户端返回建立连接成功响应。
[0018]可选地,所述数据操作装置预先存储所述客户端的身份信息;
[0019]建立所述数据操作装置与所述客户端之间的第一数据连接,具体包括:
[0020]将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密;
[0021]接收所述客户端发送的加密后的认证信息;
[0022]采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;
[0023]将所述认证信息与预先存储的所述客户端的身份信息进行匹配,并在匹配成功后建立所述数据操作装置与所述客户端之间的第一数据连接,且向所述客户端返回建立连接成功响应。
[0024]可选地,根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接,具体包括:
[0025]根据所述操作请求,确定与所述操作请求对应的数据库;
[0026]向确定的所述数据库发送第二数据连接请求;
[0027]接收所述数据库返回的第二握手数据;
[0028]采用所述第二握手数据对所述认证信息进行加密,并将加密后的认证信息发送给所述数据库;
[0029]当接收到所述数据库返回的对所述加密后的认证信息认证通过的响应消息时,与所述数据库建立第二数据连接。
[0030]可选地,根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接,具体包括:
[0031]确定所述操作请求的操作类型;
[0032]根据预设的各操作类型与库类型的对应关系,确定接收到的所述操作请求的操作类型对应的库类型;
[0033]与确定的库类型的数据库建立第二数据连接。
[0034]可选地,所述操作类型包括读操作类型和写操作类型,所述库类型包括主库类型和从库类型;
[0035]预设的各操作类型与库类型的对应关系包括:读操作类型与从库类型相对应,写操作类型与主库类型相对应。
[0036]根据本发明的第二个方面,提出一种数据操作装置,用于在客户端和服务器之间进行数据操作,所述装置包括:第一数据连接模块、操作请求接收模块、第二数据连接模块以及操作请求发送模块,其中,
[0037]所述第一数据连接模块,用于接收所述客户端发送的第一数据连接请求,建立与所述客户端之间的第一数据连接;
[0038]所述操作请求接收模块,用于通过所述第一数据连接,接收所述客户端发送的操作请求;
[0039]所述第二数据连接模块,用于根据所述操作请求,建立与相应的数据库之间的第二数据连接;
[0040]所述操作请求发送模块,用于将所述操作请求通过所述第二数据连接发送至所述数据库。
[0041]可选地,所述第一数据连接模块,具体包括:第一握手模块、解密模块以及连接响应模块,其中,
[0042]所述第一握手模块,用于将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密;
[0043]所述解密模块,用于接收所述客户端发送的加密后的认证信息,采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;
[0044]所述连接响应模块,用于与所述客户端建立第一数据连接,并向所述客户端返回建立连接成功响应。
[0045]可选地,所述装置预先存储所述客户端的身份信息,所述第一数据连接模块,具体包括:第一握手模块、解密模块以及连接响应模块,其中,
[0046]所述第一握手模块,用于将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密;
[0047]所述解密模块,用于接收所述客户端发送的加密后的认证信息,采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;
[0048]所述连接响应模块,用于将所述认证信息与预先存储的所述客户端的身份信息进行匹配,并在匹配成功后建立与所述客户端之间的第一数据连接,且向所述客户端返回建立连接成功响应。
[0049]可选地,所述第二数据连接模块,具体包括:数据库确定模块、第二握手模块、加密模块以及连接响应模块,其中,
[0050]所述数据库确定模块,用于根据所述操作请求,确定与所述操作请求对应的数据库;
[0051]所述第二握手模块,用于向确定的所述数据库发送第二数据连接请求,并接收所述数据库返回的第二握手数据;
[0052]所述加密模块,用于采用所述第二握手数据对所述认证信息进行加密,并将加密后的认证信息发送给所述数据库;
[0053]所述连接响应模块,用于当接收到所述数据库返回的对所述加密后的认证信息认证通过的响应消息时,与所述数据库建立第二数据连接。
[0054]可选地,所述第二数据连接模块,具体用于确定所述操作请求的操作类型,根据预设的各操作类型与库类型的对应关系,确定接收到的所述操作请求的操作类型对应的库类型,与确定的库类型的数据库建立第二数据连接。
[0055]可选地,所述操作类型包括读操作类型和写操作类型,所述库类型包括主库类型和从库类型;
[0056]预设的各操作类型与库类型的对应关系包括:读操作类型与从库类型相对应,写操作类型与主库类型相对应。
[0057]根据本发明提供的数据操作方法,数据操作装置(也可称为中间件)在接收到客户端发送的第一数据连接请求后,不直接与数据库建立数据连接,而是建立与该客户端之间的第一数据连接,在第一数据连接建立后,数据操作装置等待客户端发送的操作请求,确定该操作请求的具体类型,然后该数据操作装置再向对应数据库发出第二数据连接请求,以建立与数据库之间的第二数据连接,将操作请求通过第二数据连接发送至对应的数据库进行处理,从而,不仅能够避免客户端与数据库之间的数据连接因不匹配而导致的数据操作失败,同时也节省了数据库资源。

【专利附图】

【附图说明】
[0058]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0059]图1为依据本发明一个实施例的数据操作过程的示意图;
[0060]图2为依据本发明一个实施例在实际应用场景中客户端、中间件以及数据库的连接架构示意图;
[0061]图3为依据本发明一个实施例在实际应用场景中客户端Cl通过中间件向数据库发起数据操作的流程示意图;
[0062]图4为依据本发明一个实施例在实际应用场景中客户端C2与中间件建立第一数据连接的流程示意图;
[0063]图5为依据本发明一个实施例的数据操作装置结构示意图;
[0064]图6为依据本发明一个实施例的数据操作装置中第一数据连接模块的具体结构示意图;
[0065]图7为依据本发明一个实施例的数据操作装置中第一数据连接模块的另一种具体结构示意图;
[0066]图8为依据本发明一个实施例的数据操作装置中第二数据连接模块的具体结构示意图。

【具体实施方式】
[0067]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0068]下面结合说明书附图,对本发明实施例进行详细描述。
[0069]图1为依据本发明一个实施例的数据操作方法,应用于耦接在客户端与数据库之间的数据操作装置(也可称为中间件),所述方法可以包括步骤:
[0070]SlOl:接收所述客户端发送的第一数据连接请求。
[0071]S102:建立所述数据操作装置与所述客户端之间的第一数据连接。
[0072]S103:通过所述第一数据连接,接收所述客户端发送的操作请求。
[0073]S104:根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接。
[0074]S105:将所述操作请求通过所述第二数据连接发送至所述数据库。
[0075]从上述可知,在该实施例中,数据操作装置(中间件)在接收到客户端发送的第一数据连接请求后,不直接与数据库建立数据连接,而是建立与该客户端之间的第一数据连接,在第一数据连接建立后,数据操作装置等待客户端发送的操作请求,确定该操作请求的具体类型,然后该数据操作装置再向相应的数据库发出第二数据连接请求,以建立与数据库之间的第二数据连接,将操作请求通过第二数据连接发送至对应的数据库进行处理,从而,不仅能够避免客户端与数据库之间的数据连接因不匹配而导致的操作请求失败,同时也节省了数据库资源。
[0076]对于上述步骤S101,依据本发明的一个实施例,客户端发出的第一数据连接请求中不含有相应的操作请求,而只是建立数据连接的请求。数据操作装置建立了与客户端的第一数据连接后,便可以传输相应的操作请求。
[0077]而在现有技术中,若数据操作装置接收到客户端发出的第一数据连接请求后,会直接将该第一数据连接请求随机转发到某一类数据库中,由该数据库直接对该客户端进行连接认证(连接认证包括获取该客户端的用户名、密码等认证信息),并在认证通过后建立与该客户端的第一数据连接,将成功建立该第一数据连接的响应发送给该客户端。
[0078]依据本发明的一个实施例,对于上述步骤S102,数据操作装置在接收到客户端发出的第一数据连接请求后,并不会直接将该第一数据连接请求随机的转发给数据库,而是由该数据操作装置模拟数据库与客户端建立第一数据连接。具体地,该步骤S102,包括:将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密;接收所述客户端发送的加密后的认证信息;采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;之后建立与所述客户端之间的第一数据连接,并向所述客户端返回建立连接成功响应。
[0079]依据本发明的一个实施例,当所述的客户端向数据操作装置发送第一数据连接请求时,客户端通常将连接请求发向该数据操作装置的互联网协议(Internet Protocol, IP)地址,表示该客户端想要建立与数据操作装置的数据连接。在数据操作装置接收到该第一数据连接请求后,为了使该客户端误认为自身直接与数据库建立连接,所以,数据操作装置会模拟数据库建立连接的机制,向该客户端发送一种随机生成的该数据操作装置自身可以识别且带有加密功能的数据,即上述的第一握手数据。客户端在接收到该第一握手数据后,使用该第一握手数据对该客户端自身的认证信息进行加密,其中,认证信息作为该客户端的唯一的标识,具体可以是用户的用户名、密码等用户身份信息,也可以是该客户端的物理地址等标识信息,客户端会将加密后的认证信息发送给数据操作装置。数据操作装置在接收到该加密后的认证信息后,可以使用自身的第一握手数据对加密后的认证信息进行解密,数据操作装置便从中获得该客户端的唯一的标识,之后数据操作装置与该客户端建立第一数据连接,数据操作装置再将数据连接建立成功的响应(该响应的形式具体可以是通知消息)发送至客户端中,那么,客户端在接收到响应后,就会认为已经与数据库建立了连接。以上便完成了数据操作装置“欺骗”客户端建立第一数据连接的过程。当然,在实际应用中,数据操作装置模拟数据库,“欺骗”客户端建立第一数据连接的过程,也可以起到保证客户端和数据操作装置之间数据匹配以及数据安全的作用。
[0080]在实际应用中,所述的第一握手数据可以是数据操作装置自身的公共密钥(也可称为公钥)以及与该公钥相匹配的私有密钥(也可称为私钥),该公钥对外公开,即数据操作装置在发送该第一握手数据时,只是将该公钥发送至所述的客户端中,使客户端使用该公钥对该客户端自身的认证信息进行加密,数据操作装置在接收到加密后的认证信息之后,数据操作装置再使用与该公钥相匹配的私钥对加密后的认证信息进行解密,从而获得该客户端的认证信息。数据操作装置使用自身的私钥顺利地对加密后的认证信息进行解密,就表明接收所述公钥的是发出第一数据连接请求的客户端,同时也表明了该客户端加密后的认证信息没有被篡改。从而保证了客户端认证信息的安全性。
[0081]需要说明的是,客户端与数据操作装置可能之前建立过数据连接(该数据连接包括但不限于:第一数据连接或其他用于传输各类操作请求的连接),数据操作装置会记录建立数据连接的客户端的相关信息,在这样的情况下,依据本发明的一个实施例,发出第一数据连接请求的客户端预先与数据操作装置已建立了传输控制协议(Transmiss1nControl Protocol, TCP)连接(这里的TCP连接区别于上述数据连接,是客户端和数据操作装置之间的基础连接,用以传输各类数据连接请求),则该数据操作装置会在建立与客户端的TCP连接时存储该客户端的身份信息,若该客户端发出了第一数据连接请求,那么,对于上述步骤S102,包括:将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密;接收所述客户端发送的加密后的认证信息;采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;将所述认证信息与预先存储的所述客户端的身份信息进行匹配,并在匹配成功后建立所述数据操作装置与所述客户端之间的第一数据连接,且向所述客户端返回建立连接成功响应。
[0082]若客户端的认证信息与数据操作装置存储的客户端的身份信息匹配成功,则表示发出所述第一数据连接请求的客户端仍是之前与数据操作装置建立过连接的客户端,但是,若匹配不成功,就表明客户端的身份发生了变化,有可能认证信息在传输至数据操作装置的途中被篡改,那么数据操作装置将拒绝该客户端本次发出的第一数据连接请求。
[0083]在现有技术中,数据库与客户端之间的数据连接建立后,客户端会将相应的操作请求发送至数据操作装置中,数据操作装置接收到客户端的操作请求后,将该操作请求直接转发至与该客户端建立了连接的数据库中。
[0084]依据本发明的一个实施例,对于上述步骤S104而言,数据操作装置在接收到客户端的操作请求后,不会直接将操作请求发送至数据库中,而是先确定该操作请求的类型,并模拟该客户端,向与该操作请求类型相对应的数据库发出第二数据连接请求,与该数据库建立第二数据连接,使该数据库误认为直接与客户端建立了连接。具体地,对于上述步骤S104而言,包括:所述数据操作装置根据所述操作请求,确定与所述操作请求对应的数据库;向确定的所述数据库发送第二数据连接请求;接收所述数据库返回的第二握手数据;采用所述第二握手数据对所述认证信息进行加密,并将加密后的认证信息发送给所述数据库;当接收到所述数据库返回的对所述加密后的认证信息认证通过的响应消息时,与所述数据库建立第二数据连接。
[0085]需要说明的是,客户端所发出的操作请求中包含了相应的操作语句,数据操作装置在接收到客户端发送的操作请求后,根据该操作请求中的操作语句,就可以确定该操作请求的操作类型,以及与该操作请求的操作类型相对应的数据库的库类型,依据本发明的一个实施例,操作请求的操作类型包括读操作类型(如任一具有读取性质的操作请求等)和写操作类型(如任一具有写入性质的操作请求等),而数据库的库类型包括主库类型和从库类型,数据操作装置将根据预先设置的各操作类型和数据库的库类型的对应关系,确定从客户端所发出的操作请求所对应的数据库,例如:在假定预设的各操作类型与库类型的对应关系为:读操作类型与从库类型相对应,写操作类型与主库类型相对应的情况下,若客户端发出的操作请求为读操作请求,则数据操作装置接收到该读操作请求后,将根据该读操作请求与从数据库类型的对应关系,向从数据库发出第二数据连接请求。
[0086]数据操作装置与数据库之间建立第二数据连接的过程类似于上述数据操作装置与客户端之间建立第一数据连接的过程。依据本发明的一个实施例,在数据操作装置确定了操作请求的类型和对应的数据库的库类型后,将向该对应的数据库发出第二数据连接请求,数据库在接收到该数据操作装置发出的第二操作请求后,也需要对该数据操作装置的进行认证。所以,数据库会将自身的第二握手数据发送给数据操作装置,此时,数据操作装置将模拟客户端,即数据操作装置将使用该第二握手数据对数据操作装置内存储的客户端的认证信息进行加密,再将加密后的认证信息发送至数据库中,使数据库认为是该客户端直接发出的数据连接请求,所以,数据库将建立与数据操作装置的第二数据连接,并且,数据库会将该第二数据连接请求成功建立的响应(该响应也可以是数据连接建立成功的通知消息)发送给数据操作装置,那么,数据操作装置接收到该响应后,便获知已成功地与数据库建立了第二数据连接,数据操作装置会将客户端发出的操作请求传输至该数据库中,以进行数据操作。
[0087]结合图2至4,本发明所述的数据操作方法的具体实际应用如下:
[0088]图2示出了在实际应用中,客户端、数据操作装置(图2及下文方法中以“中间件”来描述和说明)以及数据库的连接架构,其中,数据库具体包括MySQL主数据库和MySQL从数据库,客户端Cl首次通过该中间件向数据库发起数据操作,客户端C2之前与中间件建立过数据连接,并设定客户端Cl和C2与中间件的数据连接基于TCP协议,中间件与MySQL主数据库和MySQL从数据库的数据连接都基于数据库连接协议。
[0089]图3为客户端Cl通过中间件向数据库发起数据操作的流程,其中,客户端Cl首先与中间件建立第一数据连接,具体包括步骤:
[0090]S301:中间件接收客户端Cl发出的第一数据连接请求。
[0091]S302:中间件将第一握手数据发送至所述客户端Cl。
[0092]S303:客户端Cl使用所述第一握手数据对客户端Cl自身的认证信息进行加密,并将加密后的认证信息发送给中间件。
[0093]S304:中间件使用所述第一握手数据对加密后的认证信息进行解密,获得客户端Cl的认证信息,中间件建立与客户端Cl的第一数据连接,并向客户端Cl返回建立连接成功响应。
[0094]在上述过程中,中间件模拟数据库,使客户端Cl认为已与数据库建立了第一数据连接,那么,客户端Cl就会发起相应的数据操作(也即,该客户端Cl向对应的数据库发出操作请求),并认为该数据操作对应的操作请求发送到了数据库中,而实际上,是中间件接收到该数据操作对应的操作请求。
[0095]对于步骤S301,客户端Cl发出的第一数据连接请求中含有中间件的目的端口 IP以及客户端Cl自身的源端口 IP,客户端Cl通过该目的端口 IP将第一数据连接请求直接发向该中间件,而中间件可以根据源端口 IP将相应的数据发向该客户端Cl。除此之外,客户端Cl所发送的第一数据连接请求中还含有同步序列编号(Synchronize SequenceNumbers, SYN),在该第一数据连接请求发送后,该客户端Cl进入SYN_SENT状态,以等待中间件的响应。
[0096]在实际应用中,一些数据库作为内部数据库并不会对外部用户开放,如:某些企业内部的数据库或其他含有重要数据的数据库,这些数据库会对连接的客户端进行安全认证,在这样的情况下,中间件为了后续与数据库建立第二数据连接,也需要提前对客户端进行安全认证,所以在上述步骤S302中,中间件通过向客户端Cl发送第一握手数据的方式完成对客户端Cl的认证。其中,该第一握手数据中可以包含该中间件自身的公钥,并根据第一数据连接请求确定的客户端Cl的端口 IP。中间件发送该第一握手数据后,进入SYN_RECV状态,以等待客户端Cl的响应。
[0097]客户端Cl将使用第一握手数据中的公钥对该客户端Cl自身的认证信息进行加密,并将加密后的认证信息发回中间件,进行认证。
[0098]中间件将使用与自身的公钥相匹配的私钥对加密后的认证信息进行解密,解密后便可以获得该客户端Cl的认证信息,此时,中间件将建立第一数据连接且进入ESTABLISHED状态,表示连接成功,并向客户端Cl发送确认消息,告知该客户端Cl,本次的数据连接成功建立,相应的,客户端Cl也进入ESTABLISHED状态。这样,中间件便完成了“欺骗”客户端Cl的过程,使客户端Cl认为已经与数据库建立了连接。
[0099]依据本发明的一个实施例,经过上述过程建立第一数据连接后,客户端Cl就会发起相应的数据操作,中间件便可以根据该客户端Cl的数据操作,建立与数据库的第二数据连接,具体包括步骤:
[0100]S305:中间件通过所述第一数据连接,接收客户端Cl发送的查询操作请求。
[0101]S306:中间件根据该查询操作请求,确定与该查询操作请求对应的数据库为MySQL从数据库。
[0102]S307:中间件向MySQL从数据库发出第二数据连接请求。
[0103]S308:中间件接收MySQL从数据库返回的第二握手数据,并使用该第二握手数据对客户端Cl的认证信息进行加密,将加密后的认证信息发送给MySQL从数据库。
[0104]S309:当接收到MySQL从数据库返回的对加密后的认证信息认证通过的响应消息时,与MySQL从数据库建立第二数据连接,且将客户端Cl的查询操作请求通过第二数据连接发送给MySQL从数据库。
[0105]在上述过程中,中间件模拟客户端Cl,使MySQL从数据库认为直接与客户端Cl建立了第二数据连接。
[0106]对于上述客户端Cl发出的查询请求,属于读操作类型的操作请求,该客户端Cl所发出的查询请求可以是基于结构化查询语言(Structured Query Language, SQL)的查询请求,如:若客户端Cl想要查询MySQL数据库中某一数据表中的某一项数据,则该客户端Cl的查询请求采用“SELECT数据项名称FROM数据表名称”的语句。也就是说,中间件可以根据客户端Cl发出的操作请求中包含的操作语句,确定出该操作请求的操作类型。当然,这里并不构成对本发明的限定。
[0107]在上述步骤S306中,中间件将根据预设的各操作类型与数据库的库类型的对应关系,确定接收到的查询操作请求的操作类型对应的库类型,也即,中间件确定出该查询操作请求为读操作类型,再根据读操作类型与从数据库的对应关系,确定出MySQL从数据库就是查询操作请求所对应的数据库。如果客户端Cl发出的是写操作类型的操作请求,那么,中间件将根据写操作类型与主数据库的对应关系,确定出MySQL主数据库是写操作类型的操作请求所对应的数据库。
[0108]在确定出MySQL从数据库后,中间件就向MySQL从数据库发出第二数据连接请求,以建立第二数据连接。与建立第一数据连接类似,中间件在发出第二操作请求后,进入SYN_SENT状态,以等待MySQL从数据库的响应。而MySQL从数据库接收到中间件发出的第二数据连接请求后,向该中间件发出第二握手数据,并进入SYN_RECV状态,以等待中间件的响应。
[0109]第二握手数据中含有MySQL从数据库自身的公钥,中间件使用该公钥对客户端Cl的认证信息进行加密,将加密后的认证信息发送至该MySQL从数据库。MySQL从数据库也会使用自身的私钥对该加密后的认证信息进行解密,获得客户端Cl的该认证信息,从而MySQL从数据库进入ESTABLISHED状态,表示第二数据连接成功,并向中间件发送响应消息,相应的,该中间件也进入ESTABLISHED状态。
[0110]这样,中间件便建立了与MySQL从数据库的第二数据连接,之后该中间件会将客户端Cl的查询操作请求通过该第二数据连接发送给MySQL从数据库,从而进行数据的查询操作。在整个数据操作过程中,客户端Cl会认为直接与MySQL从数据库建立了连接,MySQL从数据库则会认为直接与客户端Cl建立了连接。显然,中间件在不影响客户端和数据库进行数据操作的情况下,准确完成了对数据连接的准确匹配,保证数据操作的成功执行。
[0111]对于客户端C2而言,由于该客户端C2之前与中间件建立过数据连接,所以,中间件中存储有该客户端C2的身份信息,在这样的情况下,如图4所示,客户端C2与中间件建立第一数据连接的过程,具体包括步骤:
[0112]S401:中间件接收客户端C2发出的第一数据连接请求。
[0113]S402:中间件将第一握手数据发送至所述客户端C2。
[0114]S403:客户端C2使用所述第一握手数据对客户端C2自身的认证信息进行加密,并将加密后的认证信息发送给中间件。
[0115]S404:中间件使用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息。
[0116]S405:中间件将所述认证信息与预先存储的客户端C2的身份信息进行匹配,并在匹配成功后与所述客户端建立第一数据连接,向客户端C2返回建立连接成功响应。
[0117]客户端C2向中间件发送第一操作请求、接收中间件的第一握手数据对该客户端C2自身的认证信息进行加密的过程与上述客户端Cl类似,故在此不再赘述。
[0118]由于中间件中预先存储有该客户端C2的身份信息,所以,在上述步骤S405中,中间件解密获得客户端C2的认证信息后,将该认证信息与预先存储的客户端C2的身份信息进行匹配,其中,客户端C2的身份信息可以是该客户端C2的MAC地址、用户名及对应的用户密码、端口 IP等信息。如果客户端C2的认证信息与预先存储于中间件中的身份信息相匹配,中间件就建立与该客户端C2的第一数据连接。但如果不匹配,就说明客户端C2的认证信息可能被篡改或该客户端C2的身份发生了变化,那么,中间件会将本次的第一数据连接请求列为可疑操作,并拒绝该第一数据连接请求。
[0119]该客户端C2通过中间件建立与数据库建立第二数据连接的过程与上述客户端Cl类似,在此不再赘述。
[0120]以上为本发明实施例提供的数据操作方法,基于同样的思路,本发明实施例还提供一种数据操作装置,如图5所示。
[0121]图5中的数据操作装置,设置在客户端和服务器之间并与之相连接,所述装置包括:第一数据连接模块501、操作请求接收模块502、第二数据连接模块503以及操作请求发送模块504,其中,
[0122]所述第一数据连接模块501,用于接收所述客户端发送的第一数据连接请求,建立与所述客户端之间的第一数据连接。
[0123]所述操作请求接收模块502,用于通过所述第一数据连接,接收所述客户端发送的操作请求。
[0124]所述第二数据连接模块503,用于根据所述操作请求,建立与相应的数据库之间的第二数据连接。
[0125]所述操作请求发送模块504,用于将所述操作请求通过所述第二数据连接发送至所述数据库。
[0126]依据本发明的一个实施例,如图6所示,所述第一数据连接模块,包括:第一握手模块6011、解密模块6012以及连接响应模块6013,其中,
[0127]所述第一握手模块6011,用于将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密。
[0128]所述解密模块6012,用于接收所述客户端发送的加密后的认证信息,采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息。
[0129]所述连接响应模块6013,用于建立与所述客户端之间的第一数据连接,并向所述客户端返回建立连接成功响应。
[0130]客户端与数据操作装置可能之前建立过数据连接,数据操作装置会记录建立数据连接的客户端的相关信息,在这样的情况下,依据本发明的一个实施例,如图7所示,所述第一数据连接模块,包括:第一握手模块7011、解密模块7012以及连接响应模块7013,其中,
[0131 ] 所述第一握手模块7011,用于将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密。
[0132]所述解密模块7012,用于接收所述客户端发送的加密后的认证信息,采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息。
[0133]所述连接响应模块7013,用于将所述认证信息与预先存储的所述客户端的身份信息进行匹配,并在匹配成功后与所述客户端建立第一数据连接,且向所述客户端返回建立连接成功响应。
[0134]所述第二数据连接模块与数据库之间建立第二数据连接的过程类似于上述建立第一数据连接的过程,依据本发明的一个实施例,如图8所示,第二数据连接模块,包括:数据库确定模块801、第二握手模块802、加密模块803以及连接响应模块804,其中,
[0135]所述数据库确定模块801,用于根据所述操作请求,确定与所述操作请求对应的数据库。
[0136]所述第二握手模块802,用于向确定的所述数据库发送第二数据连接请求,并接收所述数据库返回的第二握手数据。
[0137]所述加密模块803,用于采用所述第二握手数据对所述认证信息进行加密,并将加密后的认证信息发送给所述数据库。
[0138]所述连接响应模块804,用于当接收到所述数据库返回的对所述加密后的认证信息认证通过的响应消息时,与所述数据库建立第二数据连接。
[0139]对于所述第二数据连接模块,其具体用于确定所述操作请求的操作类型,根据预设的各操作类型与库类型的对应关系,确定接收到的所述操作请求的操作类型对应库类型,与确定的库类型的数据库建立第二数据连接。
[0140]依据本发明的一个实施例,所述操作类型包括读操作类型和写操作类型,所述库类型包括主库类型和从库类型,预设的各操作类型与库类型的对应关系包括:读操作类型与从库类型相对应,写操作类型与主库类型相对应。
[0141]本发明实施例提供一种数据操作方法及装置,数据操作装置在接收到客户端发送的第一数据连接请求后,不直接与数据库建立数据连接,而是与该客户端之间建立第一数据连接,在第一数据连接建立后,数据操作装置等待客户端发送的操作请求,确定该操作请求的具体类型,然后该数据操作装置再向对应数据库发出第二数据连接请求,以建立与数据库之间的第二数据连接,将操作请求通过第二数据连接发送至对应的数据库进行处理,从而,不仅能够避免客户端与数据库之间的数据连接因不匹配而导致的操作请求失败,同时也节省了数据库资源。
[0142]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0143]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0144]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0145]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0146]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0147]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截应用程序中的植入信息的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0148]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”或“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0149]本发明可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
[0150]计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
[0151]本发明包括:A7、一种数据操作装置,用于在客户端和服务器之间进行数据操作,所述装置包括:第一数据连接模块、操作请求接收模块、第二数据连接模块以及操作请求发送模块,其中,
[0152]所述第一数据连接模块,用于接收所述客户端发送的第一数据连接请求,建立与所述客户端之间的第一数据连接;
[0153]所述操作请求接收模块,用于通过所述第一数据连接,接收所述客户端发送的操作请求;
[0154]所述第二数据连接模块,用于根据所述操作请求,建立与相应的数据库之间的第二数据连接;
[0155]所述操作请求发送模块,用于将所述操作请求通过所述第二数据连接发送至所述数据库。
[0156]All、如权利要求A7所述的装置,其特征在于,所述第二数据连接模块,具体用于确定所述操作请求的操作类型,根据预设的各操作类型与库类型的对应关系,确定接收到的所述操作请求的操作类型对应的库类型,与确定的库类型的数据库建立第二数据连接。
[0157]A12、如权利要求All所述的装置,其特征在于,所述操作类型包括读操作类型和写操作类型,所述库类型包括主库类型和从库类型;
[0158]预设的各操作类型与库类型的对应关系包括:读操作类型与从库类型相对应,写操作类型与主库类型相对应。
【权利要求】
1.一种数据操作方法,应用于耦接在客户端与数据库之间的数据操作装置,以进行数据操作,所述方法包括: 接收所述客户端发送的第一数据连接请求; 建立所述数据操作装置与所述客户端之间的第一数据连接; 通过所述第一数据连接,接收所述客户端发送的操作请求; 根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接;以及 将所述操作请求通过所述第二数据连接发送至所述数据库。
2.如权利要求1所述的方法,其特征在于,建立所述数据操作装置与所述客户端之间的第一数据连接,具体包括: 将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密; 接收所述客户端发送的加密后的认证信息; 采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;以及建立所述数据操作装置与所述客户端之间的第一数据连接,并向所述客户端返回建立连接成功响应。
3.如权利要求1所述的方法,其特征在于,所述数据操作装置预先存储所述客户端的身份信息; 建立所述数据操作装置与所述客户端之间的第一数据连接,具体包括: 将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密; 接收所述客户端发送的加密后的认证信息; 采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息;将所述认证信息与预先存储的所述客户端的身份信息进行匹配,并在匹配成功后建立所述数据操作装置与所述客户端之间的第一数据连接,且向所述客户端返回建立连接成功响应。
4.如权利要求2或3所述的方法,其特征在于,根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接,具体包括: 根据所述操作请求,确定与所述操作请求对应的数据库; 向确定的所述数据库发送第二数据连接请求; 接收所述数据库返回的第二握手数据; 采用所述第二握手数据对所述认证信息进行加密,并将加密后的认证信息发送给所述数据库;以及 当接收到所述数据库返回的对所述加密后的认证信息认证通过的响应消息时,与所述数据库建立第二数据连接。
5.如权利要求1所述的方法,其特征在于,根据所述操作请求,建立所述数据操作装置与相应的数据库之间的第二数据连接,具体包括: 确定所述操作请求的操作类型; 根据预设的各操作类型与库类型的对应关系,确定接收到的所述操作请求的操作类型对应的库类型; 与确定的库类型的数据库建立第二数据连接。
6.如权利要求5所述的方法,其特征在于,所述操作类型包括读操作类型和写操作类型,所述库类型包括主库类型和从库类型; 预设的各操作类型与库类型的对应关系包括:读操作类型与从库类型相对应,写操作类型与主库类型相对应。
7.一种数据操作装置,用于在客户端和服务器之间进行数据操作,所述装置包括--第一数据连接模块、操作请求接收模块、第二数据连接模块以及操作请求发送模块,其中, 所述第一数据连接模块,用于接收所述客户端发送的第一数据连接请求,建立与所述客户端之间的第一数据连接; 所述操作请求接收模块,用于通过所述第一数据连接,接收所述客户端发送的操作请求; 所述第二数据连接模块,用于根据所述操作请求,建立与相应的数据库之间的第二数据连接; 所述操作请求发送模块,用于将所述操作请求通过所述第二数据连接发送至所述数据库。
8.如权利要求7所述的装置,其特征在于,所述第一数据连接模块,具体包括:第一握手模块、解密模块以及连接响应模块,其中, 所述第一握手模块,用于将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密; 所述解密模块,用于接收所述客户端发送的加密后的认证信息,采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息; 所述连接响应模块,用于与所述客户端建立第一数据连接,并向所述客户端返回建立连接成功响应。
9.如权利要求7所述的装置,其特征在于,所述装置预先存储所述客户端的身份信息,所述第一数据连接模块,具体包括:第一握手模块、解密模块以及连接响应模块,其中, 所述第一握手模块,用于将第一握手数据发送至所述客户端,使所述客户端使用所述第一握手数据对所述客户端自身的认证信息进行加密; 所述解密模块,用于接收所述客户端发送的加密后的认证信息,采用所述第一握手数据对所述加密后的认证信息进行解密,获得所述认证信息; 所述连接响应模块,用于将所述认证信息与预先存储的所述客户端的身份信息进行匹配,并在匹配成功后建立与所述客户端之间的第一数据连接,且向所述客户端返回建立连接成功响应。
10.如权利要求8或9所述的装置,其特征在于,所述第二数据连接模块,具体包括:数据库确定模块、第二握手模块、加密模块以及连接响应模块,其中, 所述数据库确定模块,用于根据所述操作请求,确定与所述操作请求对应的数据库;所述第二握手模块,用于向确定的所述数据库发送第二数据连接请求,并接收所述数据库返回的第二握手数据; 所述加密模块,用于采用所述第二握手数据对所述认证信息进行加密,并将加密后的认证信息发送给所述数据库; 所述连接响应模块,用于当接收到所述数据库返回的对所述加密后的认证信息认证通过的响应消息时,与所述数据库建立第二数据连接。
【文档编号】G06F17/30GK104394171SQ201410768641
【公开日】2015年3月4日 申请日期:2014年12月11日 优先权日:2014年12月11日
【发明者】朱超, 王超, 陈非 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1