CN102541923B - 一种数据库读写分离的方法和装置 - Google Patents
一种数据库读写分离的方法和装置 Download PDFInfo
- Publication number
- CN102541923B CN102541923B CN201010614413.0A CN201010614413A CN102541923B CN 102541923 B CN102541923 B CN 102541923B CN 201010614413 A CN201010614413 A CN 201010614413A CN 102541923 B CN102541923 B CN 102541923B
- Authority
- CN
- China
- Prior art keywords
- operational approach
- database
- write
- name
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库读写分离的方法和装置,该方法包括:定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;当有业务方法需要访问数据库时,根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。该方法通过对业务方法的方法名进行判断实现数据库读写分离。
Description
技术领域
本发明涉及数据库访问领域,特别是一种数据库读写分离的方法和装置。
背景技术
随着互联网的发展,大型数据库的应用已经成为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的业务方法的方法名的开头。在本方法的较佳实施例中规定特定字符串为“add”、“update”、“delete”、“remove”或“save”,如果所述业务的业务方法名以“add”、“update”、“delete”、“remove”或“save”中任何一个作为业务方法的方法名的开头,则判定该业务方法为访问写数据库的业务方法。
以注册用户为例进行说明:
我们在业务逻辑层302定义一个注册用户的业务方法的命名方式,并将该业务方法命名为addUser,当有人注册用户的时候,就会调用该名为addUser的业务方法。
调用之前,会被数据库读写切面301拦截。
数据库读写切面301获取到业务方法的方法名addUser后,然后去匹配该业务方法的方法名的开头是否为“add”、“update”、“delete”、“remove”或“save”。经过匹配操作,匹配结果为:该业务方法的方法名匹配上了以“add”开头的业务方法的方法名,则判定所述注册用户的业务方法访问的是写数据库303。
在本发明的其他实施例中,如果数据库切面301对业务方法的方法名的开头进行匹配操作后,当匹配结果为不是以“add”、“update”、“delete”、“remove”或“save”作为业务方法的方法名的开头,则判定所述业务访问的是读数据库304。
本发明还提供了一种数据库读写分离的装置,该装置包括:命名模块401和判断模块402,其中:
命名模401块,用于定义访问写数据库303的业务方法的命名方式,根据所述定义的命名方式去命名业务方法,并将所述定义的命名方式发送给判断模块402。
判断模块402,用于在有业务方法需要访问数据库时,根据命名模块401发送的命名方式以及该业务方法的方法名,判断该业务方法是否为访问写数据库303的业务方法,是则将该业务方法定位到写数据库303,否则将该业务方法定位到读数据库304。
在上述装置中,命名模块401,用于将特定字符串作为访问写数据库303的业务方法的方法名的开头。
在上述装置中,判断模块402,用于判断所述业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库303的业务方法。
上述中写数据库303、读数据库304为图3中的写数据库303、读数据库304。
综上所述,现有技术中需要对访问读数据库还是写数据库进行硬编码,这样会造成大量重复代码,本发明中,只需要定义访问写数据库的业务方法的命名方式,通过数据库读写切面对业务方法的方法名的开头进行判断,如果是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。本发明提供的方法实现简单,能够快速有效将业务方法定位到需要访问的读数据库或者是写数据库。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (3)
1.一种数据库读写分离的方法,其特征在于,该方法包括:
业务逻辑层定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;
当有业务方法需要访问数据库时,数据库读写切面拦截所述业务方法,根据该业务方法的方法名以及所述业务逻辑层定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库;
其中,所述定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法包括:
以特定字符串作为访问写数据库的业务方法的方法名的开头;
所述根据该业务方法的方法名以及所述业务逻辑层定义的命名方式,判断该业务方法是否为访问写数据库的方法包括:
判断该业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库的业务方法。
2.根据权利要求1所述的方法,其特征在于,通过面向切面编程技术实现:
根据该业务方法的方法名以及所述定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定为到写数据库,否则将该方法定为到读数据库。
3.一种数据库读写分离的装置,其特征在于,该装置包括:
命名模块:用于定义访问写数据库的业务方法的命名方式,根据所述定义的命名方式去命名业务方法;其中,所述命名模块设置在业务逻辑层中;
判断模块,用于当有业务方法需要访问数据库时,拦截所述业务方法,根据该业务方法的方法名以及所述业务逻辑层定义的命名方式,判断该业务方法是否为访问写数据库的方法,是则将该业务方法定位到写数据库,否则将该业务方法定位到读数据库;
其中,所述命名模块,具体用于以特定字符串作为访问写数据库的业务方法的方法名的开头;
所述判断模块,具体用于当有业务方法需要访问数据库时,数据库读写切面拦截所述业务方法,判断该业务方法的方法名是否以所述特定字符串开头;如果是,则该业务方法为访问写数据库的业务方法,将该业务方法定位到写数据库,否则将该业务方法定位到读数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010614413.0A CN102541923B (zh) | 2010-12-30 | 2010-12-30 | 一种数据库读写分离的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010614413.0A CN102541923B (zh) | 2010-12-30 | 2010-12-30 | 一种数据库读写分离的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541923A CN102541923A (zh) | 2012-07-04 |
CN102541923B true CN102541923B (zh) | 2014-06-11 |
Family
ID=46348839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010614413.0A Active CN102541923B (zh) | 2010-12-30 | 2010-12-30 | 一种数据库读写分离的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541923B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991565B (zh) | 2015-02-05 | 2019-01-25 | 阿里巴巴集团控股有限公司 | 读写分离的方法、系统和数据库代理服务器 |
CN106815218B (zh) * | 2015-11-27 | 2020-12-01 | 华为技术有限公司 | 数据库访问方法、装置和数据库系统 |
CN107301179A (zh) * | 2016-04-14 | 2017-10-27 | 北京京东尚科信息技术有限公司 | 数据库读写分离的方法和装置 |
CN106649865A (zh) * | 2016-12-31 | 2017-05-10 | 深圳市优必选科技有限公司 | 一种分布式服务器系统及数据处理方法 |
CN106960054B (zh) * | 2017-04-01 | 2020-10-02 | 北京奇虎科技有限公司 | 数据文件的存取方法及装置 |
CN108664601A (zh) * | 2018-05-09 | 2018-10-16 | 广州市冰海网络技术有限公司 | 一种前后端数据读写分离的方法 |
CN113761038A (zh) * | 2020-09-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据源读写分离方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119414A (zh) * | 2007-09-19 | 2008-02-06 | 华为技术有限公司 | 访问数据库的方法及系统 |
-
2010
- 2010-12-30 CN CN201010614413.0A patent/CN102541923B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119414A (zh) * | 2007-09-19 | 2008-02-06 | 华为技术有限公司 | 访问数据库的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102541923A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541923B (zh) | 一种数据库读写分离的方法和装置 | |
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN101499069B (zh) | 内存数据库文件的更新方法及更新装置 | |
CN102567399B (zh) | 一种访问数据库的方法和装置 | |
CN109324813A (zh) | 电子控制系统刷写方法、装置及计算机介质 | |
CN103425468B (zh) | 插件式软件集成方法及装置 | |
CN102402596A (zh) | 一种主从分离数据库的读写方法和系统 | |
CN103177077B (zh) | 一种apk文件的存储及输出方法 | |
CN100517229C (zh) | 数据版本升级方法 | |
CN103051652B (zh) | 一种移动终端云计算发布平台 | |
CN102436473A (zh) | 菜单管理装置和菜单管理方法 | |
CN103902562A (zh) | 一种终端数据库升级方法及相关装置 | |
CN103095726A (zh) | 一种协议解析器的处理方法和装置 | |
CN105630489B (zh) | 数据处理方法和数据处理装置 | |
CN104657164A (zh) | 软件升级处理方法和装置 | |
CN105045912A (zh) | 一种关系型数据库数据分发的方法 | |
CN104268097A (zh) | 一种元数据处理方法及系统 | |
CN101174204A (zh) | 数据版本升级的装置 | |
CN102779076B (zh) | 一种浏览器中进程间通信的方法和装置 | |
CN103501341A (zh) | 一种Web服务的创建方法及装置 | |
CN102937862B (zh) | 一种通过浏览器管理移动终端的系统及方法 | |
CN109840078B (zh) | 一种协作编辑分层元数据的方法及装置 | |
CN102567081A (zh) | 基于多进程的全局设置方法及系统 | |
CN101458628A (zh) | 一种程序版本管理方法 | |
CN106204224A (zh) | 一种物联网农商系统平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building A block 5 layer Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |