一种数据库读写分离的方法和装置的制作方法

文档序号:6340677阅读:132来源:国知局
专利名称:一种数据库读写分离的方法和装置的制作方法
技术领域
本发明涉及数据库访问领域,特别是一种数据库读写分离的方法和装置。
背景技术
随着互联网的发展,大型数据库的应用已经成为web应用中不可缺少的部分,通常情况下我们使用一个数据库进行读写操作,这种技术解决方案在大并发访问时将使得数据库访问成为瓶颈,于是数据库读写分离技术应运而生,将数据库的读取与写入分开,可以有效解决数据库大并发情况下的压力,图1是现有技术中数据库读写分离示意图。如图1所示,通常在一组数据库中设置一个读写库(Master)和多个读库(Slave)。 在进行读操作的时候访问Slave库,在执行添加和更新数据的时候访问Master库。Master 库写入数据库之后将会把数据同步到Slave库中。对于如何根据不同的业务快速有效的访问Master库还是Slave库,传统方案中基本的解决方法是硬编码到程序中,靠程序员的思维进行读操作和写操作的区分,这样的方式产生了大量的重复性代码,导致业务逻辑与读写操作的耦合性非常高,而且业务代码越多就越容易出错。

发明内容
本发明提供了一种数据库读写分离的方法,该方法通过对业务方法的方法名进行判断实现数据库读写分离。本发明提供了一种数据库读写分离的装置,该装置通过对业务方法的方法名进行判断实现数据库读写分离。为达到上述目的,该方法是这样实现的本发明提供了一种数据库读写分离的方法,该方法包括定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;当有业务方法需要访问数据库时,根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。在上述方法中,所述定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法包括以特定字符串作为访问写数据库的业务方法的方法名的开头。在上述方法中,所述根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法包括判断该业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库的业务方法。在上述方法中,通过面向切面编程技术实现根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该方法定位到读数据库。本发明还提供了一种数据库读写分离的装置,该装置包括命名模块和判断模块, 其中命名模块,用于定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法,并将所述定义的命名方式发送给判断模块。判断模块,用于在有业务方法需要访问数据库时,根据命名模块发送的命名方式以及该业务方法的方法名,判断该业务方法是否为访问写数据库的业务方法,是则将该业务方法定位到写数据库,否则将该方法定位到读数据库。在上述装置中,命名模块,用于将特定字符串作为访问写数据库的业务方法的方法名的开头。在上述装置中,判断模块,用于判断所述业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库的业务方法。由上述可知,本发明这种通过定义访问写数据库的业务方法的命名方式,对业务方法进行命名,根据所定义的命名方式以及命名后的业务方法的方法名,对需要访问写数据库的业务方法进行判断,实现数据库的读写分离。


