一种从公网web网站到内网数据库的访问方法

文档序号:6385503阅读:205来源:国知局
专利名称:一种从公网web网站到内网数据库的访问方法
技术领域
本发明涉及一种网站数据库的访问方法,尤其是涉及一种从公网WEB网站到内网数据库的访问方法。
背景技术
目前,许多建立了企业内网及数据库的企业用户,但由于没有固定公网(INTERNET网)IP地址或出于安全的考虑而无法在自己的内网服务器中发布WEB网站。此类企业一般采用主机托管、虚拟主机等方式建设自己的WEB网站。由于该WEB网站建立在公网中,如果要在WEB中发布企业建立在内网数据库中的数据,公网的WEB服务器或者需要访问企业内网,或者由企业内网定时与位于公网的网站数据库进行同步。一般来说,前者用户需要固定的公网IP地址以映射内网服务器,同时存在内网会被恶意访问等严重的风险;而后者不但实时性很难得到保证,同时也存在因为数据在公网存储而被恶意篡改等安全性的问题。目前中小企业大多采用虚拟主机、主机托管方式在公网建立WEB站点,而其内网大多设置有防火墙,因此在公网的WEB服务器无法访问其内网,普通的WEB网页程序也无法直接访问内网数据库,所以其公网网站也不能和企业内网的数据实现实时的同步。

发明内容
本发明所要解决的技术问题是提供一种从公网WEB网站到内网数据库的访问方法,使公网中的企业WEB网站不需要建立数据库就可以实时访问内网的数据,同时,既可以防止内网被恶意访问,也不会影响公网用户对内网数据的访问。本发明解决上述技术问题所采用的技术方案为一种从公网WEB网站到内网数据库的访问方法,在公网中设置数据库查询程序、数据库执行程序和第一缓存区,在内网中设置常驻客户端程序和第二缓存区,所述的第一缓存区中设置有HASH表,具体包括以下步骤I)用户访问公网,打开网页;2)网页通过所述的数据库查询程序首先查询所述的第一缓存区中HASH表内是否有预存的查询结果,如果有,那么把这个结果直接返回所述的数据库查询程序,用户在公网页面中看到结果信息,如果没有,那么所述的数据库查询程序在所述的第一缓存区中写入查询记录,并进行等待,直到返回结果或超时;3)在内网服务器中运行所述的常驻客户端程序,持续在O. 01秒I秒的间隔内定时访问公网服务器的数据库执行程序,当通过数据库执行程序读取到所述的第一缓存区中的查询记录后,常驻客户端程序访问内网数据库;4)当常驻客户端程序取得内网数据库访问结果后,将内网数据库访问结果形成记录放到所述的第二缓存区中;5)当第二缓存区中存在记录时,将该记录作为上传参数附加在访问数据库执行程序的常驻客户端程序上;
6)公网中的数据库执行程序把常驻客户端程序上的上传参数存入所述的第一缓存区中;7)所述的数据库查询程序在所述的第一缓存区中取得内网数据库访问结果;8)所述的数据库查询程序结束等待,返回内网数据库访问结果,用户在公网页面中看到内网数据库访问结果信息。步骤2)中数据库查询程序的具体步骤为2-1)读取参数参数包括需要查询或执行的SQL语句和该语句的超时时间,以秒为单位;2-2)检测HASH表通过HASH表的快速索引功能,根据查询语句来检测是否在有效时间内有相应的结果,如果有则直接返回结果;2-3)检测缓存即目前第一缓存区的记录数是否大于最大记录数,如是,则返回系统忙,否则进入下一步;2-4)设置序列号即当前序列号增加I ;2-5)存入缓存在第一缓存区存入一条记录,包括本序列号=当前序列号;查询时间=当前时间;查询预计及超时时间为输入参数;此时缓存记录数增加I ;2-6)读取循环进入一个循环,根据本序列号,读取缓存,直至读取成功或者超时,即当前时间 > 查询时间+超时时间;2-7)清除缓存读取成功或者超时后,首先把第一缓存区中的缓存记录清除,此时缓存记录数减少I ;2-8)返回结果将超时错误或者查询结果信息返回数据库查询程序。步骤3)中数据库执行程序的具体步骤为3-1)读取参数读取包括处理结束或尚未处理结束的常驻客户端程序上次处理的最后一个序列号、表示本次返回结果的序列号和本次返回的查询结果;3-2)写入缓存先判断结果序列号是否存在于第一缓存区中,如果不存在则进入下一步,如果存在那么就把结果写入第一缓存区等待被数据库查询程序读取,同时也对HASH表中相同查询语句的记录做更新,包括查询时间、查询结果和有效时间;3-3)读取查询根据当前未查询序列号读取第一缓存区的记录,如没有该序列号,则判断该序列号是否大于当前序列号,是则进入下一步,否则当前未查询序列号+1后再次读取第一缓存区,直至读取成功或超过当前序列号,即当前第一缓存区的所有记录均已读完;3-4)返回结果当第一缓存区的记录是目前需要查询的记录时,返回数据库查询程序,同时,如果存在结果序列号,也返回本次的结果序列号。内网服务器中的常驻客户端程序包括主程序和数据库操作程序,主程序运行的具体步骤为定时创建数据库操作程序的一个线程,并记录启动时间,当一个线程启动后,首先访问公网的数据库执行程序,当访问完成后将结果写入第二缓存区,同时通知主程序,主程序判断目前时间和上一次启动线程时间的间隔是否超过定时,然后再确认间隔是否超过定时,如果已经超过就再次创建一个新的线程。数据库操作程序运行的具体步骤为4-1)程序启动;
4-2)读取第一缓存区中最新的查询序列号及最先返回的SQL执行结果;4-3)访问公网网页的数据库执行程序,并上传最新查询序列号和执行结果;4-4)页面访问完毕,在第二缓存区中记录本线程的ID已读取成功,并判断此次页面访问是否成功,是则继续,否则结束本线程;4-5)如页面读取到结果序列号,则清空在第二缓存区中的与该序列号相关的缓存;4-6)判断页面是否读取到查询记录,是则继续下一步,否则结束本线程;4-7)将读取到的查询序列号设置为最新的查询序列号,并判断SQL语句是否符合预先配置的过滤方法,即正则表达式,是则将错误值存入第二缓存区,否则访问数据库,执行SQL语句;4-8)同步等待SQL语句执行完毕,将结果以XML形式存入第二缓存区;4-9)结束本线程。与现有技术相比,本发明的优点在于该方法的实质是由内网向公网发起请求,代替原来的公网向内网发起请求,这样,公网的WEB服务器并未向内网主动发起连接,只是由内网在不断打开公网的网页,下载及上传数据,这是防火墙所允许的,也是非常安全的;这种方法使公网中的企业WEB网站,甚至不需要建立数据库,就可以实时访问内网的数据,而且这些数据的字段及读写权限是可以预先定义的;同时,内网可以设立完全的防火墙,禁止由公网对内访问,也不会影响公网用户对内网数据的访问;本方法内网访问公网网页与数据库查询的执行是双重异步的其一是页面访问后,不论数据库查询是否执行就进行定时触发下一次网页访问行为,即页面访问与数据库查询的执行之间异步;其二是数据库查询执行SQL语句成功后,先把结果返回缓存,到下一次网页访问(读取新的SQL语句)时才把结果返回给公网,即返回执行结果与读取SQL之间异步。通过这种设计,保证了公网可以并发多个数据库SQL语句到内网执行,最大限度的避免由于数据库或网络常见的短期拥塞而导致系统长时间忙碌的发生。


