CN103793432B - 一种数据库读写分离方法及装置 - Google Patents

一种数据库读写分离方法及装置 Download PDF

Info

Publication number
CN103793432B
CN103793432B CN201210430711.3A CN201210430711A CN103793432B CN 103793432 B CN103793432 B CN 103793432B CN 201210430711 A CN201210430711 A CN 201210430711A CN 103793432 B CN103793432 B CN 103793432B
Authority
CN
China
Prior art keywords
service request
note
read
write
data base
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.)
Expired - Fee Related
Application number
CN201210430711.3A
Other languages
English (en)
Other versions
CN103793432A (zh
Inventor
付章华
仇大帅
祝明远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE ICT Technologies Co Ltd
Original Assignee
ZTE ICT Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE ICT Technologies Co Ltd filed Critical ZTE ICT Technologies Co Ltd
Priority to CN201210430711.3A priority Critical patent/CN103793432B/zh
Publication of CN103793432A publication Critical patent/CN103793432A/zh
Application granted granted Critical
Publication of CN103793432B publication Critical patent/CN103793432B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems

Abstract

本发明公开一种数据库读写分离方法,包括:拦截并解析业务请求,确定业务请求中是否存在注解部分;当业务请求中存在注解时,对注解进行分析;依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作。本发明还公开一种数据库读写分离装置,利用本发明,无需重新编辑配置文件,只需直接修改注解即可链接不同的数据库进行读操作或写操作。

Description

一种数据库读写分离方法及装置
技术领域
本发明涉及数据库的读写技术,具体涉及一种数据库读写分离方法及装置。
背景技术
随着企业机制的越发完善,企业应用系统中的数据量也随之增多。这些应用系统在为企业带来收益的同时,也令数据库的读写次数越来越多。分离数据库的读操作和写操作是解决数据库读写压力的方式之一。
目前,分离数据库读写操作通常的实现方法是:统一配置可扩展性标记语言(XML,Extensible Markup Language)文件,将数据库业务对应的类、执行类的方法、类的属性等内容写入XML文件;当数据库执行某个业务时,guzz(Java框架之一)容器读取与该业务相关的XML文件,根据XML文件记录的配置信息,应用系统将读操作和写操作分配到不同的数据库中。
因XML文件提供了一种简洁的自解释标记方法,几乎不需要说明文档,就能理解XML格式的配置文件的意义,故大多数的业务应用都能够处理XML文件;可见,采用XML文件作为数据库读写操作中的配置文件正是发挥了它的通用性强、扩展性好等特点。但是,在结构上,XML文件需采用独立的配置文件,大多数的配置信息在应用系统开发完成后都不会进行再调整;而在应用系统的某个功能运行时,需要不停地在业务文件和配置文件之间进行切换,这就使得应用进程缓慢;况且在改变功能时,需重新编辑配置文件、导致应用系统的开发不灵活、开发周期加长。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据库读写分离方法及装置,能增强配置文件修改的灵活性,缩短开发周期。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种数据库读写分离方法,该方法包括:
拦截并解析业务请求,确定业务请求中是否存在注解部分;
当业务请求中存在注解时,对注解进行分析;
依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作。
上述方案中,所述拦截并解析业务请求为:利用面向切面编程AOP拦截所有业务请求,通过获取注解函数获取注解。
上述方案中,所述当业务请求中存在注解时,对注解进行分析为:
当业务请求中存在注解部分时,利用参数语句读取注解返回值参数;
依据返回值参数,利用Spring的反射机制查找注解说明的方法。
上述方案中,所述依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作为:
依据注解说明的方法,建立业务请求与对应的数据库之间的链接,在对应的数据库中进行指定次数的读操作或写操作。
本发明还提供了一种数据库读写分离装置,该装置包括拦截解析模块、注解分析模块和业务请求处理模块;其中,
所述拦截解析模块,用于拦截并解析业务请求,确定业务请求中是否存在注解部分;
所述注解分析模块,用于当业务请求中存在注解时,对注解进行分析;
所述业务请求处理模块,用于依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作。
上述方案中,所述拦截解析模块,具体用于利用AOP功能拦截所有的业务请求,并利用获取注解函数获取注解,根据获取注解函数返回值确定当前业务请求中是否存在注解部分,所述返回值为非空时,确定当前业务请求中存在注解部分,将注解部分发送给所述注解分析模块。
上述方案中,所述注解分析模块,具体用于当业务请求中存在注解部分时,利用参数语句读取注解返回值参数;依据返回值参数,再利用Spring的反射机制查找注解说明的方法。
上述方案中,所述业务请求处理模块,具体用于依据注解说明的方法,建立业务请求与对应的数据库之间的链接,并在对应的数据库中进行指定次数的读操作或写操作。
本发明提供的数据库读写分离方法及装置,将配置文件以注解的形式存在于业务文件中,当需要修改配置文件时,无需重新编辑配置文件,只需直接修改注解,即可解决在传统的应用系统使用某个数据库时,该数据库只能进行单一读操作、或写操作的问题。如此,不仅能增强配置文件修改的灵活性,而且能缩短开发周期。
附图说明
图1为本发明的数据库读写分离方法的流程示意图;
图2为本发明的数据库读写分离装置的结构组成示意图。
具体实施方式
本发明提供的一种数据库读写分离方法,如图1所示,该方法包括:
步骤11:拦截并解析业务请求,确定业务请求中是否存在注解部分;
具体的,本步骤为:在实际应用中,先加载应用环境,然后在应用环境中加入所需的数据包,在Spring(应用程序框架之一)文件中打开面向切面编程(AOP,Aspect OrientedProgramming)的功能;
所述AOP拦截所有的业务请求,并利用获取注解(GetAnnotation)函数逐一判断当前的业务请求中是否存在注解部分;当所述GetAnnotation的返回值为非空时,表明当前的业务请求存在有注解部分,则继续进行步骤12;当所述GetAnnotation的返回值为空时,表明当前的业务请求中没有存在注解部分,继续执行业务文件,本流程结束。
步骤12:当业务请求中存在注解时,对注解进行分析;
具体的,本步骤为:当业务请求中存在注解部分时,利用参数(Parameters)语句读取注解返回值参数;然后依据返回值参数,利用Spring的反射机制invoke查找注解说明的方法,这里,所述注解说明的方法是预先设置的,该注解说明方法中说明了业务请求链接的指定数据库、在所述指定数据库中进行读操作还是写操作、以及读操作或写操作的次数等内容。
步骤13:依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作。
具体的,本步骤为:依据各自的注解说明的方法,存在有注解的业务请求将调用应用系统中的连接池(pool),与所述业务请求各自对应的数据库进行链接;然后,在各自链接到的数据库中进行指定次数的读操作或写操作;其中,所述的pool用于建立业务请求与数据库之间的数据链接、数据传输等。
为实现上述方法,本发明还提供了一种数据读写分离装置,如图2所示,所述装置包括拦截解析模块20、注解分析模块21、以及业务请求处理模块22;其中,
所述拦截解析模块20,用于拦截并解析业务请求,确定业务请求中是否存在注解部分;
所述注解分析模块21,用于当业务请求中存在注解时,对注解进行分析;
所述业务请求处理模块22,用于依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作。
具体的,所述拦截解析模块20,在Spring文件中打开AOP功能,利用所述AOP功能拦截所有的业务请求,并利用GetAnnotation函数获取注解,根据获取注解函数返回值逐一判断当前的业务请求中是否存在注解部分;当所述GetAnnotation的返回值为非空时,确定当前业务请求中存在注解部分,则将存在的注解部分发送给所述注解分析模块21进行处理;当所述GetAnnotation的返回值为空时,确定当前业务请求中没有存在注解部分,则继续执行业务文件。
所述注解分析模块21,具体用于接收所述拦截解析模块20发来的注解部分,利用Parameters语句读取注解返回值参数;依据返回值参数,并利用Spring的反射机制invoke查找注解说明的方法。
这里,所述注解说明的方法是预先设置的,该注解说明方法中说明了业务请求链接的指定数据库、在所述指定数据库中进行读操作还是写操作、以及读操作或写操作的次数等内容。
所述业务请求处理模块22,具体用于依据注解说明的方法,利用应用系统中的pool,将存在有注解的业务请求与对应的数据库进行链接,继而在对应的数据库中进行指定次数的读操作或写操作。
结合下面具体实施例的内容,对本发明进行详细的说明。
加载应用环境,在应用环境Maven中加入所需的数据包;然后,所述拦截解析模块20利用语句<aop:aspectj-autoproxy/>打开AOP功能;所述AOP功能能够拦截所有的业务请求。本实施例中,当前的业务请求为renderer,那么:
所述拦截解析模块20先判断当前业务请求renderer中是否存在注解;注解存在时,返回注解返回值参数给所述注解分析模块21;所述注解分析模块21根据返回值参数利用invoke机制查找注解说明的方法;这里,所述业务请求renderer返回的注解说明的方法表明业务请求renderer需要与A数据库建立链接,并执行读操作5000次。
根据所述业务请求renderer返回的注解说明的方法,所述业务请求处理模块22将所述业务请求renderer通过所述pool与A数据库建立起链接,并在所述A数据库中进行读操作。
具体的操作实现语句如下:
本实施例中,依据所述业务请求renderer返回的注解说明的方法,所述业务请求处理模块22,通过pool建立起所述业务请求renderer与所述A数据库建立链接,并在所述A数据库中分5000次读取自身需要的数据。
本发明提供的数据读写分离方法及装置,将配置文件以注解的形式存在于业务文件中,如有需要,只需修改注解即可。本发明还可应用于如下场景:某一业务操作(可以包含多个业务请求)需要对数据库进行大量“读”和“写”操作时,假设完成这一业务操作需要“读”数据库5000次,“写”数据库10000次。那么,利用本发明,可将A数据库设置为负责“读”,B、C数据库设置为负责“写”,A数据库负责读数据5000次,B、C数据库分别负责写数据5000次;在实际操作中,只需要对注解进行修改,便可将数据的读写操作压力平均分担到不同的数据库中;如此,不仅增强了配置文件修改的灵活性,缩短了开发周期,还增强了读写操作之间的同步,缩短了读写操作的延时。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (6)

1.一种数据库读写分离方法,其特征在于,该方法包括:
在Spring文件中打开面向切面编程AOP的功能,拦截并解析业务请求,确定业务请求中是否存在注解部分;
当业务请求中存在注解时,对注解进行分析;
依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作;
其中,所述当业务请求中存在注解时,对注解进行分析为:
当业务请求中存在注解部分时,利用参数语句读取注解返回值参数;
依据返回值参数,利用Spring的反射机制查找注解说明的方法,该注解说明方法中说明了业务请求链接的指定数据库、在所述指定数据库中进行读操作还是写操作、以及读操作或写操作的次数。
2.根据权利要求1所述的数据库读写分离方法,其特征在于,所述拦截并解析业务请求为:利用面向切面编程AOP拦截所有业务请求,通过获取注解函数获取注解。
3.根据权利要求1所述的数据库读写分离方法,其特征在于,所述依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作为:
依据注解说明的方法,建立业务请求与对应的数据库之间的链接,在对应的数据库中进行指定次数的读操作或写操作。
4.一种数据库读写分离装置,其特征在于,该装置包括拦截解析模块、注解分析模块和业务请求处理模块;其中,
所述拦截解析模块,用于在Spring文件中打开面向切面编程AOP的功能,拦截并解析业务请求,确定业务请求中是否存在注解部分;
所述注解分析模块,用于当业务请求中存在注解时,对注解进行分析;
所述业务请求处理模块,用于依据对注解的分析结果,将所述业务请求链接到对应的数据库进行读操作或写操作;
其中,所述注解分析模块,具体用于当业务请求中存在注解部分时,利用参数语句读取注解返回值参数;依据返回值参数,再利用Spring的反射机制查找注解说明的方法,该注解说明方法中说明了业务请求链接的指定数据库、在所述指定数据库中进行读操作还是写操作、以及读操作或写操作的次数。
5.根据权利要求4所述的数据库读写分离装置,其特征在于,所述拦截解析模块,具体用于利用AOP功能拦截所有的业务请求,并利用获取注解函数获取注解,根据获取注解函数返回值确定当前业务请求中是否存在注解部分,所述返回值为非空时,确定当前业务请求中存在注解部分,将注解部分发送给所述注解分析模块。
6.根据权利要求4所述的数据库读写分离装置,其特征在于,所述业务请求处理模块,具体用于依据注解说明的方法,建立业务请求与对应的数据库之间的链接,并在对应的数据库中进行指定次数的读操作或写操作。
CN201210430711.3A 2012-11-01 2012-11-01 一种数据库读写分离方法及装置 Expired - Fee Related CN103793432B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210430711.3A CN103793432B (zh) 2012-11-01 2012-11-01 一种数据库读写分离方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210430711.3A CN103793432B (zh) 2012-11-01 2012-11-01 一种数据库读写分离方法及装置

Publications (2)

Publication Number Publication Date
CN103793432A CN103793432A (zh) 2014-05-14
CN103793432B true CN103793432B (zh) 2018-04-06

Family

ID=50669111

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210430711.3A Expired - Fee Related CN103793432B (zh) 2012-11-01 2012-11-01 一种数据库读写分离方法及装置

Country Status (1)

Country Link
CN (1) CN103793432B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391873A (zh) * 2014-10-29 2015-03-04 上海达梦数据库有限公司 数据库操作分离方法和系统
CN105991565B (zh) 2015-02-05 2019-01-25 阿里巴巴集团控股有限公司 读写分离的方法、系统和数据库代理服务器
CN106469156B (zh) * 2015-08-17 2019-10-18 华为终端有限公司 数据库读写方法及装置
CN107122357A (zh) * 2016-02-24 2017-09-01 阿里巴巴集团控股有限公司 数据库读写分离方法、装置和系统
CN107301179A (zh) * 2016-04-14 2017-10-27 北京京东尚科信息技术有限公司 数据库读写分离的方法和装置
CN106960054B (zh) * 2017-04-01 2020-10-02 北京奇虎科技有限公司 数据文件的存取方法及装置
CN108415834A (zh) * 2018-02-12 2018-08-17 平安科技(深圳)有限公司 注解后端校验方法、装置、计算机设备及存储介质
CN110489310B (zh) * 2018-09-25 2020-04-14 北京数聚鑫云信息技术有限公司 一种记录用户操作的方法、装置、存储介质及计算机设备
CN110321337A (zh) * 2019-06-24 2019-10-11 南威互联网科技集团有限公司 一种实现数据库动态切换的方法及计算机可读存储介质
CN110442636B (zh) * 2019-08-22 2022-04-05 迈普通信技术股份有限公司 一种数据的读写方法、装置及数据读写设备
CN112951437B (zh) * 2019-12-11 2023-08-08 北京懿医云科技有限公司 医疗数据管理方法、装置、存储介质与电子设备
CN111381833B (zh) * 2020-03-05 2023-05-12 山东汇贸电子口岸有限公司 一种容器化的openstack数据初始化方法
CN112231300A (zh) * 2020-10-21 2021-01-15 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备
CN113434582B (zh) * 2021-06-24 2023-01-03 平安国际智慧城市科技股份有限公司 业务数据处理方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102033912A (zh) * 2010-11-25 2011-04-27 北京北纬点易信息技术有限公司 一种分布式数据库访问方法及系统
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102033912A (zh) * 2010-11-25 2011-04-27 北京北纬点易信息技术有限公司 一种分布式数据库访问方法及系统
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置

Also Published As

Publication number Publication date
CN103793432A (zh) 2014-05-14

Similar Documents

Publication Publication Date Title
CN103793432B (zh) 一种数据库读写分离方法及装置
CN106970802B (zh) 在领域特定语言中集成编程脚本语言的方法及装置
US7210066B2 (en) Method and system for determining computer software test coverage
CN103294652B (zh) 一种数据转换方法及系统
CN103440201A (zh) 动态污点分析装置及其在文件格式逆向解析中的应用
CN108920133A (zh) 跨语言编程方法、装置、电子设备及存储介质
US11423116B2 (en) Automatically creating lambda functions in spreadsheet applications
CN108595389A (zh) 一种将Word文档转换为txt纯文本文档的方法
CN101216760A (zh) 一种动态映射接口调用系统及方法
CN110286917A (zh) 文件打包方法、装置、设备及存储介质
CN108776610A (zh) 一种界面配置方法和装置
CN111782265A (zh) 基于字段级血缘关系的软件资源系统及其建立方法
CN103077192B (zh) 一种数据处理方法及其系统
CN102289774A (zh) 金融交易处理系统中的图形化报文处理与测试系统及方法
CN106021071A (zh) 一种监控sql运行过程的方法和系统
CN104391796A (zh) 一种测试用例解析方法
CN110262784A (zh) 一种云笔记实现方法及装置
US20090055421A1 (en) Migration and transformation of data structures
CN113868252A (zh) 数据库模式匹配方法及装置、sql查询语句生成方法
US20080114797A1 (en) Importing non-native content into a document
CN100407663C (zh) 一种电信智能业务的通用测试系统及方法
CN110109671B (zh) 一种webpack标签尺寸样式转换方法及装置
CN104765787B (zh) 软件系统内要素文件关联关系分析方法及系统
CN105867886B (zh) 一种写表格的方法及装置
CN110187886A (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
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180406

Termination date: 20211101