数据库访问方法及数据库代理节点的制作方法
【专利摘要】本发明公开了一种数据库访问方法,应用于数据库代理节点,通过数据库代理节点为后端的多个数据库服务器提供代理服务。针对后端的任一数据库服务器,若数据库代理节点在该数据库服务器的高负荷时间段之内接收到指向该数据库服务器的数据库访问请求时,首先确定该数据库访问请求携带的SQL语句的类型,若携带的SQL语句为DQL语句,则直接获取并发送所述SQL语句指向的业务数据至数据库访问请求的源用户终端;若携带的SQL语句为DML语句,则等待到达所述数据库服务器的高负荷时间段之外时,将数据库访问请求发送至数据库服务器执行。本发明还公开了一种数据库代理节点。本发明能够提高数据库服务器工作的稳定性。
【专利说明】数据库访问方法及数据库代理节点
[0001 ] 技术邻域
[0002]本发明涉及互联网技术领域,尤其涉及一种数据库访问方法及数据库代理节点。
【背景技术】
[0003]随着互联网技术的高速发展,各种以个性化的操作、丰富的内容、活跃的互动形式的专业化综合性用户中心网站应运而生,例如近期涌现的各种电子商务网站、微博网站等。前述用户中心网站均是通过后端的数据库服务器提供内容支持,当短期内大量访问请求并发时,数据库服务器由于性能限制往往不能及时执行所有的访问请求,导致响应延迟,甚至宕机而停止服务,存在工作稳定性较低的问题。
【发明内容】
[0004]本发明的主要目的在于提供一种数据库访问方法及数据库代理节点,旨在提高数据库服务器工作的稳定性。
[0005]为实现上述目的,本发明提供一种数据库访问方法,该数据库访问方法包括以下步骤:
[0006]步骤A,在接收到用户终端发送的数据库访问请求时,数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内,若否则转入执行步骤B,是则转入执行步骤C;
[0007]步骤B,所述数据库代理节点将所述数据库访问请求转发至所述数据库服务器执行;
[0008]步骤C,所述数据库代理节点解析出所述数据库访问请求携带的SQL语句,其中,若所述SQL语句为DQL语句,则转入执行步骤D,若所述SQL语句为DML语句,则到达所述数据库服务器的高负荷时间段之外时,转入执行步骤B;
[0009]步骤D,所述数据库代理节点获取当前储存的所述SQL语句指向的业务数据,并将获取的业务数据发送至所述用户终端。
[0010]可选地,所述将获取的业务数据发送至所述用户终端的步骤之前,还包括:
[0011 ]在获取储存的业务数据失败时,所述数据库代理节点基于其他数据库代理节点获取并储存所述SQL语句指向的业务数据,并转入执行所述将获取的业务数据发送至所述用户终端的步骤。
[0012]可选地,所述数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内的步骤之前,还包括:
[0013]在接收到用户终端发送的数据库访问请求时,所述数据库代理节点对所述用户终端进行验证操作;
[0014]在验证通过时,执行所述数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内的步骤。
[0015]可选地,所述将获取的业务数据发送至所述用户终端的步骤包括:
[0016]所述数据库代理节点使用预设的密钥加密获取的所述业务数据,并将加密后的业务数据发送至所述用户终端,以供所述用户终端基于相应的密钥解密出业务数据。
[0017]可选地,所述数据库访问方法,还包括:
[0018]所述数据库代理节点更新储存的各数据库服务器的高负荷时间段信息。
[0019]此外,为实现上述目的,本发明还提供一种数据库代理节点,该数据库代理节点包括:
[0020]判断模块,用于在接收到用户终端发送的数据库访问请求时,判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内;
[0021]发送模块,用于在当前位于所述数据库服务器的高负荷时间段之外时,将所述数据库访问请求转发至所述数据库服务器执行;
[0022]解析模块,用于在当前位于所述数据库服务器的高负荷时间段之内时,解析出所述数据库访问请求携带的SQL语句;
[0023]所述发送模块还用于,在所述SQL语句为DQL语句时,获取当前储存的所述SQL语句指向的业务数据,并将获取的业务数据发送至所述用户终端;以及
[0024]在所述SQL语句为DML语句,且到达所述数据库服务器的高负荷时间段之外时,将所述数据库访问请求转发至所述数据库服务器执行。
[0025]可选地,所述发送模块还用于在获取储存的业务数据失败时,基于其他数据库代理节点获取并储存所述SQL语句指向的业务数据。
[0026]可选地,所述数据库代理节点还包括:
[0027]验证模块,用于在接收到用户终端发送的数据库访问请求时,对所述用户终端进行验证操作;
[0028]所述判断模块还用于在验证通过时,判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内。
[0029]可选地,所述发送模块还用于使用预设的密钥加密获取的所述业务数据,并将加密后的业务数据发送至所述用户终端,以供所述用户终端基于相应的密钥解密出业务数据。
[0030]可选地,所述数据库代理节点,还包括:
[0031]更新模块,用于更新储存的各数据库服务器的高负荷时间段信息。
[0032]本发明提出的数据库访问方法,应用于数据库代理节点,通过数据库代理节点为后端的多个数据库服务器提供代理服务。针对后端的任一数据库服务器,若数据库代理节点在该数据库服务器的高负荷时间段之内接收到指向该数据库服务器的数据库访问请求时,首先确定该数据库访问请求携带的SQL语句的类型,若携带的SQL语句为DQL语句,则直接获取并发送所述SQL语句指向的业务数据至数据库访问请求的源用户终端;若携带的SQL语句为DML语句,则等待到达所述数据库服务器的高负荷时间段之外时,将数据库访问请求发送至数据库服务器执行。相较于现有技术,本发明能够在数据库服务器高负荷工作时,为数据库服务器分担部分压力,达到提升数据库服务器工作稳定性的目的。
【附图说明】
[0033]图1为本发明数据库访问方法第一实施例的流程示意图;
[0034]图2为本发明数据库访问方法第一实施例中的数据库拓扑结构示例图;
[0035]图3为本发明数据库代理节点第一实施例的功能模块示意图。
[0036]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
【具体实施方式】
[0037]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0038]本发明提供一种数据库访问方法,参照图1,在本发明数据库访问方法的第一实施例中,该数据库访问方法包括:
[0039]步骤S10,在接收到用户终端发送的数据库访问请求时,数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内,若否则转入执行步骤S20,是则转入执行步骤S30 ;
[0040]参照图2,为本发明数据库访问方法应用的数据库拓扑结构示例图,如图2所示,数据库代理节点为后端的多个数据库服务器提供代理服务,针对后端的任一数据库服务器,若数据库代理节点在该数据库服务器的高负荷时间段之内接收到指向该数据库服务器的数据库访问请求时,首先确定该数据库访问请求携带的SQL(Structured Query Language,结构化查询语言)语句的类型,然后根据解析出SQL语句的类型执行不同的操作,以减轻数据库服务器的工作压力,提升数据库服务器的工作稳定性。
[0041]具体的,在本发明实施例中,用户终端提供基于数据库服务器的可视化操作界面,如通过浏览器提供的网页界面;用户终端在接收到用户基于浏览器的地址栏输入的URL,或者基于浏览器显示的超链接地址触发的点击操作,或者其它类型的操作时,生成携带相应URL(或者IP地址)以及SQL语句的数据库访问请求发送至数据库代理节点,以请求前述URL或者超链接地址对应的业务数据;所述数据库代理节点在接收到用户终端发送的数据库访问请求时,首先判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内。
[0042]需要说明的是,数据库代理节点还储存有其代理的各数据库服务器的高负荷时间段信息,用于描述各数据库服务器可能处于高负荷的时间段。其中,高负荷时间段信息可由具有权限的管理人员手动录入,也可由各数据库服务器根据其记录的实时工作负荷统计得出,并发送至数据库代理节点。数据库代理节点在接收到用户终端发送的数据库访问请求时,直接判断当前的系统时间是否为位于该数据库访问请求对应的数据库服务器的高负荷时间段内,是则确定该数据库服务器处于高负荷工作状态。
[0043]需要说明的是,在其他实施例中,上述步骤SlO之前,还包括:
[0044]数据库路由设备接收所述用户终端发送的原始数据库访问请求,所述原始数据库访问请求携带有所述用户终端请求的原始URL,所述原始URL对应的域名为所述用户终端请求的原始域名;所述数据库路由设备向所述用户终端返回重定向响应消息,所述重定向响应消息携带的URL对应的域名中包括所述数据库路由设备为所述用户终端选择的数据库代理节点的节点标识,以供所述用户终端向所述数据库代理节点发送数据库访问请求,由所述数据库代理节点提供代理服务。
[0045]例如,用户终端向数据库代理节点发送的数据库访问请求中携带的URL为http://WWW.XXX.com/news/a.html,其中,www.XXX.com对应的内容由后台的数据库服务器提供,并且通过数据库代理节点提供代理服务,数据库路由设备根据预定策略为用户终端选择一个数据库代理节点,选中的数据库代理节点的节点标识为Cl,则构造新的URL为http://Cl/WWW.XXX.com/news/a.html。用户终端向所述新的URL发送数据库访问请求,以请求对应前述页面的业务数据。
[0046]步骤S20,所述数据库代理节点将所述数据库访问请求转发至所述数据库服务器执行;
[0047]容易理解的是,在位于数据库服务器的高负荷时间段之外,即数据库服务器未高负荷工作时,数据库服务器能够正常的提供的数据服务,数据库代理节点显然没有必要提供代理服务。因此,在本发明实施例中,数据库代理节点在确定当前位于所述数据库访问请求对应的数据库服务器的高负荷时间段之外时,直接将接收的数据库访问请求转发至所述数据库服务器执行。
[0048]具体的,数据库服务器在执行接收的数据库访问请求时,解析出该数据库访问请求携带的SQL语句,其中,SQL语句包括DQL(Data Query Language,数据查询语言)语句和DML(Data Manipulat1n Language,数据操作语言)语句。当解析出的SQL语句为DQL语句时,说明用户欲对数据库中的数据进行查询;当解析出的SQL语句为DML语句时,说明用户欲对数据库中的数据进行操作,包括插入数据、更改数据或删除数据等。
[0049]例如,当解析出的SQL语句为DQL语句时,数据库服务器获取存储的所述SQL语句指向的业务数据,并将获取的业务数据返回至其接收的数据库访问请求的源用户终端;又例如,当解析出的SQL语句为DML语句时,数据库服务器基于解析出的SQL语句进行相应的操作,并返回操作的结果至所述用户终端,至少包括操作是否成功的信息。
[0050]步骤S30,所述数据库代理节点解析出所述数据库访问请求携带的SQL语句,其中,若所述SQL语句为DQL语句,则转入执行步骤S40,若所述SQL语句为DML语句,则到达所述数据库服务器的高负荷时间段之外时,转入执行步骤S20;
[0051]步骤S40,所述数据库代理节点获取当前储存的所述SQL语句指向的业务数据,并将获取的业务数据发送至所述用户终端。
[0052]本领域技术人员可以理解的是,数据库服务器在高负荷工作的情况下,其响应数据库访问请求的延迟将明显增加,而且,随着接收的数据库访问请求持续增长,将使得数据库服务器的处理资源消耗殆尽,可能出现宕机停止服务的情况。因此,在本发明实施例中,在当前位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内时,数据库代理节点代理数据库服务器提供服务。
[0053]具体的,数据库代理节点在确定当前位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内时,首先解析出接收的数据库访问请求所携带的SQL语句,并判断解析出的SQL语句是否为DQL语句;其中,
[0054]在解析出的SQL语句为DQL语句时,数据库代理节点获取当前储存的所述SQL语句指向的业务数据,直接将获取的业务数据发送至所述用户终端,供其呈现给用户;
[0055]在解析出的SQL语句为DQL语句时,数据库代理节点等待到达所述数据库服务器的高负荷时间段之外时,将接收的数据库访问请求发送至所述数据库服务器执行。
[0056]需要说明的是,在其他实施例中,所述数据库代理节点还删除储存的,且在预设时间段内未被访问的业务数据。其中,所述预设时间段可按实际需要进行设置,例如,本实施例将所述预设时间段设置为24小时,本领域技术人员可以理解的是,通过定期删除长时间未被访问的业务数据,能够提升数据库代理节点存储空间的利用率,以更好的提供代理服务。
[0057]本实施例提出的数据库访问方法,通过数据库代理节点为后端的多个数据库服务器提供代理服务,针对后端的任一数据库服务器,若数据库代理节点在该数据库服务器的高负荷时间段之内接收到指向该数据库服务器的数据库访问请求时,首先确定该数据库访问请求携带的SQL语句的类型,若携带的SQL语句为DQL语句,则直接获取并发送所述SQL语句指向的业务数据至数据库访问请求的源用户终端;若携带的SQL语句为DML语句,则等待到达所述数据库服务器的高负荷时间段之外时,将数据库访问请求发送至数据库服务器执行。相较于现有技术,本发明能够在数据库服务器高负荷工作时,为数据库服务器分担部分压力,达到提升数据库服务器工作稳定性的目的。
[0058]进一步地,基于第一实施例,提出了本发明数据库访问方法的第二实施例,在本实施例中,所述将获取的业务数据发送至所述用户终端的步骤之前,还包括:
[0059]在获取储存的业务数据失败时,所述数据库代理节点基于其他数据库代理节点获取并储存所述SQL语句指向的业务数据,并转入执行所述将获取的业务数据发送至所述用户终端的步骤。
[0060]需要说明的是,本实施例与第一实施例的区别在于,本实施例增加了数据库代理节点获取存储的业务数据失败时的处理操作,以下仅针对该区别进行说明,其他可参照第一实施例,此处不再赘述。
[0061]基于前述描述,本领域技术人员可以理解的是,数据库服务器在高负荷工作的情况下,其响应数据库访问请求的延迟将明显增加,而且,随着接收的数据库访问请求持续增长,将使得数据库服务器的处理资源消耗殆尽,可能出现宕机停止服务的情况。因此,在本发明实施例中,所述数据库代理节点在获取存储的业务数据失败时,所述数据库代理节点基于其他数据库代理节点获取并储存所述数据库访问请求指向的业务数据,以下以前述数据库代理节点为第一代理节点,前述其他数据库代理节点为第二代理节点进行具体说明:
[0062]第一代理节点在获取存储的业务数据失败时,将其接收的数据库访问请求转发至第二代理节点,其中,第一代理节点在数据库访问请求中添加有用于描述用户终端验证通过的标识信息,以避免第二代理节点进行二次验证,造成不必要的处理资源浪费;第二代理节点在接收到第一代理节点转发的数据库访问请求时,识别到该数据库访问请求携带的前述标识信息,直接获取存储的所述数据库访问请求指向的业务数据返回至第一代理节点;第一代理节点在接收到第二代理节点返回的业务数据时,将接收的业务数据存储为所述数据库访问请求指向的业务数据,同时,使用更新后的公钥加密该业务数据后返回至所述用户终端。
[0063]本实施例通过数据库代理节点在未存储有其接收的数据库访问请求所指向的业务数据时,基于其他数据库代理节点提供代理服务,确保用户终端能够正常获得数据服务。
[0064]进一步地,基于第一实施例,提出本发明数据库访问方法的第三实施例,在本实施例中,步骤S1之前,还包括:
[0065]在接收到用户终端发送的数据库访问请求时,所述数据库代理节点对所述用户终端进行验证操作;
[0066]在验证通过时,转入执行步骤SlO。
[0067]需要说明的是,本实施例与第一实施例的区别在于,本实施例在第一实施例的基础上,增加了对用户终端的验证操作,以下仅针对该区别进行说明,其他可参照第一实施例,此处不再赘述。
[0068]在本发明实施例中,所述数据库代理节点在接收到用户终端发送的数据库访问请求时,首先基于接收的数据库访问请求对用户终端的身份进行验证,例如,用户终端发送的数据库访问请求中还携带有用户基于用户终端预输入的用户名及对应的密码,数据库代理节点在接收到用户终端发送的数据库访问请求时,根据数据库访问请求携带的用户名及密码对用户终端的身份进行验证,以确定对应的用户是否为已授权的用户。在验证通过之后,再判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内,以开始代理服务的处理流程,具体可参照第一实施例,此处不再赘述。
[0069]本实施例通过对用户终端进行验证,能够提升储存数据的安全性。
[0070]进一步地,基于前述任一实施例,提出了本发明数据库访问方法的第四实施例,在本实施例中,所述将获取的业务数据发送至所述用户终端的步骤包括:
[0071]所述数据库代理节点使用预设的密钥加密获取的所述业务数据,并将加密后的业务数据发送至所述用户终端,以供所述用户终端基于相应的密钥解密出业务数据。
[0072]需要说明的是,本实施例与第一实施例的区别在于,本实施例增加了发送业务数据的具体描述,以下仅针对该区别进行说明,其他可分别参照前述各实施例,此处不再赘述。
[0073]本领域技术人员可以理解的是,数据在网络的传输过程中,容易被非法分子盗取,导致用户数据泄露。因此,在本实施例中,数据库代理节点在发送获取的业务数据时,首先获取的预设的密钥,并使用该密钥加密获取的业务数据,其中,可以采用如RSA算法或Elgamal算法等非对称加密算法进行加密,也可以采用如DES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法或者IDEA算法等对称加密算法进行加密。
[0074]例如,当数据库代理节点基于用户终端预先发布的公钥采用RSA算法加密获取的业务数据时,则用户终端需要基于前述公钥对应的私钥并采用RSA算法解密出业务数据;又例如,当数据库代理节点采用与用户终端预先约定的密钥采用DES算法加密获取的业务数据时,则用户终端需要基于相同的所述密钥并采用DES算法解密出业务数据。
[0075]本实施例通过加密传输的业务数据,能够数据传输的安全性。
[0076]进一步地,基于前述任一实施例,提出了本发明数据库访问方法的第五实施例,在本实施例中,所述数据库访问方法,还包括:
[0077]所述数据库代理节点更新储存的各数据库服务器的高负荷时间段信息。
[0078]需要说明的是,本实施例与前述任一实施例的区别在于,本实施例增加了对数据库服务器的高负荷时间段信息的更新操作,以下仅对该区别进行描述,其他可分别参照前述各实施例,此处不再赘述。
[0079]在本发明实施例中,提供了三种更新高负荷时间段信息的方式:
[0080]其一,数据库代理节点在接收到具有预设权限的管理人员的更新指令时,根据接收的更新指令更新对应的数据库服务器的高负荷时间段信息;
[0081]其二,数据库代理节点在接收到数据库服务器发送的高负荷时间段信息时,将储存的对应该数据库服务器的高负荷时间段信息更新为接收的高负荷时间段信息;
[0082]其三,数据库代理节点定时发送更新请求至各数据库服务器,并在接收到各数据库服务器基于接收的更新请求返回的高负荷时间段信息时,将对应各数据服务器的高负荷时间段信息分别更新为接收的对应高负荷时间段信息。
[0083]本实施例通过对储存的各数据库服务器的高负荷时间段信息进行更新,使得数据库代理节点能够更好的提供代理服务,进一步提升数据库服务器工作的稳定性。
[0084]本发明还提供一种数据库代理节点,参照图3,在本发明数据库代理节点的第一实施例中,该数据库代理节点包括:
[0085]判断模块10,用于在接收到用户终端发送的数据库访问请求时,判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内;
[0086]如图2所示,数据库代理节点为后端的多个数据库服务器提供代理服务,针对后端的任一数据库服务器,若数据库代理节点在该数据库服务器的高负荷时间段之内接收到指向该数据库服务器的数据库访问请求时,首先确定该数据库访问请求携带的SQL(Structured Query Language,结构化查询语言)语句的类型,然后根据解析出SQL语句的类型执行不同的操作,以减轻数据库服务器的工作压力,提升数据库服务器的工作稳定性。
[0087]具体的,在本发明实施例中,用户终端提供基于数据库服务器的可视化操作界面,如通过浏览器提供的网页界面;用户终端在接收到用户基于浏览器的地址栏输入的URL,或者基于浏览器显示的超链接地址触发的点击操作,或者其它类型的操作时,生成携带相应URL(或者IP地址)以及SQL语句的数据库访问请求发送至数据库代理节点,以请求前述URL或者超链接地址对应的业务数据;所述数据库代理节点在接收到用户终端发送的数据库访问请求时,首先判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内。
[0088]需要说明的是,数据库代理节点还储存有其代理的各数据库服务器的高负荷时间段信息,用于描述各数据库服务器可能处于高负荷的时间段。其中,高负荷时间段信息可由具有权限的管理人员手动录入,也可由各数据库服务器根据其记录的实时工作负荷统计得出,并发送至数据库代理节点。在接收到用户终端发送的数据库访问请求时,判断模块10直接判断当前的系统时间是否为位于该数据库访问请求对应的数据库服务器的高负荷时间段内,是则确定该数据库服务器处于高负荷工作状态。
[0089]需要说明的是,在其他实施例中,数据库代理节点在提供代理服务之前,还包括:
[0090]数据库路由设备接收所述用户终端发送的原始数据库访问请求,所述原始数据库访问请求携带有所述用户终端请求的原始URL,所述原始URL对应的域名为所述用户终端请求的原始域名;所述数据库路由设备向所述用户终端返回重定向响应消息,所述重定向响应消息携带的URL对应的域名中包括所述数据库路由设备为所述用户终端选择的数据库代理节点的节点标识,以供所述用户终端向所述数据库代理节点发送数据库访问请求,由所述数据库代理节点提供代理服务。
[0091]例如,用户终端向数据库代理节点发送的数据库访问请求中携带的URL为http://WWW.XXX.com/news/a.html,其中,www.XXX.com对应的内容由后台的数据库服务器提供,并且通过数据库代理节点提供代理服务,数据库路由设备根据预定策略为用户终端选择一个数据库代理节点,选中的数据库代理节点的节点标识为Cl,则构造新的URL为http://Cl/WWW.XXX.com/news/a.html。用户终端向所述新的URL发送数据库访问请求,以请求对应前述页面的业务数据。
[0092]发送模块20,用于在当前位于所述数据库服务器的高负荷时间段之外时,将所述数据库访问请求转发至所述数据库服务器执行;
[0093]容易理解的是,在位于数据库服务器的高负荷时间段之外,即数据库服务器未高负荷工作时,数据库服务器能够正常的提供的数据服务,数据库代理节点显然没有必要提供代理服务。因此,在本发明实施例中,发送模块20在判断模块10确定当前位于所述数据库访问请求对应的数据库服务器的高负荷时间段之外时,直接将接收的数据库访问请求转发至所述数据库服务器执行。
[0094]具体的,数据库服务器在执行接收的数据库访问请求时,解析出该数据库访问请求携带的SQL语句,其中,SQL语句包括DQL(Data Query Language,数据查询语言)语句和DML(Data Manipulat1n Language,数据操作语言)语句。当解析出的SQL语句为DQL语句时,说明用户欲对数据库中的数据进行查询;当解析出的SQL语句为DML语句时,说明用户欲对数据库中的数据进行操作,包括插入数据、更改数据或删除数据等。
[0095]例如,当解析出的SQL语句为DQL语句时,数据库服务器获取存储的所述SQL语句指向的业务数据,并将获取的业务数据返回至其接收的数据库访问请求的源用户终端;又例如,当解析出的SQL语句为DML语句时,数据库服务器基于解析出的SQL语句进行相应的操作,并返回操作的结果至所述用户终端,至少包括操作是否成功的信息。
[0096]解析模块30,用于在当前位于所述数据库服务器的高负荷时间段之内时,解析出所述数据库访问请求携带的SQL语句;
[0097]所述发送模块20还用于,在所述SQL语句为DQL语句时,获取当前储存的所述SQL语句指向的业务数据,并将获取的业务数据发送至所述用户终端;以及
[0098]在所述SQL语句为DML语句,且到达所述数据库服务器的高负荷时间段之外时,将所述数据库访问请求转发至所述数据库服务器执行。
[0099]本领域技术人员可以理解的是,数据库服务器在高负荷工作的情况下,其响应数据库访问请求的延迟将明显增加,而且,随着接收的数据库访问请求持续增长,将使得数据库服务器的处理资源消耗殆尽,可能出现宕机停止服务的情况。因此,在本发明实施例中,在当前位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内时,数据库代理节点代理数据库服务器提供服务。
[0100]具体的,在判断模块10确定当前位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内时,解析模块30首先解析出接收的数据库访问请求所携带的SQL语句,并判断解析出的SQL语句是否为DQL语句;其中,
[0101]在解析出的SQL语句为DQL语句时,所述发送模块20获取当前储存的所述SQL语句指向的业务数据,直接将获取的业务数据发送至所述用户终端,供其呈现给用户;
[0102]在解析出的SQL语句为DQL语句时,所述发送模块20等待到达所述数据库服务器的高负荷时间段之外时,将接收的数据库访问请求发送至所述数据库服务器执行。
[0103]需要说明的是,在其他实施例中,所述数据库代理节点还包括删除模块,用于删除储存的,且在预设时间段内未被访问的业务数据。其中,所述预设时间段可按实际需要进行设置,例如,本实施例将所述预设时间段设置为24小时,本领域技术人员可以理解的是,通过定期删除长时间未被访问的业务数据,能够提升数据库代理节点存储空间的利用率,以更好的提供代理服务。
[0104]本实施例提出的数据库代理节点,为后端的多个数据库服务器提供代理服务,针对后端的任一数据库服务器,若数据库代理节点在该数据库服务器的高负荷时间段之内接收到指向该数据库服务器的数据库访问请求时,首先确定该数据库访问请求携带的SQL语句的类型,若携带的SQL语句为DQL语句,则直接获取并发送所述SQL语句指向的业务数据至数据库访问请求的源用户终端;若携带的SQL语句为DML语句,则等待到达所述数据库服务器的高负荷时间段之外时,将数据库访问请求发送至数据库服务器执行。相较于现有技术,本发明能够在数据库服务器高负荷工作时,为数据库服务器分担部分压力,达到提升数据库服务器工作稳定性的目的。
[0105]进一步地,基于第一实施例,提出了本发明数据库代理节点的第二实施例,在本实施例中,所述发送模块20还用于在获取储存的业务数据失败时,基于其他数据库代理节点获取并储存所述SQL语句指向的业务数据。
[0106]需要说明的是,本实施例与第一实施例的区别在于,本实施例增加了数据库代理节点获取存储的业务数据失败时的处理操作,以下仅针对该区别进行说明,其他不再赘述。
[0107]基于前述描述,本领域技术人员可以理解的是,数据库服务器在高负荷工作的情况下,其响应数据库访问请求的延迟将明显增加,而且,随着接收的数据库访问请求持续增长,将使得数据库服务器的处理资源消耗殆尽,可能出现宕机停止服务的情况。因此,在本发明实施例中,所述发送模块20在获取存储的业务数据失败时,基于其他数据库代理节点获取并储存所述数据库访问请求指向的业务数据,以下以发送模块20所在的数据库代理节点为第一代理节点,其他数据库代理节点为第二代理节点进行具体说明:
[0108]第一代理节点(发送模块20)在获取存储的业务数据失败时,将其接收的数据库访问请求转发至第二代理节点,其中,第一代理节点在数据库访问请求中添加有用于描述用户终端验证通过的标识信息,以避免第二代理节点进行二次验证,造成不必要的处理资源浪费;第二代理节点在接收到第一代理节点转发的数据库访问请求时,识别到该数据库访问请求携带的前述标识信息,直接获取存储的所述数据库访问请求指向的业务数据返回至第一代理节点;第一代理节点在接收到第二代理节点返回的业务数据时,将接收的业务数据存储为所述数据库访问请求指向的业务数据,并将该业务数据返回至所述用户终端。
[0109]本实施例通过数据库代理节点在未存储有其接收的数据库访问请求所指向的业务数据时,基于其他数据库代理节点提供代理服务,确保用户终端能够正常获得数据服务。
[0110]进一步地,基于第一实施例,提出本发明数据库代理节点的第三实施例,在本实施例中,所述数据库代理节点还包括:
[0111]验证模块,用于在接收到用户终端发送的数据库访问请求时,对所述用户终端进行验证操作;
[0112]所述判断模块10还用于在验证通过时,判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内。
[0113]需要说明的是,本实施例与第一实施例的区别在于,本实施例在第一实施例的基础上,增加了对用户终端的验证操作,以下仅针对该区别进行说明,其他不再赘述。
[0114]在本发明实施例中,在接收到用户终端发送的数据库访问请求时,首先由验证模块基于接收的数据库访问请求对用户终端的身份进行验证,例如,用户终端发送的数据库访问请求中还携带有用户基于用户终端预输入的用户名及对应的密码,数据库代理节点在接收到用户终端发送的数据库访问请求时,根据数据库访问请求携带的用户名及密码对用户终端的身份进行验证,以确定对应的用户是否为已授权的用户。在验证通过之后,验证模块将接收的数据库访问请求传输至判断模块10进行更新处理,以开始代理服务的处理流程,具体可参照第一实施例,此处不再赘述。
[0115]本实施例通过对用户终端进行验证,能够提升储存数据的安全性。
[0116]进一步地,基于前述任一实施例,提出了本发明数据库代理节点的第四实施例,在本实施例中,所述发送模块20还用于使用预设的密钥加密获取的所述业务数据,并将加密后的业务数据发送至所述用户终端,以供所述用户终端基于相应的密钥解密出业务数据。
[0117]需要说明的是,本实施例与第一实施例的区别在于,本实施例增加了发送业务数据的具体描述,以下仅针对该区别进行说明,其他可分别参照前述各实施例,此处不再赘述。
[0118]本领域技术人员可以理解的是,数据在网络的传输过程中,容易被非法分子盗取,导致用户数据泄露。因此,在本实施例中,在发送获取的业务数据时,发送模块20首先获取的预设的密钥,并使用该密钥加密获取的业务数据,其中,可以采用如RSA算法或Elgamal算法等非对称加密算法进行加密,也可以采用如DES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法或者IDEA算法等对称加密算法进行加密。
[0119]例如,当发送模块20基于用户终端预先发布的公钥采用RSA算法加密获取的业务数据时,则用户终端需要基于前述公钥对应的私钥并采用RSA算法解密出业务数据;又例如,当发送模块20采用与用户终端预先约定的密钥采用DES算法加密获取的业务数据时,则用户终端需要基于相同的所述密钥并采用DES算法解密出业务数据。
[0120]本实施例通过加密传输的业务数据,能够数据传输的安全性。
[0121]进一步地,基于前述任一实施例,提出了本发明数据库代理节点的第五实施例,在本实施例中,所述数据库代理节点,还包括:
[0122]更新模块,用于更新储存的各数据库服务器的高负荷时间段信息。
[0123]需要说明的是,本实施例与前述任一实施例的区别在于,本实施例增加了对数据库服务器的高负荷时间段信息的更新操作,以下仅对该区别进行描述,其他可分别参照前述各实施例,此处不再赘述。
[0124]在本发明实施例中,提供了三种更新高负荷时间段信息的方式:
[0125]其一,更新模块在接收到具有预设权限的管理人员的更新指令时,根据接收的更新指令更新对应的数据库服务器的高负荷时间段信息;
[0126]其二,更新模块在接收到数据库服务器发送的高负荷时间段信息时,将储存的对应该数据库服务器的高负荷时间段信息更新为接收的高负荷时间段信息;
[0127]其三,更新模块定时发送更新请求至各数据库服务器,并在接收到各数据库服务器基于接收的更新请求返回的高负荷时间段信息时,将对应各数据服务器的高负荷时间段信息分别更新为接收的对应高负荷时间段信息。
[0128]本实施例通过对储存的各数据库服务器的高负荷时间段信息进行更新,使得数据库代理节点能够更好的提供代理服务,进一步提升数据库服务器工作的稳定性。
[0129]以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术邻域,均同理包括在本发明的专利保护范围内。
【主权项】
1.一种数据库访问方法,其特征在于,所述数据库访问方法包括以下步骤: 步骤A,在接收到用户终端发送的数据库访问请求时,数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内,若否则转入执行步骤B,是则转入执行步骤C; 步骤B,所述数据库代理节点将所述数据库访问请求转发至所述数据库服务器执行; 步骤C,所述数据库代理节点解析出所述数据库访问请求携带的SQL语句,其中,若所述SQL语句为DQL语句,则转入执行步骤D,若所述SQL语句为DML语句,则到达所述数据库服务器的高负荷时间段之外时,转入执行步骤B; 步骤D,所述数据库代理节点获取当前储存的所述SQL语句指向的业务数据,并将获取的业务数据发送至所述用户终端。2.根据权利要求1所述的数据库访问方法,其特征在于,所述将获取的业务数据发送至所述用户终端的步骤之前,还包括: 在获取储存的业务数据失败时,所述数据库代理节点基于其他数据库代理节点获取并储存所述SQL语句指向的业务数据,并转入执行所述将获取的业务数据发送至所述用户终端的步骤。3.根据权利要求1所述的数据库访问方法,其特征在于,所述数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内的步骤之前,还包括: 在接收到用户终端发送的数据库访问请求时,所述数据库代理节点对所述用户终端进行验证操作; 在验证通过时,执行所述数据库代理节点判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内的步骤。4.根据权利要求1-3任一项所述的数据库访问方法,其特征在于,所述将获取的业务数据发送至所述用户终端的步骤包括: 所述数据库代理节点使用预设的密钥加密获取的所述业务数据,并将加密后的业务数据发送至所述用户终端,以供所述用户终端基于相应的密钥解密出业务数据。5.根据权利要求1-3任一项所述的数据库访问方法,其特征在于,所述数据库访问方法,还包括: 所述数据库代理节点更新储存的各数据库服务器的高负荷时间段信息。6.一种数据库代理节点,其特征在于,所述数据库代理节点包括: 判断模块,用于在接收到用户终端发送的数据库访问请求时,判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内; 发送模块,用于在当前位于所述数据库服务器的高负荷时间段之外时,将所述数据库访问请求转发至所述数据库服务器执行; 解析模块,用于在当前位于所述数据库服务器的高负荷时间段之内时,解析出所述数据库访问请求携带的SQL语句; 所述发送模块还用于,在所述SQL语句为DQL语句时,获取当前储存的所述SQL语句指向的业务数据,并将获取的业务数据发送至所述用户终端;以及 在所述SQL语句为DML语句,且到达所述数据库服务器的高负荷时间段之外时,将所述数据库访问请求转发至所述数据库服务器执行。7.根据权利要求6所述的数据库代理节点,其特征在于,所述发送模块还用于在获取储存的业务数据失败时,基于其他数据库代理节点获取并储存所述SQL语句指向的业务数据。8.根据权利要求6所述的数据库代理节点,其特征在于,所述数据库代理节点还包括:验证模块,用于在接收到用户终端发送的数据库访问请求时,对所述用户终端进行验证操作; 所述判断模块还用于在验证通过时,判断当前是否位于所述数据库访问请求对应的数据库服务器的高负荷时间段之内。9.根据权利要求6-8任一项所述的数据库代理节点,其特征在于,所述发送模块还用于使用预设的密钥加密获取的所述业务数据,并将加密后的业务数据发送至所述用户终端,以供所述用户终端基于相应的密钥解密出业务数据。10.根据权利要求6-8任一项所述的数据库代理节点,其特征在于,所述数据库代理节点,还包括: 更新模块,用于更新储存的各数据库服务器的高负荷时间段信息。
【文档编号】G06F17/30GK105956143SQ201610313378
【公开日】2016年9月21日
【申请日】2016年5月11日
【发明人】张锐
【申请人】深圳市永兴元科技有限公司