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

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

Info

Publication number
CN103793432A
CN103793432A CN201210430711.3A CN201210430711A CN103793432A CN 103793432 A CN103793432 A CN 103793432A CN 201210430711 A CN201210430711 A CN 201210430711A CN 103793432 A CN103793432 A CN 103793432A
Authority
CN
China
Prior art keywords
annotation
service request
database
read
write
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.)
Granted
Application number
CN201210430711.3A
Other languages
English (en)
Other versions
CN103793432B (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

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

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 Oriented Programming)的功能;
所述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数据库中进行读操作。
具体的操作实现语句如下:
Figure BDA00002345610900051
Figure BDA00002345610900061
本实施例中,依据所述业务请求renderer返回的注解说明的方法,所述业务请求处理模块22,通过pool建立起所述业务请求renderer与所述A数据库建立链接,并在所述A数据库中分5000次读取自身需要的数据。
本发明提供的数据读写分离方法及装置,将配置文件以注解的形式存在于业务文件中,如有需要,只需修改注解即可。本发明还可应用于如下场景:某一业务操作(可以包含多个业务请求)需要对数据库进行大量“读”和“写”操作时,假设完成这一业务操作需要“读”数据库5000次,“写”数据库10000次。那么,利用本发明,可将A数据库设置为负责“读”,B、C数据库设置为负责“写”,A数据库负责读数据5000次,B、C数据库分别负责写数据5000次;在实际操作中,只需要对注解进行修改,便可将数据的读写操作压力平均分担到不同的数据库中;如此,不仅增强了配置文件修改的灵活性,缩短了开发周期,还增强了读写操作之间的同步,缩短了读写操作的延时。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (8)

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

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391873A (zh) * 2014-10-29 2015-03-04 上海达梦数据库有限公司 数据库操作分离方法和系统
CN106469156A (zh) * 2015-08-17 2017-03-01 华为终端(东莞)有限公司 数据库读写方法及装置
CN106960054A (zh) * 2017-04-01 2017-07-18 北京奇虎科技有限公司 数据文件的存取方法及装置
CN107122357A (zh) * 2016-02-24 2017-09-01 阿里巴巴集团控股有限公司 数据库读写分离方法、装置和系统
CN107301179A (zh) * 2016-04-14 2017-10-27 北京京东尚科信息技术有限公司 数据库读写分离的方法和装置
WO2019153544A1 (zh) * 2018-02-12 2019-08-15 平安科技(深圳)有限公司 注解后端校验方法、装置、计算机设备及存储介质
CN110321337A (zh) * 2019-06-24 2019-10-11 南威互联网科技集团有限公司 一种实现数据库动态切换的方法及计算机可读存储介质
CN110442636A (zh) * 2019-08-22 2019-11-12 迈普通信技术股份有限公司 一种数据的读写方法、装置及数据读写设备
CN110489310A (zh) * 2018-09-25 2019-11-22 北京数聚鑫云信息技术有限公司 一种记录用户操作的方法、装置、存储介质及计算机设备
US10706165B2 (en) 2015-02-05 2020-07-07 Alibaba Group Holding Limited System, method and database proxy server for separating operations of read and write
CN111381833A (zh) * 2020-03-05 2020-07-07 山东汇贸电子口岸有限公司 一种容器化的openstack数据初始化方法
CN112231300A (zh) * 2020-10-21 2021-01-15 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备
CN112951437A (zh) * 2019-12-11 2021-06-11 北京懿医云科技有限公司 医疗数据管理方法、装置、存储介质与电子设备
CN113434582A (zh) * 2021-06-24 2021-09-24 平安国际智慧城市科技股份有限公司 业务数据处理方法、装置、计算机设备和存储介质
CN113761038A (zh) * 2020-09-29 2021-12-07 北京沃东天骏信息技术有限公司 数据源读写分离方法和装置
CN114064523A (zh) * 2021-11-19 2022-02-18 杭州安恒信息安全技术有限公司 一种数据处理方法、装置、设备及可读存储介质
CN118503319A (zh) * 2024-07-18 2024-08-16 飞狐信息技术(天津)有限公司 一种数据库操作方法、装置、设备、存储介质和产品