图1为本发明方法的拓朴结构示意图;图2为本发明方法的流程图;图3为本发明方法中数据库查询程序的流程图;图4为本发明方法中数据库执行程序的流程图;图5为本发明方法中常驻客户端程序的主程序的流程图;图6为本发明方法中常驻客户端程序的数据库操作程序的流程图。
具体实施例方式以下结合附图实施例对本发明作进一步详细描述。如图所示,一种从公网WEB网站到内网数据库的访问方法,在公网中设置数据库查询程序、数据库执行程序和第一缓存区,在内网中设置常驻客户端程序和第二缓存区,第一缓存区中设置有HASH表,具体包括以下步骤I)用户访问公网,打开网页;
2)网页通过数据库查询程序首先查询第一缓存区中HASH表内是否有预存的查询结果,如果有,那么把这个结果直接返回数据库查询程序,用户在公网页面中看到结果信息,如果没有,那么数据库查询程序在第一缓存区中写入查询记录,并进行等待,直到返回结果或超时,具体步骤为2-1)读取参数参数包括需要查询或执行的SQL语句和该语句的超时时间,以秒为单位;2-2)检测HASH表通过HASH表的快速索引功能,根据查询语句来检测是否在有效时间内有相应的结果,如果有则直接返回结果;2-3)检测缓存即目前第一缓存区的记录数是否大于最大记录数,如是,则返回系统忙,否则进入下一步;2-4)设置序列号即当前序列号增加I ;2-5)存入缓存在第一缓存区存入一条记录,包括本序列号=当前序列号;查询时间=当前时间;查询预计及超时时间为输入参数;此时缓存记录数增加I ;2-6)读取循环进入一个循环,根据本序列号,读取缓存,直至读取成功或者超时,即当前时间 > 查询时间+超时时间;2-7)清除缓存读取成功或者超时后,首先把第一缓存区中的缓存记录清除,此时缓存记录数减少I ;2-8)返回结果将超时错误或者查询结果信息返回数据库查询程序;3)当内网服务器启动后,设置在内网服务器中的常驻客户端程序自动运行,持续在O. 01秒I秒的间隔内定时访问公网服务器的数据库执行程序,当通过数据库执行程序读取到第一缓存区中的查询记录后,常驻客户端程序访问内网数据库;数据库执行程序的具体步骤为3-1)读取参数读取包括处理结束或尚未处理结束的常驻客户端程序上次处理的最后一个序列号、表示本次返回结果的序列号和本次返回的查询结果;3-2)写入缓存先判断结果序列号是否存在于第一缓存区中,如果不存在则进入下一步,如果存在那么就把结果写入第一缓存区等待被数据库查询程序读取,同时也对HASH表中相同查询语句的记录做更新,包括查询时间、查询结果和有效时间;3-3)读取查询根据当前未查询序列号读取第一缓存区的记录,如没有该序列号,则判断该序列号是否大于当前序列号,是则进入下一步,否则当前未查询序列号+1后再次读取第一缓存区,直至读取成功或超过当前序列号,即当前第一缓存区的所有记录均已读完;3-4)返回结果当第一缓存区的记录是目前需要查询的记录时,返回数据库查询程序,同时,如果存在结果序列号,也返回本次的结果序列号;4)当常驻客户端程序取得内网数据库访问结果后,将内网数据库访问结果形成记录放到所述的第二缓存区中;5)当第二缓存区中存在记录时,将该记录作为上传参数附加在访问数据库执行程序的常驻客户端程序上;6)公网中的数据库执行程序把常驻客户端程序上的上传参数存入所述的第一缓存区中;
7)所述的数据库查询程序在所述的第一缓存区中取得内网数据库访问结果;8)所述的数据库查询程序结束等待,返回内网数据库访问结果,用户在公网页面中看到内网数据库访问结果信息。内网服务器中的常驻客户端程序包括主程序和数据库操作程序,主程序运行的具体步骤为定时创建数据库操作程序的一个线程,并记录启动时间,当一个线程启动后,首先访问公网的数据库执行程序,当访问完成后写入第二缓存区,主程序从第二缓存区中得知这个事件(这里需要描述得明确一点),然后再确认间隔是否超过定时,如果已经超过就再次创建一个新的线程。数据库操作程序运行的具体步骤为4-1)程序启动;4-2)读取第一缓存区中最新的查询序列号及最先返回的SQL执行结果;4-3)访问公网网页的数据库执行程序,并上传最新查询序列号和执行结果;4-4)页面访问完毕,在第二缓存区中记录本线程的ID已读取成功,并判断此次页面访问是否成功,是则继续,否则结束本线程;4-5)如页面读取到结果序列号,则清空在第二缓存区中的与该序列号相关的缓存;4-6)判断页面是否读取到查询记录,是则继续下一步,否则结束本线程;4-7)将读取到的查询序列号设置为最新的查询序列号,并判断SQL语句是否符合过滤方法,即正则表达式,是则将错误值存入第二缓存区,否则访问数据库,执行SQL语句;4-8)同步等待SQL语句执行完毕,将结果以XML形式存入第二缓存区;4-9)结束本线程。
权利要求
1.一种从公网WEB网站到内网数据库的访问方法,其特征在于在公网中设置数据库查询程序、数据库执行程序和第一缓存区,在内网中设置常驻客户端程序和第二缓存区,所述的第一缓存区中设置有HASH表,具体包括以下步骤: 1)用户访问公网,打开网页; 2)网页通过所述的数据库查询程序首先查询所述的第一缓存区中HASH表内是否有预存的查询结果,如果有,那么把这个结果直接返回所述的数据库查询程序,用户在公网页面中看到结果信息,如果没有,那么所述的数据库查询程序在所述的第一缓存区中写入查询记录,并进行等待,直到返回结果或超时; 3)在内网服务器中运行所述的常驻客户端程序,持续在0.0l秒I秒的间隔内定时访问公网服务器的数据库执行程序,当通过数据库执行程序读取到所述的第一缓存区中的查询记录后,常驻客户端程序访问内网数据库 ; 4)当常驻客户端程序取得内网数据库访问结果后,将内网数据库访问结果形成记录放到所述的第二缓存区中; 5)当第二缓存区中存在记录时,将该记录作为上传参数附加在访问数据库执行程序的常驻客户端程序上; 6)公网中的数据库执行程序把常驻客户端程序上的上传参数存入所述的第一缓存区中; 7)所述的数据库查询程序在所述的第一缓存区中取得内网数据库访问结果; 8)所述的数据库查询程序结束等待,返回内网数据库访问结果,用户在公网页面中看到内网数据库访问结果信息。
2.如权利要求1所述的一种从公网WEB网站到内网数据库的访问方法,其特征在于步骤2)中数据库查询程序的具体步骤为: 2-1)读取参数:参数包括需要查询或执行的SQL语句和该语句的超时时间,以秒为单位; 2-2)检测HASH表:通过HASH表的快速索引功能,根据查询语句来检测是否在有效时间内有相应的结果,如果有则直接返回结果; 2-3)检测缓存:即目前第一缓存区的记录数是否大于最大记录数,如是,则返回系统忙,否则进入下一步; 2-4)设置序列号:即当前序列号增加I ; 2-5)存入缓存:在第一缓存区存入一条记录,包括:本序列号=当前序列号;查询时间=当前时间;查询预计及超时时间为输入参数;此时缓存记录数增加I ; 2-6)读取循环:进入一个循环,根据本序列号,读取缓存,直至读取成功或者超时,即当前时间 > 查询时间+超时时间; 2-7)清除缓存:读取成功或者超时后,首先把第一缓存区中的缓存记录清除,此时缓存记录数减少I ; 2-8)返回结果:将超时错误或者查询结果信息返回数据库查询程序。
3.如权利要求1所述的一种从公网WEB网站到内网数据库的访问方法,其特征在于步骤3)中数据库执行程序的具体步骤为: 3-1)读取参数:读取包括处理结束或尚未处理结束的常驻客户端程序上次处理的最后一个序列号、表示本次返回结果的序列号和本次返回的查询结果; 3-2)写入缓存:先判断结果序列号是否存在于第一缓存区中,如果不存在则进入下一步,如果存在那么就把结果写入第一缓存区等待被数据库查询程序读取,同时也对HASH表中相同查询语句的记录做更新,包括查询时间、查询结果和有效时间; 3-3)读取查询:根据当前未查询序列号读取第一缓存区的记录,如没有该序列号,则判断该序列号是否大于当前序列号,是则进入下一步,否则当前未查询序列号+1后再次读取第一缓存区,直至读取成功或超过当前序列号,即当前第一缓存区的所有记录均已读完; 3-4)返回结果:当第一缓存区的记录是目前需要查询的记录时,返回数据库查询程序,同时,如果存在结果序列号,也返回本次的结果序列号。
4.如权利要求1所述的一种从公网WEB网站到内网数据库的访问方法,其特征在于内网服务器中的常驻客户端程序包括主程序和数据库操作程序,主程序运行的具体步骤为:定时创建数据库操作程序的一个线程,并记录启动时间,当一个线程启动后,首先访问公网的数据库执行程序,当访问完成后将结果写入第二缓存区,同时通知主程序,主程序判断目前时间和上一次启动线程时间的间隔是 否超过定时,如果已经超过就再次创建一个新的线程。
5.如权利要求4所述的一种从公网WEB网站到内网数据库的访问方法,其特征在于数据库操作程序运行的具体步骤为: 4-1)程序启动; 4-2)读取第一缓存区中最新的查询序列号及最先返回的SQL执行结果; 4-3)访问公网网页的数据库执行程序,并上传最新查询序列号和执行结果; 4-4)页面访问完毕,在第二缓存区中记录本线程的ID已读取成功,并判断此次页面访问是否成功,是则继续,否则结束本线程; 4-5)如页面读取到结果序列号,则清空在第二缓存区中的与该序列号相关的缓存; 4-6)判断页面是否读取到查询记录,是则继续下一步,否则结束本线程; 4-7)将读取到的查询序列号设置为最新的查询序列号,并判断SQL语句是否符合预先配置的过滤方法,即正则表达式,是则将错误值存入第二缓存区,否则访问数据库,执行SQL语句; 4-8)同步等待SQL语句执行完毕,将结果以XML形式存入第二缓存区; 4-9)结束本线程。
全文摘要
本发明公开了一种从公网WEB网站到内网数据库的访问方法,特点是在公网中设置数据库查询程序、数据库执行程序和第一缓存区,在内网中设置常驻客户端程序和第二缓存区,第一缓存区中设置有HASH表,由内网向公网发起请求不断打开公网的网页,下载及上传数据,优点在于本发明的方法代替了原来的公网向内网发起请求,这样,公网的WEB服务器并未向内网主动发起连接,这是防火墙所允许的,也是非常安全的;本发明的方法使公网中的企业WEB网站,甚至不需要建立数据库,就可以实时访问内网的数据,而且这些数据的字段及读写权限是可以预先定义的;同时,内网可以设立完全的防火墙,禁止由公网对内访问,也不会影响公网用户对内网数据的访问。
文档编号G06F17/30GK103077196SQ20121057459
公开日2013年5月1日 申请日期2012年12月25日 优先权日2012年12月25日
发明者陈航 申请人:宁波公众信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1