一种数据库缓存集中管理方法和系统的制作方法

文档序号:7702993阅读:225来源:国知局

专利名称::一种数据库缓存集中管理方法和系统的制作方法
技术领域
:本发明涉及一种数据库缓存集中管理方法和系统,属于数据通信
技术领域

背景技术
:集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个集群节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。网络负载均衡就是两个或两个以上的服务器组成群集,因特网(Internet)客户端使用一个因特网协议(InternetProtocol,简称IP)地址或一组IP地址访问集群。网络负载均衡使用某种分布式算法来将客户端的请求映射到集群中的某台主机上。简单的说,就是程序的一个拷贝运行在集群内的所有主机上,然后通过均衡技术,将外部发送来的请求均匀地分配到对称结构中的某台服务器,而接受到请求的服务器都能独立回应客户机的请求,网络负载均衡则将工作负载在这些主机间进行分配。需要注意的是,在集群部署下,各个服务器之间的数据库要求一致。如果一台数据库中的数据发生改变,那么其他服务器上的数据库也需要和它同步保持数据一致,如图1所示。图1中,用户访问集群对应的IP地址,通过负载均衡将用户的请求映射给服务器B,对服务器B上的数据库进行了修改,服务器A,服务器C,服务器D上的数据库需要进行同步,使得与服务器B保持一致。但是,集群中一般不进行数据库和服务器进行分离,这是因为如果所有服务器都公用一个数据库的话,因为对数据库的相同的表不能同时进行读写操作,所以会产生阻塞影响性能,另一方面如果这个数据库出现问题,整个服务将完全不能运行,保存在数据库的数据将会完全丢失,产生比较严重的后果,也失去了集群通过冗余来提高可靠性的意义。数据库缓存是指数据库数据在内存中的临时容器,它包含了数据库表数据在内存中的拷贝,位于数据库与数据访问层之间。对于查询数据库操作相当频繁的系统,良好的缓存机制显得尤为重要。应用系统在进行数据读取时,首先在缓存中查询,避免了数据库调用的性能开销,并且由于内存操作比磁盘操作要快,从而也大大加快了数据库数据的查询速度。数据库缓存是保证服务器性能的必要手段,在服务器中的位置如图2所示。数据库复制是一组数据库技术,由数据库自身来实现。它将数据和数据库对象从一个数据库复制和分发到另外一个数据库,然后在数据库之间进行同步,以维持数据库之间的一致性。应用系统在部署网络负载均衡集群时,一台服务器的数据库上的数据发生变化4时,则可以通过数据库复制技术,使得其他服务器上的数据库保持一致。数据库缓存同步是指服务器上数据库缓存和数据库进行同步,使得数据库缓存与数据库的内容保持一致。在传统的集群部署下,每个节点都包括一个数据库。为了提高性能,各个节点上同时还包括一份数据库缓存。当数据库同步时,必须也对数据库缓存进行同步。但是,数据库同步主要通过数据库复制技术,而数据库复制技术不能保证其他服务器上的数据库缓存和数据库保持一致。因此,在部署集群的应用下,需要使用其他一些额外的机制来保证数据库缓存的同步,例如专利《分布式系统中缓存数据的同步配置方法与装置》(专利申请号200810127364.0)提出在数据库内容发生变化时,触发数据库的触发器,通过触发器将数据库缓存中的数据和数据库进行同步,例如可以每隔一段时间去监视数据库表是否发生变化,如果有变化则更新同步数据库缓存。但是这类方法都需要消耗相当大的性能,特别是数据库中每张表有很多记录项,如果某个记录项中的数据发生改变,则所有服务器上的数据库缓存都必须做相应的改变,这样很难保证同步的及时性。
发明内容本发明的目的是提供一种数据库缓存集中管理方法和系统,避免对数据库同步时需要对数据库缓存进行同步的问题,节省系统资源。为实现上述目的,本发明提供了一种数据库缓存集中管理方法,所述方法包括步骤Sl,数据库服务器发送数据库操作信息给数据库缓存服务器;步骤S2,数据库缓存服务器根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器;步骤S3,数据库服务器根据操作结果对数据库进行相应操作。为了实现上述目的,本发明还提供了一种数据库缓存集中管理系统,所述系统包括一个或多个数据库服务器和一个数据库缓存服务器;所述数据库服务器用于发送数据库操作信息给数据库缓存服务器,并根据数据库缓存服务器返回的操作结果对数据库进行相应操作所述数据库缓存服务器与一个或多个数据库服务器连接,用于缓存数据库中的部分数据库表项,用于根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器。本发明通过对数据库缓存进行集中管理,对多台数据库服务器部署一台统一的数据库缓存服务器,不需要在每台数据库服务器上都维持一份数据库缓存,在对数据库进行操作前先对数据库缓存进行相应操作,避免了对数据库同步时再对多个数据库缓存进行同步的问题,节约了系统资源。图1为集群部署下的服务器和数据库关系示意图图2为数据库缓存在服务器中位置示意图图3为本发明一种数据库缓存集中管理方法实施例一示意图图4为本发明一种数据库缓存集中管理方法实施例二示意图图5为本发明一种数据库缓存集中管理系统实施例示意图图6为本发明一种数据库缓存集中管理系统部署拓扑示意图具体实施例方式本发明的目的是提供一种数据库缓存集中管理方法和系统,避免对数据库同步时需要对数据库缓存进行同步的问题,节省系统资源。下面结合附图对本发明进行说明,本发明提供了一种数据库缓存集中管理方法,图3给出了本发明一种数据库缓存集中管理方法实施例一示意图,所述方法包括步骤Sl,数据库服务器发送数据库操作信息给数据库缓存服务器;所述数据库服务器上包括数据库,所述缓存服务器用于缓存数据库中的部分表项,与一台或多台数据库服务器连接。所述数据库操作信息可以包括数据库表名、数据库表项主键、数据库操作码和数据库表项。步骤S2,数据库缓存服务器根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器;步骤S3,数据库服务器根据操作结果对数据库进行相应操作。本发明通过对数据库缓存进行集中管理,对多台数据库服务器部署一台统一的数据库缓存服务器,不需要在每台数据库服务器上都维持一份数据库缓存,在对数据库进行操作前先对数据库缓存进行相应操作,避免了对数据库同步时再对多个数据库缓存进行同步的问题,节约了系统资源。在进行添加操作时,所述数据库操作码为添加操作码;所述步骤S2具体可以为数据库缓存服务器根据数据库表名和数据库表项主键将数据库表项添加到数据库缓存中,并返回添加成功的响应给数据库服务器;所述步骤S3具体可以为数据库服务器收到添加成功的响应后,在数据库中进行添加操作。例如在进行添加操作时,数据库服务器可以按照如下格式发送TCP报文给数据库缓存服务器数据库表名数据库表项主键数据库操作码数据库表项(添加操作码)数据库表项主键是数据库中唯一标识数据库表项的值,可以为数据库表项的通用唯一识别码(UniversallyUniqueIdentifier,简称UUID)。数据库缓存服务器收到消息后,按如上格式解析出数据库表名和数据库主键,组成数据库缓存中的关键字(key)值,将这条数据库表项加入到数据库缓存的哈希(Hash)表中,并发送一个添加成功的响应给数据库服务器。数据库服务器收到添加成功的响应后将数据库表项添加到数据库中。在进行查询操作时,所述数据库操作码为查询操作码,所述数据库表项为空;所述步骤S2具体可以为数据库缓存服务器根据数据库表名和数据库表项主键6在数据库缓存中查询是否存在对应的数据库表项,如果查询到则返回查询结果给数据库服务器,否则发送查询失败的响应给数据库服务器;所述步骤S3具体可以为数据库服务器在收到查询结果后,直接返回查询结果;在收到查询失败的响应后,在数据库服务器上进行查询,并将查询到的数据库表项添加到数据库缓存中。例如在进行查询操作时,数据库服务器可以按照如下格式发送TCP报文给数据库缓存服务器数据库表名数据库表项主键数据库操作码数据库表项(查询操作码)(为空)数据库缓存服务器收到消息后,按如上格式解析出数据库表名和数据库主键,组成key值,查询数据库缓存中的Hash表中,如果查询到则将查询结果发送给数据库服务器,否则发送一个查询失败的响应给数据库服务器。数据库服务器在收到查询结果后,直接返回查询结果;在收到查询失败的响应后,在数据库服务器上进行查询,并按照上面的格式将查询到的数据库表项添加到数据库缓存中。在进行删除操作时,所述数据库操作码为删除操作码,所述数据库表项为空;所述步骤S2具体可以为数据库缓存服务器根据数据库表名和数据库表项主键在数据库缓存中进行删除操作,并返回删除成功的响应给数据库服务器;所述步骤S3具体可以为数据库服务器收到删除成功的响应后,在数据库中进行删除操作。例如在进行删除操作时,数据库服务器可以按照如下格式发送TCP报文给数据库缓存服务器数据库表名数据库表项主键数据库操作码数据库表项(删除操作码)(为空)数据库缓存服务器收到消息后,按如上格式解析出数据库表名和数据库主键,组成key值,查询数据库缓存的Hash表,如果查询到则从Hash表中删除掉该表项,否则不进行任何操作,并发送一个删除成功的响应给数据库服务器。数据库服务器收到删除成功的响应后从数据库中删除相应表项。在进行修改操作时,所述数据库操作码为修改操作码;所述步骤S2具体为数据库缓存服务器根据数据库表名和数据库表项主键在数据库缓存中查询是否存在对应的数据库表项,如果查询到则修改对应的数据库表项,并发送修改成功的响应给数据库服务器,否则发送修改失败的响应给数据库服务器;所述步骤S3具体为数据库服务器在收到修改成功的响应后,在数据库中进行修改操作;在收到修改失败的响应后,在数据库服务器上进行修改操作,并将修改的数据库表项添加到数据库缓存中。例如在进行修改操作时,数据库服务器可以按照如下格式发送TCP报文给数据库7<table>tableseeoriginaldocumentpage8</column></row><table>数据库缓存服务器收到消息后,按如上格式解析出数据库表名和数据库主键,组成key值,查询数据库缓存中的Hash表中,如果查询到则将数据库缓存的Hash表中的数据库表项更新为数据库操作信息中的数据库表项,并发送修改成功的响应给数据库服务器,否则发送一个修改失败的响应给数据库服务器。数据库服务器在收到修改成功的响应后,在数据库中进行修改操作;在收到修改失败的响应后,在数据库服务器上进行修改操作,并将修改的数据库表项添加到数据库缓存中。图4给出了本发明一种数据库缓存集中管理方法实施例二示意图,本实施例除了包括方法实施例一的步骤外,在所述步骤SI之前还包括步骤S4:数据库服务器判断与数据库缓存服务器连接是否正常,如果是则执行步骤Sl,否则直接对数据库进行操作。数据库缓存服务器和数据库服务器之间通常使用TCP连接,如果连接出现中断,数据库缓存服务器会检测到,此时通常它会把所有的缓存都清空掉。当连接恢复时再继续对数据库服务器中的数据进行缓存。在常见的部署中,数据库缓存服务器和数据库服务器是通过交换机直接连接的,很少出现网络连接中断的问题。如果出现连接中断,一般是由于数据库缓存服务器出现故障或者断电引起的,在重启数据库缓存服务器或更换新机器后,缓存将被清空,正常工作后对数据库服务器中的数据进行缓存。本发明还提供了一种数据库缓存集中管理系统,图5给出了本发明一种数据库缓存集中管理系统实施例示意图,所述系统包括一个或多个数据库服务器和一个数据库缓存服务器;所述数据库服务器用于发送数据库操作信息给数据库缓存服务器,并根据数据库缓存服务器返回的操作结果对数据库进行相应操作所述数据库操作信息可以包括数据库表名、数据库表项主键、数据库操作码和数据库表项。所述数据库缓存服务器与一个或多个数据库服务器连接,用于缓存数据库中的部分数据库表项,用于根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器。所述数据库服务器还可以用于在发送数据库操作信息给数据库缓存服务器之前判断与数据库缓存服务器连接是否正常,如果是发送数据库操作信息给数据库缓存服务器,否则直接对数据库进行操作。在进行添加操作时,所述数据库操作码为添加操作码;数据库缓存服务器可以用于根据数据库表名和数据库表项主键将数据库表项添加到数据库缓存中,并返回添加成功的响应给数据库服务器;数据库服务器可以用于收到添加成功的响应后,在数据库中进行添加操作。在进行查询操作时,所述数据库操作码为查询操作码,所述数据库表项为空;数据库缓存服务器可以用于根据数据库表名和数据库表项主键在数据库缓存中查询是否存在对应的数据库表项,如果查询到则返回查询结果给数据库服务器,否则发送查询失败的响应给数据库服务器;数据库服务器可以用于在收到查询结果后,直接返回查询结果;在收到查询失败的响应后,在数据库服务器上进行查询,并将查询到的数据库表项添加到数据库缓存中。在进行删除操作时,所述数据库操作码为删除操作码,所述数据库表项为空;数据库缓存服务器可以用于根据数据库表名和数据库表项主键在数据库缓存中进行删除操作,并返回删除成功的响应给数据库服务器;数据库服务器可以用于收到删除成功的响应后,在数据库中进行删除操作。在进行修改操作时,所述数据库操作码为修改操作码;数据库缓存服务器可以用于根据数据库表名和数据库表项主键在数据库缓存中查询是否存在对应的数据库表项,如果查询到则修改对应的数据库表项,并发送修改成功的响应给数据库服务器,否则发送修改失败的响应给数据库服务器;数据库服务器可以用于在收到修改成功的响应后,在数据库中进行修改操作;在收到修改失败的响应后,在数据库服务器上进行修改操作,并将修改的数据库表项添加到数据库缓存中。图6给出了本发明一种数据库缓存集中管理系统部署拓扑示意图,本拓扑有如下特征1.部署了网络负载均衡集群,即多台数据库服务器;2.每台数据库服务器上都部署有数据库;3.部署1台数据库缓存服务器;4.数据库服务器与数据库缓存服务器直接连接;5.数据库之间通过数据库复制技术保持数据库一致本发明通过对数据库缓存进行集中管理,对多台数据库服务器部署一台统一的数据库缓存服务器,不需要在每台数据库服务器上都维持一份数据库缓存,在对数据库进行操作前先对数据库缓存进行相应操作,避免了对数据库同步时再对多个数据库缓存进行同步的问题,节约了系统资源。同时,将缓存由数据库缓存服务器集中管理,例如可以保存在一张巨大的Hash表中,提高了查询数据库缓存的性能。数据库缓存的统一管理,也减少了不必要的缓存冗余,为每台服务器大大节约了宝贵的内存资源。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。权利要求一种数据库缓存集中管理方法,其特征在于,所述方法包括步骤S1,数据库服务器发送数据库操作信息给数据库缓存服务器;步骤S2,数据库缓存服务器根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器;步骤S3,数据库服务器根据操作结果对数据库进行相应操作。2.根据权利要求1所述的方法,其特征在于,所述数据库操作信息包括数据库表名、数据库表项主键、数据库操作码和数据库表项。3.根据权利要求2所述的方法,其特征在于,所述数据库操作码为添加操作码;所述步骤S2具体为数据库缓存服务器根据数据库表名和数据库表项主键将数据库表项添加到数据库缓存中,并返回添加成功的响应给数据库服务器;所述步骤S3具体为数据库服务器收到添加成功的响应后,在数据库中进行添加操作。4.根据权利要求2所述的方法,其特征在于,所述数据库操作码为查询操作码,所述数据库表项为空;所述步骤S2具体为数据库缓存服务器根据数据库表名和数据库表项主键在数据库缓存中查询是否存在对应的数据库表项,如果查询到则返回查询结果给数据库服务器,否则发送查询失败的响应给数据库服务器;所述步骤S3具体为数据库服务器在收到查询结果后,直接返回查询结果;在收到查询失败的响应后,在数据库服务器上进行查询,并将查询到的数据库表项添加到数据库缓存中。5.根据权利要求2所述的方法,其特征在于,所述数据库操作码为删除操作码,所述数据库表项为空;所述步骤S2具体为数据库缓存服务器根据数据库表名和数据库表项主键在数据库缓存中进行删除操作,并返回删除成功的响应给数据库服务器;所述步骤S3具体为数据库服务器收到删除成功的响应后,在数据库中进行删除操作。6.根据权利要求2所述的方法,其特征在于,所述数据库操作码为修改操作码;所述步骤S2具体为数据库缓存服务器根据数据库表名和数据库表项主键在数据库缓存中查询是否存在对应的数据库表项,如果查询到则修改对应的数据库表项,并发送修改成功的响应给数据库服务器,否则发送修改失败的响应给数据库服务器;所述步骤S3具体为数据库服务器在收到修改成功的响应后,在数据库中进行添加操作;在收到修改失败的响应后,在数据库服务器上进行添加操作,并将修改的数据库表项添加到数据库缓存中。7.根据权利要求1-6所述的任一方法,其特征在于,所述步骤Sl之前还包括步骤S4:数据库服务器判断与数据库缓存服务器连接是否正常,如果是则执行步骤Sl,否则直接对数据库进行操作。8.—种数据库缓存集中管理系统,其特征在于,所述系统包括一个或多个数据库服务器和一个数据库缓存服务器;所述数据库服务器用于发送数据库操作信息给数据库缓存服务器,并根据数据库缓存服务器返回的操作结果对数据库进行相应操作所述数据库缓存服务器与一个或多个数据库服务器连接,用于缓存数据库中的部分数据库表项,用于根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器。9.根据权利要求8所述的系统,其特征在于,所述数据库服务器还用于在发送数据库操作信息给数据库缓存服务器之前判断与数据库缓存服务器连接是否正常,如果是发送数据库操作信息给数据库缓存服务器,否则直接对数据库进行操作。全文摘要本发明提供了一种数据库缓存集中管理方法和系统。所述方法包括步骤S1,数据库服务器发送数据库操作信息给数据库缓存服务器;步骤S2,数据库缓存服务器根据所述数据库操作信息对数据库缓存进行相应操作,并返回操作结果给数据库服务器;步骤S3,数据库服务器根据操作结果对数据库进行相应操作。本发明通过对数据库缓存进行集中管理,对多台数据库服务器部署一台统一的数据库缓存服务器,不需要在每台数据库服务器上都维持一份数据库缓存,在对数据库进行操作前先对数据库缓存进行相应操作,避免了对数据库同步时再对多个数据库缓存进行同步的问题,节约了系统资源。文档编号H04L29/08GK101706781SQ200910093368公开日2010年5月12日申请日期2009年9月29日优先权日2009年9月29日发明者毛琦申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1