CN102567399B - 一种访问数据库的方法和装置 - Google Patents
一种访问数据库的方法和装置 Download PDFInfo
- Publication number
- CN102567399B CN102567399B CN201010617029.6A CN201010617029A CN102567399B CN 102567399 B CN102567399 B CN 102567399B CN 201010617029 A CN201010617029 A CN 201010617029A CN 102567399 B CN102567399 B CN 102567399B
- Authority
- CN
- China
- Prior art keywords
- operational approach
- database
- storehouse
- carry out
- point
- 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
技术领域
本发明涉及数据业务技术领域,特别是一种访问数据库的方法和装置。
背景技术
大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就会显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列,按照某种规则或者业务逻辑对数据库进行切分,将数据分布在多个数据库中或者多个表中。图1是现有技术中数据结构图。如图1所示,根据具体业务将数据库分为三个,每个数据库中又可能将一个表里的数据分成n个相同结构的表,这时我们面临的数据源可能多达数十甚至上百个,如何快速有效的访问这些数据源,并将相应的数据正确地定位到数据源就成为一个必须解决的问题。
在现有技术完全将分库分表封装在数据库访问层,虽然得到了使用上的方便,但是造成数据库访问层的编写变得非常复杂,而且全部使用jta作为全局事务管理器对业务方法进行操作,造成事务处理上的效率相对较低。
发明内容
本发明提供了一种访问数据库的方法,该方法能够提高业务方法访问数据库的效率。
本发明还提供了一种访问数据的装置,该装置能够提高业务方法访问数据库的效率。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种访问数据库的方法,该方法包括:
业务逻辑层根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;
数据库访问层将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。
如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
本发明还提供了一种访问数据库的装置,该装置包括:业务逻辑层模块和数据库访问模块,业务逻辑层模块还包括单库事务管理器和跨库事务管理器;其中:
业务逻辑层模块:用于根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;再将定位到的对应的一个或多个数据库的标识发送给数据库访问模块;
数据库访问模块:根据业务逻辑层模块发送的数据库的标识,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;
如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
由上述可知,本发明这种把业务方法定位到数据库的操作封装到业务逻辑层,再将业务方法定位到数据库的表中的操作封装在数据库访问层,并使用不同的事务管理器对单库事务和跨库事务进行操作。本发明的计算方案提高了业务方法访问数据库的效率。
附图说明
图1是现有技术中典型的数据库结构示意图;
图2是本发明的一种访问数据库的方法的流程图;
图3是本发明中将业务方法定位到数据库的流程图;
图4是本发明中一种访问数据库的实施例的具体流程图;
图5是本发明中一种访问数据库的装置的结构示意图。
具体实施方式
图2是本发明的一种访问数据库的方法的流程图。如图2所示,
步骤201,业务逻辑层根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;
步骤202,数据库访问层将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;
步骤203,如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图3是本发明中将业务方法定位到数据库的流程图,如图3所示,
业务逻辑层,根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库。
业务逻辑层是处理核心业务逻辑的地方,是业务逻辑方法的封装集合。其中业务逻辑层通过调用分库分表方法给业务方法添加事务注释,并根据所添加的注释判断该业务方法需要进行单库操作还是需要进行跨库操作;根据业务方法的方法名将该业务方法定位到所对应数据库的读数据库或写数据库;通过调用数据库访问层中的方法将所述操作定位到对应的一个或多个数据库的对应表中。
如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
数据库访问层,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。具体为数据库访问层根据业务方法中的分表逻辑,通过调用分库分表方法,将所述操作定位到对应的一个或多个数据库中的对应表中。
业务逻辑层中设定分库分表方法,该分库分表方法将分库方法和分表方法封装在一起。
在本发明的较佳实施例中,使用Spring和ibatis作为框架架构数据库。其中Spring的动态数据库能够实现多个数据库的灵活切换。业务逻辑层在接收到业务请求时,调用所述业务的业务方法,根据所述业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库。如果一次业务请求过程中只涉及对一个数据库中的操作,则使用单库事务管理器对所述业务方法进行操作;如果一次业务请求过程中涉及对两个或者两个以上的数据库的操作,并且在数据库访问过程中需要对一个以上的数据库进行访问写数据库的操作,则使用跨库事务管理器对所述业务方法进行操作,在上述实施例中使用jta作为跨库事务管理器,保证跨库事务操作的完整性;使用单库事务管理器提高对单库事务操作的效率。
图4是本发明中一个访问数据库的实施例的具体流程图。如图4所示,
步骤401,业务逻辑层接收业务处理请求。
步骤402,业务逻辑层接收到业务处理请求后,调用处理所述业务的业务方法,并根据所述业务方法的事务注释判断所述业务方法需要进行单库操作还是需要进行跨库操作;并调用数据库访问层的方法将所述业务方法定位到指定的数据库。并根据所述方法的方法名将判定当前业务方法需要访问读数据库还是写数据库。如果当前业务方法需要访问写数据库则运行步骤403,如果当前业务方法需要访问读数据库则运行步骤404
步骤403,数据库访问层获取当前业务方法需要对那个数据库进行操作,根据当前业务方法中的分表逻辑,调用业务逻辑层的分库分表方法,根据分库分表方法中的分表规则计算当前业务方法对应的分表信息,将当前业务方法的操作定位到所需要访问的数据的表中,对相应的表进行操作。
步骤404,定位到业务方法需要访问数据库的读数据库,读取相应的信息。
图5是本发明中一种访问数据库的装置的结构示意图。如图5所示,本发明还提供了一种访问数据库的装置,该装置包括业务逻辑层模块和数据库访问层模块,业务逻辑层模块501还包括单库事务管理器和跨库事务管理器;其中:
业务逻辑层模块501:用于根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;再将定位到的对应的一个或多个数据库的标识发送给数据库访问模块502。
数据库访问层模块502:根据业务逻辑层模块501发送的数据库标识,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中。
如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
在上述装置中,业务逻辑层模块501中包括分库分表方法,该分库分表方法将业务方法划分成需要进行单库操作的业务方法或者是需要进行跨库操作的业务方法;
业务逻辑层模块501通过调用分库分表方法给业务方法添加事务注释,并根据所添加的注释判断该业务方法需要进行单库操作还是需要进行跨库操作。
在上述装置中,业务逻辑层模块501通过调用数据库访问层模块中的方法,将所述业务方法定位到对应的一个或多个数据库。
在上述装置中,数据库访问层模块502,根据业务方法中的分表逻辑,通过调用分库分表方法,将所述操作定位到对应的一个或多个数据库中的对应表中。
在上述装置中,业务逻辑层模块501根据业务方法的方法名将所述业务方法定位到所对应数据库的读数据库或写数据库。
综上所述,本发明通过在业务逻辑层中将业务方法定位到需要访问的数据库;在数据库访问层中,将业务方法的操作定位到对应数据库的表中,改变了传统技术中的完全将定位到数据库操作和定位数据库中的表的操作封装在数据库访问层的方式所造成数据库访问层代码编写复杂的问题,提高了数据访问对象的复用率。本发明的方法提高了业务方法访问数据库的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种访问数据库的方法,其特征在于,该方法包括:
业务逻辑层包括业务逻辑方法的封装集合,其中设定分库分表方法,该分库分表方法将业务方法划分成需要进行单库操作的业务方法或者是需要进行跨库操作的业务方法;业务逻辑层通过调用分库分表方法给业务方法添加事务注释,根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;所述分库分表方法将分库方法和分表方法封装在一起;
数据库访问层根据业务方法中的分表逻辑,通过调用分库分表方法,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;
如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
2.根据权利要求1所述的方法,其特征在于,业务逻辑层根据判断结果将该业务方法定位到对应的一个或多个数据库包括:
业务逻辑层根据业务方法的方法名将该业务方法定位到所对应数据库的读数据库或写数据库。
3.根据权利要求1所述的方法,其特征在于,所述根据判断结果将该业务方法定位到对应的一个或多个数据库包括:业务逻辑层通过调用数据库访问层的方法,将所述业务方法定位到对应的一个或多个数据库。
4.一种访问数据库的装置,其特征在于,该装置包括:业务逻辑层模块和数据库访问层模块,业务逻辑层模块还包括单库事务管理器和跨库事务管理器;其中:
业务逻辑层模块,包括业务逻辑方法的封装集合,其中设定分库分表方法,该分库分表方法将业务方法划分成需要进行单库操作的业务方法或者是需要进行跨库操作的业务方法;用于通过调用分库分表方法给业务方法添加事务注释,根据业务方法的注释判断该业务方法需要进行单库操作还是需要进行跨库操作,并根据判断结果将该业务方法定位到对应的一个或多个数据库;再将定位到的对应的一个或多个数据库的标识发送给数据库访问模块;所述分库分表方法为将分库方法和分表方法封装在一起;
数据库访问层模块,根据业务方法中的分表逻辑,通过调用分库分表方法,根据业务逻辑层模块发送的数据库的标识,将所述业务方法的操作定位到该业务方法对应的一个或多个数据库的表中;
如果所述业务方法对应一个数据库时,由单库事务管理器进行单库操作;如果所述业务方法对应多个数据库时,由跨库事务管理器进行跨库操作。
5.根据权利要求4所述的装置,其特征在于,
业务逻辑层模块通过调用数据库访问层模块中的方法,将所述业务方法定位到对应的一个或多个数据库。
6.根据权利要求4所述的装置,其特征在于,
业务逻辑层模块根据业务方法的方法名将所述业务方法定位到所对应数据库的读数据库或写数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010617029.6A CN102567399B (zh) | 2010-12-31 | 2010-12-31 | 一种访问数据库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010617029.6A CN102567399B (zh) | 2010-12-31 | 2010-12-31 | 一种访问数据库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567399A CN102567399A (zh) | 2012-07-11 |
CN102567399B true CN102567399B (zh) | 2014-06-11 |
Family
ID=46412833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010617029.6A Active CN102567399B (zh) | 2010-12-31 | 2010-12-31 | 一种访问数据库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567399B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714097B (zh) * | 2012-10-09 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 一种访问数据库的方法和装置 |
CN103942209B (zh) * | 2013-01-18 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 数据处理方法 |
CN106294423A (zh) * | 2015-05-25 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 数据库分表的写入方法及装置 |
CN106940695B (zh) * | 2016-01-05 | 2020-06-26 | 阿里巴巴集团控股有限公司 | 数据源信息的校验方法及装置 |
CN105912678A (zh) * | 2016-04-13 | 2016-08-31 | 北京思特奇信息技术股份有限公司 | 一种数据存储方法、数据读取方法及其对应的系统 |
CN108572991A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 数据库处理方法、装置和存储介质 |
CN111858641A (zh) * | 2020-07-30 | 2020-10-30 | 中国工商银行股份有限公司 | 事务处理方法、装置、电子设备和可读存储介质 |
CN112765126B (zh) * | 2020-12-31 | 2024-07-16 | 金蝶软件(中国)有限公司 | 数据库事务的管理方法、装置、计算机设备和存储介质 |
CN114003644B (zh) * | 2021-10-21 | 2022-11-15 | 河南星环众志信息科技有限公司 | 分布式事务处理方法、设备、介质和数据库系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196926A (zh) * | 2007-12-29 | 2008-06-11 | 中国建设银行股份有限公司 | 一种数据库访问平台及其访问方法 |
CN101848245A (zh) * | 2010-02-05 | 2010-09-29 | 南京德讯信息系统有限公司 | 基于ssl/xml的数据库访问代理方法及系统 |
-
2010
- 2010-12-31 CN CN201010617029.6A patent/CN102567399B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196926A (zh) * | 2007-12-29 | 2008-06-11 | 中国建设银行股份有限公司 | 一种数据库访问平台及其访问方法 |
CN101848245A (zh) * | 2010-02-05 | 2010-09-29 | 南京德讯信息系统有限公司 | 基于ssl/xml的数据库访问代理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102567399A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567399B (zh) | 一种访问数据库的方法和装置 | |
US11134051B2 (en) | Apparatus and method for managing notification | |
CN103955364A (zh) | 一种适用于手机的前端组件方法 | |
JP2014502384A (ja) | スタイルシート用識別子 | |
EP3111392A1 (en) | Unified presentation of contextually connected information to improve user efficiency and interaction performance | |
CN105094707A (zh) | 一种数据存储、读取方法及装置 | |
CN102982130A (zh) | 一种nosql与rdbms的数据库同步方法和系统 | |
JP2007193537A (ja) | タグ情報管理プログラム、タグ情報管理方法およびタグ情報管理装置 | |
CN100465882C (zh) | 为全球应用创建文化敏感控件的方法和系统 | |
CN104111994A (zh) | 一种基于混合数据源的标签数据筛选方法及装置 | |
US20150052157A1 (en) | Data transfer content selection | |
CN102831069A (zh) | 内存处理方法、内存管理设备 | |
CN102054217A (zh) | 基于元模型的工具中的实体变形 | |
US8875060B2 (en) | Contextual gestures manager | |
CN101499070A (zh) | 基于开放数据库接口的历史和实时数据访问系统和方法 | |
CN110688145A (zh) | Android MVP代码自动生成方法、装置、介质、电子设备 | |
CN101174222A (zh) | 数据版本升级方法 | |
CN113190534A (zh) | 数据库数据迁移方法及装置 | |
CN112631751A (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN110502506B (zh) | 一种数据处理方法、装置、设备和存储介质 | |
CN102043620B (zh) | 一种船舶交通管理系统数据共享接口的设计方法 | |
CN101174204A (zh) | 数据版本升级的装置 | |
CN102799423A (zh) | Jsf中执行动态方法的方法及装置 | |
CN102540966A (zh) | 一种光刻机台的控制装置及方法 | |
CN102479072B (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. |