Family Cites Families (2)

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

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391873A (zh) * 2014-10-29 2015-03-04 上海达梦数据库有限公司 数据库操作分离方法和系统
US10706165B2 (en) 2015-02-05 2020-07-07 Alibaba Group Holding Limited System, method and database proxy server for separating operations of read and write
CN106469156A (zh) * 2015-08-17 2017-03-01 华为终端(东莞)有限公司 数据库读写方法及装置
CN106469156B (zh) * 2015-08-17 2019-10-18 华为终端有限公司 数据库读写方法及装置
CN107122357A (zh) * 2016-02-24 2017-09-01 阿里巴巴集团控股有限公司 数据库读写分离方法、装置和系统
CN107301179A (zh) * 2016-04-14 2017-10-27 北京京东尚科信息技术有限公司 数据库读写分离的方法和装置
CN106960054A (zh) * 2017-04-01 2017-07-18 北京奇虎科技有限公司 数据文件的存取方法及装置
CN106960054B (zh) * 2017-04-01 2020-10-02 北京奇虎科技有限公司 数据文件的存取方法及装置
WO2019153544A1 (zh) * 2018-02-12 2019-08-15 平安科技(深圳)有限公司 注解后端校验方法、装置、计算机设备及存储介质
CN110489310A (zh) * 2018-09-25 2019-11-22 北京数聚鑫云信息技术有限公司 一种记录用户操作的方法、装置、存储介质及计算机设备
CN110321337A (zh) * 2019-06-24 2019-10-11 南威互联网科技集团有限公司 一种实现数据库动态切换的方法及计算机可读存储介质
CN110442636A (zh) * 2019-08-22 2019-11-12 迈普通信技术股份有限公司 一种数据的读写方法、装置及数据读写设备
CN112951437A (zh) * 2019-12-11 2021-06-11 北京懿医云科技有限公司 医疗数据管理方法、装置、存储介质与电子设备
CN112951437B (zh) * 2019-12-11 2023-08-08 北京懿医云科技有限公司 医疗数据管理方法、装置、存储介质与电子设备
CN111381833A (zh) * 2020-03-05 2020-07-07 山东汇贸电子口岸有限公司 一种容器化的openstack数据初始化方法
CN111381833B (zh) * 2020-03-05 2023-05-12 山东汇贸电子口岸有限公司 一种容器化的openstack数据初始化方法
CN113761038A (zh) * 2020-09-29 2021-12-07 北京沃东天骏信息技术有限公司 数据源读写分离方法和装置
CN112231300A (zh) * 2020-10-21 2021-01-15 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备
CN113434582A (zh) * 2021-06-24 2021-09-24 平安国际智慧城市科技股份有限公司 业务数据处理方法、装置、计算机设备和存储介质
CN114064523A (zh) * 2021-11-19 2022-02-18 杭州安恒信息安全技术有限公司 一种数据处理方法、装置、设备及可读存储介质
CN118503319A (zh) * 2024-07-18 2024-08-16 飞狐信息技术(天津)有限公司 一种数据库操作方法、装置、设备、存储介质和产品

Also Published As

Publication number Publication date
CN103793432B (zh) 2018-04-06

Similar Documents

Publication Publication Date Title
CN103793432B (zh) 一种数据库读写分离方法及装置
US11074067B2 (en) Auto-generation of application programming interface (API) documentation via implementation-neutral analysis of API traffic
JP6755954B2 (ja) インターフェースデータの提示方法及び装置
EP2798494B1 (en) Virtual channel for embedded process communication
US8997070B2 (en) Extension mechanism for scripting language compiler
US7478085B2 (en) Ability for developers to easily find or extend well known locations on a system
US9703678B2 (en) Debugging pipeline for debugging code
US9372836B2 (en) HTML5 I-frame extension
CN111367976B (zh) 基于java反射机制的excel文件数据的导出方法及装置
US9619304B2 (en) Automatic connections between application components
CN109492053B (zh) 用于访问数据的方法和装置
US20100162225A1 (en) Cross-product refactoring apparatus and method
CN110083342B (zh) 一种程序生成方法、装置以及计算机可读存储介质
CN109542412A (zh) 接口信息生成方法、装置、计算机设备和存储介质
CN111666072A (zh) 一种软件代码及文档机器人方法
US9026612B2 (en) Generating a custom parameter rule based on a comparison of a run-time value to a request URL
US7966600B2 (en) Distributed resource understanding tool management
CN106326129A (zh) 一种程序异常信息生成方法及装置
CN113836014A (zh) 一种接口测试方法、装置、电子设备和存储介质
CN113962597A (zh) 一种数据分析方法、装置、电子设备及存储介质
Clem et al. Static analysis at github: An experience report
Peters Building rich internet applications with node. js and express. js
CN116932649A (zh) 数据库同步方法、数据库同步设备以及可读存储介质
CN107239265B (zh) Java函数与C函数的绑定方法及装置
CN107665210A (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

Granted publication date: 20180406

Termination date: 20211101

CF01 Termination of patent right due to non-payment of annual fee