分配数据库操作请求的系统技术方案

技术编号:8453086 阅读:206 留言:0更新日期:2013-03-21 17:32
本发明专利技术公开了一种分配数据库操作请求的系统(1000),其包括:分配数据库操作请求的设备(200);一个或者多个应用程序服务器(300-1,…,300-n),适于向设备(200)发送对于数据库的操作请求;主数据库服务器(400a)以及一个或者多个从数据库服务器(400b1,…,400bn),适于响应于设备(200)的检查,向设备(200)返回其状态,并且接收设备(200)分配的操作请求;以及分配数据库操作请求的设备(200)包括:网络接口(201),适于接收对于数据库的操作请求;操作请求解析器(203),适于解析操作请求,以检测操作请求中的类型注释,并确定与类型注释相对应的数据库服务器;以及操作请求分配器(207),适于将所述操作请求分配给所确定的数据库服务器。

【技术实现步骤摘要】

本专利技术涉及数据库技术,尤其涉及一种分配数据库操作请求的系统
技术介绍
随着计算机网络的快速发展,出现了具有大量用户的网络应用,这些网络应用需要存储大量的用户数据以及相关数据。先前的单台数据存储服务器的数据存储方式已经不能满足当前网络应用的数据存储要求。目前数据库在使用中普遍采用主-从架构(一般来说,主数据库有一个,从数据库有多个),从数据库只承担读操作,所有的写操作都由主数据库来执行。为了保证数据的一致性,从数据库会不断地从主数据库同步最新写入的数据到从数据库上。应用程序员需要根据数据库操作的读写类型,分别将数据库操作语句发往主数据库或从数据库,增加了应用程序员的负担,提高了开发成本。另外,从主数据库到从数据库的数据同步不是完全实时的,而是存在着一定的延迟时间,这就带来了问题。设想以下情况应用程序向数据库写一条数据,如上所述,该数据会被写入到主数据库中,然后马上又要读出该数据,读操作由从数据库执行,但此时从数据库尚未来得及把该数据由主数据库同步到本地,读操作的执行结果必然是未找到该数据或是读到了该数据的旧版本,这就造成了错误发生。除此之外,如果某台数据库服务器发生故障,而程序仍然向不可用的机器导入请求,就会发生错误,此时只能通过修改程序来解决, 维护成本很高。
技术实现思路
鉴于上述问题,提出了本专利技术,以便提供一种克服上述问题或者至少部分地解决上述问题的分配数据库操作请求的系统。依据本专利技术的一个方面,提供了一种分配数据库操作请求的系统,包括分配数据库操作请求的设备;一个或者多个应用程序服务器,适于向该设备发送对于数据库的操作请求;以及主数据库服务器以及一个或者多个从数据库服务器,适于响应于该设备的检查, 向该设备返回其状态,并且接收该设备分配的操作请求;其中,所述分配数据库操作请求的设备包括网络接口,适于接收对于数据库的操作请求;操作请求解析器,适于解析该操作请求,以检测该操作请求中的类型注释,确定与该类型注释相对应的数据库服务器;以及操作请求分配器,适于将该操作请求分配给所确定的数据库服务器。可选地,在根据本专利技术的实施例的分配数据库操作请求的设备中,当该操作请求解析器未检测到该操作请求中的类型注释时,解析该操作请求,以判断该操作请求的类型, 确定与该操作请求的类型相对应的数据库服务器;并且该操作请求分配器将该操作请求分配给所确定的与该操作请求的类型相对应的数据库服务器。可选地,在根据本专利技术的实施例的分配数据库操作请求的设备中,该操作请求的类型包括写操作和读操作。可选地,在根据本专利技术的实施例的分配数据库操作请求的设备中,该数据库服务器包括主数据库服务器和从数据库服务器,对应于写操作的数据库服务器是主数据库服务器,对应于读操作的数据库服务器是从数据库服务器。可选地,所述分配数据库操作请求的设备还包括数据库检查器,适于检查该数据库服务器;并且该操作请求分配器根据检查结果将该操作请求分配给相应的数据库服务器或者返回错误提示。本专利技术提供了上述分配数据库操作请求的系统。根据本专利技术的实施例,可以解析接收到的对于数据库的操作请求,以检测操作请求中的类型注释,并根据类型注释,确定相对应的数据库服务器,并向其分配该操作请求。这样,应用开发人员通过利用例如在诸如 SQL语句之类的操作请求中本来没有意义的注释语句,就可以确定要将操作请求分配给具体数据库服务器,从而极大地提高了应用开发的灵活性。对于实时性要求较高的读操作,只需要简单地在操作请求中添加表示主数据库类型的类型注释,就能自动地将该操作请求分配给主数据库服务器,避免发生找不到所请求的数据或者读取到该数据的旧版本的问题。另外,根据本专利技术的实施例,在确定了要将操作请求分配到的数据库服务器之后, 还可以检查该数据库服务器,并根据检查结果将该操作请求分配给相应的数据库服务器或者返回错误提示。这样,在数据库服务器集群中的某一台或者多台数据库服务器发生故障时,可以自动检测到该故障,不再把操作请求分配给存在故障的数据库服务器。其中,在主数据库服务器出现故障的情况下,写操作无法执行,但读操作不受影响;而在从数据库服务器出现故障的情况下,可以转而将读操作分配给主数据库服务器,从而读写操作均不受影响。这一过程对于应用程序完全透明,应用程序员不在不需要对应用程序作出任何修改,降低了应用程序的维护成本。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段, 而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图I是根据本专利技术的实施例的分配数据库操作请求的方法的流程图2是根据本专利技术的一个实施例的分配数据库操作请求的方法各步骤的流程图; 以及图3是根据本专利技术的实施例的分配数据库操作请求的设备以及系统的框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图I示意性地图示了根据本专利技术的实施例的分配数据库操作请求的方法100的流5程图。根据本专利技术的实施例,数据库例如可以是MySQL数据库。在下文中,以MySQL数据库为例,对本专利技术的原理进行描述,然而,这只是为了示例的目的,本专利技术的范围并不限于此,本专利技术的原理同样适用于其它类型的数据库。如图I所示,根据本专利技术的实施例的分配数据库操作请求的方法100始于步骤 S101,其中,接收对于数据库的操作请求。该对于数据库的操作请求例如来自于一个或者多个应用服务器。图2示意性地图示了根据本专利技术的一个实施例的分配数据库操作请求的方法各步骤的流程图,下面将结合图2对本专利技术的原理进行详细的描述。参见图2,首先,从应用服务器接收对于数据库的操作请求,如果没有接收到,则继续等待;如果已经接收到,则进入下一步骤,即图I所示的步骤S103。在步骤S103中,解析该操作请求,从而检测操作请求中的类型注释。根据本专利技术的实施例,该操作请求可以包括数据库程序语言语句,该数据库程序语言可以是SQL (Structured Query Language,结构化查询语言),即,该操作请求包括SQL语句。然而,SQL 语言和SQL语句仅为示例,用于帮助读者理解本专利技术的原理,本专利技术的范围并不限于此,而是同样适用于其它适当的数据库程序语言和相对应的语句。在解析操作请求时,例如可以检测SQL语句的开头是否包含类型注释,即是否包含例如“/*master*/”的主数据库类型注释。如果包含,即检测到操作请求中的类型注释, 则可以进入如图I所示的步骤S105。在步骤S105中,确定与该检测到的类型注释相对应的数据库服务器。可选地,在此之前,如图2所示,可以将该类型注释从操作请求中删除。根据本专利技术的实施例,数据库服务器可以包括主数据库服务器和从数据库服务器。在步骤S105中本文档来自技高网...

【技术保护点】
一种分配数据库操作请求的系统(1000),包括:分配数据库操作请求的设备(200);一个或者多个应用程序服务器(300?1,…,300?n),适于向所述设备(200)发送对于数据库的操作请求;主数据库服务器(400a)以及一个或者多个从数据库服务器(400b1,…,400bn),适于响应于所述设备(200)的检查,向所述设备(200)返回其状态,并且接收所述设备(200)分配的操作请求;以及所述分配数据库操作请求的设备(200)包括:网络接口(201),适于接收对于数据库的操作请求;操作请求解析器(203),适于解析所述操作请求,以检测所述操作请求中的类型注释,并确定与所述类型注释相对应的数据库服务器;以及操作请求分配器(207),适于将所述操作请求分配给所确定的数据库服务器。

【技术特征摘要】

【专利技术属性】
技术研发人员:朱超陈超桂勇哲代兵王超
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1