图1是现有技术中数据库读写分离示意图;图2是本发明中一种数据库读写分离的方法的流程图;图3是本发明中一种数据库实现读写分离的结构示意图;图4是本发明中一种数据库读写分离的装置的结构图。
具体实施例方式图2是本发明中一种数据库读写分离的方法的流程图。如图2所示步骤201,定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;步骤202,当有业务方法需要访问数据库时,根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。图3是本发明中一种数据库实现读写分离的结构示意图。如图3所示。数据库读写切面301,可以使用面向切面编程技术实现,该数据库读写切面301对访问写数据库303的业务方法的方法名进行判断。如果是则将该业务方法定位到写数据库 303,否则将该业务方法定位到读数据库304。数据库读写切面301,通过判断该业务方法的方法名是否以所述特定字符串开头; 如果是,则该业务方法为访问写数据库303的业务方法。业务逻辑层302,定义访问写数据库303的业务方法的命名方式,根据所定义的命名方式去命名业务方法。其中,以特定字符串作为访问写数据库303的业务方法的方法名的开头。在本方法的较佳实施例中规定特定字符串为 (1(1”、“叩(1站6”、“如1讨6”、“1^0%” 或“save”,如果所述业务的业务方法名以“add”、“update”、“delete”、“rem0Ve”或“save” 中任何一个作为业务方法的方法名的开头,则判定该业务方法为访问写数据库的业务方法。以注册用户为例进行说明我们在业务逻辑层302定义一个注册用户的业务方法的命名方式,并将该业务方法命名为addUser,当有人注册用户的时候,就会调用该名为addUser的业务方法。调用之前,会被数据库读写切面301拦截。数据库读写切面301获取到业务方法的方法名addUser后,然后去匹配该业务方法的方法名的开头是否为“add”、“update”、“delete”、“rem0Ve”或“save”。经过匹配操作,匹配结果为该业务方法的方法名匹配上了以“add”开头的业务方法的方法名,则判定所述注册用户的业务方法访问的是写数据库303。在本发明的其他实施例中,如果数据库切面301对业务方法的方法名的开头进行匹配操作后,当匹配结果为不是以“add”、“update”、“delete”、“rem0Ve”或“save”作为业务方法的方法名的开头,则判定所述业务访问的是读数据库304。本发明还提供了一种数据库读写分离的装置,该装置包括命名模块401和判断模块402,其中命名模401块,用于定义访问写数据库303的业务方法的命名方式,根据所述定义的命名方式去命名业务方法,并将所述定义的命名方式发送给判断模块402。判断模块402,用于在有业务方法需要访问数据库时,根据命名模块401发送的命名方式以及该业务方法的方法名,判断该业务方法是否为访问写数据库303的业务方法, 是则将该业务方法定位到写数据库303,否则将该业务方法定位到读数据库304。在上述装置中,命名模块401,用于将特定字符串作为访问写数据库303的业务方法的方法名的开头。在上述装置中,判断模块402,用于判断所述业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库303的业务方法。上述中写数据库303、读数据库304为图3中的写数据库303、读数据库304。综上所述,现有技术中需要对访问读数据库还是写数据库进行硬编码,这样会造成大量重复代码,本发明中,只需要定义访问写数据库的业务方法的命名方式,通过数据库读写切面对业务方法的方法名的开头进行判断,如果是则将该业务方法定位到写数据库, 否则将该业务方法定位到读数据库。本发明提供的方法实现简单,能够快速有效将业务方法定位到需要访问的读数据库或者是写数据库。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种数据库读写分离的方法,其特征在于,该方法包括定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;当有业务方法需要访问数据库时,根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。
2.根据权利要求1所述的方法,其特征在于,所述定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法包括以特定字符串作为访问写数据库的业务方法的方法名的开头。
3.根据权利要求2所述的方法,其特征在于,所述根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法包括判断该业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库的业务方法。
4.根据权利要求3所述的方法,其特征在于,通过面向切面编程技术实现根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定为到写数据库,否则将该方法定为到读数据库。
5.一种数据库读写分离的装置,其特征在于,该装置包括 命名模块和判断模块,其中命名模块,用于定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法,并将所述定义的命名方式发送给判断模块。判断模块,用于在有业务方法需要访问数据库时,根据命名模块发送的命名方式以及该业务方法的方法名,判断该业务方法是否为访问写数据库的业务方法,是则将该业务方法定位到写数据库,否则将该方法定位到读数据库。
6.根据权利要求5所述的装置,其特征在于,命名模块,用于将特定字符串作为访问写数据库的业务方法的方法名的开头。
7.根据权利要求6所述的装置,其特征在于,判断模块,用于判断所述业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库的业务方法。
全文摘要
本发明公开了一种数据库读写分离的方法和装置,该方法包括定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;当有业务方法需要访问数据库时,根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。该方法通过对业务方法的方法名进行判断实现数据库读写分离。
文档编号G06F17/30GK102541923SQ20101061441
公开日2012年7月4日 申请日期2010年12月30日 优先权日2010年12月30日
发明者户起龙, 黄继德 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1