CN104915412B - 一种动态管理数据库连接的方法及系统 - Google Patents
一种动态管理数据库连接的方法及系统 Download PDFInfo
- Publication number
- CN104915412B CN104915412B CN201510303400.4A CN201510303400A CN104915412B CN 104915412 B CN104915412 B CN 104915412B CN 201510303400 A CN201510303400 A CN 201510303400A CN 104915412 B CN104915412 B CN 104915412B
- Authority
- CN
- China
- Prior art keywords
- connection
- database
- connecting quantity
- connection pool
- target management
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种动态管理数据库连接的方法及系统,方法包括:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。本发明采用对象管理容器管理数据库连接对象,实现了统一的数据库连接功能管理。
Description
技术领域
本发明涉及数据库相关技术领域,特别是一种动态管理数据库连接的方法及系统。
背景技术
目前基于大数据技术的Nosql数据库以其优良的访问性能和并发能力成为服务平台储存数据的首选。
Nosql数据库技术,主要包括Hbase分布式数据库、Hive、MongoDB、Cassandra、ElasticSearch(全文检索数据库以下称为ES)等。
而作为连接管理的开源技术,DBCP为一款目前性能极高的JDBC连接池),Commons-pool是一款Apache开源的对象池),Spring则是Java生命周期管理,每一个对象通过beanId进行唯一标识。
对于传统数据库,Spring等第三方框架提供了很好的连接池方式,方便开发人员进行数据库管理及交互操作。
而对于新兴的Nosql数据库并没有一个优良的第三方框架进行支撑,所以都是通过编程人员进行硬编码来与Nosql数据库进行交互操作。
在搭建基于Nosql数据库基础上的服务平台时,不可避免的需要与各种Nosql数据库进行连接操作,如打开连接,关闭连接,只有建立了连接才可以进行数据操作,如,插入数据,获取数据,更改数据,删除数据等,对于面向对象编程而言,创建连接,关闭连接这些重复的代码开发会增加人力成本,有时候有可能还会忘记关闭连接,造成IO占用;也可能因为不同程序员对于Nosql数据库本身理解和自身遍码能力的差异,影响业务的性能,加大系统的复杂度,对于系统升级和交付代码都提供了极大的难度;而且,如果每次对Nosql数据库进行增删改查都需要打开关闭连接,这是一种资源的浪费。
现有对Nosql数据库的操作如下(以HBase为例):
1.实例化Configuration(Hbase配置)对象configuration,实例化该对象需要设置Hbase相关连接参数(本例为预制,真实程序员在编程时候,会使用读取配置文件的方式获取配置);
2.实例化一个HTablePool(Hbase连接池)对象pool,实例化该对象需要第一步的configuration对象;
3.业务调用QueryAll方法使用上一步pool对象获取一个Htable连接对象来查询Hbase表所有数据方法;
现有技术方案存在如下缺点:数据库一经创建无法动态调整参数,必须重启,重新加载参数。
发明内容
基于此,有必要针对现有技术数据库一经创建无法动态调整参数的技术问题,提供一种动态管理数据库连接的方法及系统。
一种动态管理数据库连接的方法,包括:
连接参数初始化步骤,包括:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;
初始化步骤,包括:对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;
连接使用步骤,包括:从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
一种动态管理数据库连接的系统,包括:
连接参数初始化模块,用于:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;
初始化模块,用于:对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;
连接使用模块,用于:从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
本发明采用对象管理容器管理数据库连接对象,实现了统一的数据库连接功能管理。
附图说明
图1为本发明一种动态管理数据库连接的方法的工作流程图;
图2为本发明一种动态管理数据库连接的系统的结构模块图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
如图1所示为本发明一种动态管理数据库连接的方法的工作流程图,包括:
步骤S101,包括:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;
步骤S102,包括:对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;
步骤S103,包括:从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
本发明采用对象管理容器管理数据库连接对象,实现了统一的数据库连接功能管理。
其中,对象管理容器优选为Java的Spring容器,而实例标识为Spring的BeanID。数据库优选为Nosql数据库。
在其中一个实施例中,还包括:
更新步骤,包括:当连接参数发生改变时,对改变后的连接参数调用连接池代码进行初始化得到新数据库连接对象,在对象管理容器中将连接参数原来关联的实例标识所关联的数据库连接对象更新为新数据库连接对象。
因为数据库连接对象都由对象管理容器进行生命周期管理,因此,当连接参数发生变化,本实施例可以通过程序动态调整。
在其中一个实施例中:
所述步骤S102,具体包括:
对每组连接参数调用初始化代码进行初始化得到包括多个数据库连接对象的连接池对象,将连接池对象加入对象管理容器中,并将连接池对象与连接参数所关联的实例标识进行关联;
所述步骤S103,具体包括:
从对象管理容器中获取一个连接池对象作为当前数据库连接池对象,从当前连接池对象中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
本实施例通过连接池对象管理多个数据库连接对象,并通过对象管理容器管理连接池对象。其中的初始化代码对同一组连接参数连续创建多个数据库连接对象,并将多个数据库连接对象组合为一个连接池对象。
在其中一个实施例中,还包括:
更新步骤,包括:当连接参数发生改变时,对改变后的连接参数调用初始化代码进行初始化得到包括多个新数据库连接对象的新连接池对象,在对象管理容器中将连接参数原来关联的实例标识所关联的连接池对象更新为新连接池对象。
优选地,所述连接参数通过读取配置文件获取。
本发明最佳实施例,具体如下:
创建Nosql连接池需要Nosql数据库的连接参数及了解Nosql数据库特性,根据特性的不同,选择不同的Nosql连接池。
获取Nosql数据库的连接参数可以通过读取配置文件等方式获取。将连接参数保存到关系型数据库“数据源信息表”中,之所以保存到关系型数据库,主要是为了下面创建及修改Nosql连接池方便读取读取配置信息,具体例子见表1:
表1数据源信息表结构:
英文名 | 中文名 | 类型 | 注释 |
id | 唯一标示 | int | 主键,唯一索引 |
type | 类型 | int | 0hbase 1hive 2es |
beanid | 实例ID | varchar(64) | spring bean id |
params | 参数 | text | 连接参数 |
create_user | 创建人 | varchar(32) | |
create_time | 创建时间 | datetime | |
status | 状态 | int | 0草稿1正常2下线 |
本实施例支持三种Nosql连接池,第一种,Nosql数据库API自带连接池对象类,创建该连接池对象,并将对象交给Spring进行生命周期管理,第二种,Nosql数据库API自带(或者自主开发)JDBC的连接类,使用DBCP创建连接池。并将连接池交由Spring管理,第三种,Nosql数据库API自带连接类(非连接池),编写继承AVA对象池commons-pool包的KeyedPoolableObjectFactory对象池实现类代码,实现其makeObject和destroyObject方法,makeObject方法用于根据上述连接参数创建连接对象,destroyObject用于关闭连接,这两个方法都是commons-pool连接池自行根据使用情况调用的,当连接池连接对象不足时调用makeObject方法,当有连接长时间未用回收时调用destroyObject方法,然后将KeyedPoolableObjectFactory对象交由Spring管理其生命周期。
因为连接池对象都由Spring进行生命周期管理,因此,当Nosql连接参数发生变化,我们可以通过程序动态调整Nosql连接池属性。
如图2所示为本发明一种动态管理数据库连接的系统的结构模块图,包括:
连接参数初始化模块201,用于:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;
初始化模块202,用于:对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;
连接使用模块203,用于:从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
在其中一个实施例中,还包括:
更新模块,用于:当连接参数发生改变时,对改变后的连接参数调用连接池代码进行初始化得到新数据库连接对象,在对象管理容器中将连接参数原来关联的实例标识所关联的数据库连接对象更新为新数据库连接对象。
在其中一个实施例中:
所述初始化模块,具体用于:
对每组连接参数调用初始化代码进行初始化得到包括多个数据库连接对象的连接池对象,将连接池对象加入对象管理容器中,并将连接池对象与连接参数所关联的实例标识进行关联;
所述连接使用模块,具体用于:
从对象管理容器中获取一个连接池对象作为当前数据库连接池对象,从当前连接池对象中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
在其中一个实施例中,还包括:
更新模块,用于:当连接参数发生改变时,对改变后的连接参数调用初始化代码进行初始化得到包括多个新数据库连接对象的新连接池对象,在对象管理容器中将连接参数原来关联的实例标识所关联的连接池对象更新为新连接池对象。
在其中一个实施例中,所述连接参数通过读取配置文件获取。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种动态管理数据库连接的方法,其特征在于,包括:
连接参数初始化步骤,包括:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;
初始化步骤,包括:对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;
连接使用步骤,包括:从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接;
所述初始化步骤,具体包括:对每组连接参数调用初始化代码进行初始化得到包括多个数据库连接对象的连接池对象,将连接池对象加入对象管理容器中,并将连接池对象与连接参数所关联的实例标识进行关联,所述初始化代码对同一组连接参数连续创建多个数据库连接对象,并将多个数据库连接对象组合为一个连接池对象。
2.根据权利要求1的动态管理数据库连接的方法,其特征在于,还包括:
更新步骤,包括:当连接参数发生改变时,对改变后的连接参数调用连接池代码进行初始化得到新数据库连接对象,在对象管理容器中将连接参数原来关联的实例标识所关联的数据库连接对象更新为新数据库连接对象。
3.根据权利要求1所述的动态管理数据库连接的方法,其特征在于:
所述初始化步骤,具体包括:
对每组连接参数调用初始化代码进行初始化得到包括多个数据库连接对象的连接池对象,将连接池对象加入对象管理容器中,并将连接池对象与连接参数所关联的实例标识进行关联;
所述连接使用步骤,具体包括:
从对象管理容器中获取一个连接池对象作为当前数据库连接池对象,从当前连接池对象中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
4.根据权利要求3所述的动态管理数据库连接的方法,其特征在于,还包括:
更新步骤,包括:当连接参数发生改变时,对改变后的连接参数调用初始化代码进行初始化得到包括多个新数据库连接对象的新连接池对象,在对象管理容器中将连接参数原来关联的实例标识所关联的连接池对象更新为新连接池对象。
5.根据权利要求1所述的动态管理数据库连接的方法,其特征在于,所述连接参数通过读取配置文件获取。
6.一种动态管理数据库连接的系统,其特征在于,包括:
连接参数初始化模块,用于:获取至少一组数据库的连接参数,并将每组连接参数与一个由对象管理容器所提供的唯一的实例标识关联;
初始化模块,用于:对每组连接参数调用初始化代码进行初始化得到数据库连接对象,将数据库连接对象加入对象管理容器中,并将与连接参数所关联的实例标识进行关联;
连接使用模块,用于:从对象管理容器中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接;
所述初始化模块,具体包括:对每组连接参数调用初始化代码进行初始化得到包括多个数据库连接对象的连接池对象,将连接池对象加入对象管理容器中,并将连接池对象与连接参数所关联的实例标识进行关联,所述初始化代码对同一组连接参数连续创建多个数据库连接对象,并将多个数据库连接对象组合为一个连接池对象。
7.根据权利要求6的动态管理数据库连接的系统,其特征在于,还包括:
更新模块,用于:当连接参数发生改变时,对改变后的连接参数调用连接池代码进行初始化得到新数据库连接对象,在对象管理容器中将连接参数原来关联的实例标识所关联的数据库连接对象更新为新数据库连接对象。
8.根据权利要求6所述的动态管理数据库连接的系统,其特征在于:
所述初始化模块,具体用于:
对每组连接参数调用初始化代码进行初始化得到包括多个数据库连接对象的连接池对象,将连接池对象加入对象管理容器中,并将连接池对象与连接参数所关联的实例标识进行关联;
所述连接使用模块,具体用于:
从对象管理容器中获取一个连接池对象作为当前数据库连接池对象,从当前连接池对象中获取一个数据库连接对象作为当前数据库连接对象,使用当前数据库连接对象进行数据库连接。
9.根据权利要求8所述的动态管理数据库连接的系统,其特征在于,还包括:
更新模块,用于:当连接参数发生改变时,对改变后的连接参数调用初始化代码进行初始化得到包括多个新数据库连接对象的新连接池对象,在对象管理容器中将连接参数原来关联的实例标识所关联的连接池对象更新为新连接池对象。
10.根据权利要求6所述的动态管理数据库连接的系统,其特征在于,所述连接参数通过读取配置文件获取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510303400.4A CN104915412B (zh) | 2015-06-05 | 2015-06-05 | 一种动态管理数据库连接的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510303400.4A CN104915412B (zh) | 2015-06-05 | 2015-06-05 | 一种动态管理数据库连接的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104915412A CN104915412A (zh) | 2015-09-16 |
CN104915412B true CN104915412B (zh) | 2018-07-03 |
Family
ID=54084475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510303400.4A Active CN104915412B (zh) | 2015-06-05 | 2015-06-05 | 一种动态管理数据库连接的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915412B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105938487A (zh) * | 2016-04-14 | 2016-09-14 | 北京思特奇信息技术股份有限公司 | 一种基于Hbase连接池的使用方法和装置 |
CN106294741B (zh) * | 2016-08-10 | 2019-09-10 | 深圳市彬讯科技有限公司 | 一种自动化数据查询同步存储系统 |
CN107729016B (zh) * | 2017-09-22 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于docker的rpm包编译方法和系统 |
CN108920722B (zh) * | 2018-08-01 | 2021-03-19 | 苏州浪潮智能科技有限公司 | 一种参数配置的方法、装置及计算机存储介质 |
CN110502560A (zh) * | 2019-08-13 | 2019-11-26 | 威富通科技有限公司 | 一种数据库连接参数封装的方法及服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567301A (zh) * | 2003-06-23 | 2005-01-19 | 华为技术有限公司 | 访问数据库的方法及装置 |
CN1815469A (zh) * | 2005-02-01 | 2006-08-09 | 华为技术有限公司 | 一种数据库连接资源的管理方法 |
CN101408899A (zh) * | 2008-11-21 | 2009-04-15 | 北京中企开源信息技术有限公司 | 一种网站多数据源切换方法和装置 |
CN102713848A (zh) * | 2009-11-25 | 2012-10-03 | 弗雷姆霍克公司 | 用于使用轻量级客户端通过网络来与虚拟化计算服务对接的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
AU1115001A (en) * | 1999-10-22 | 2001-05-08 | Activesky, Inc. | An object oriented video system |
-
2015
- 2015-06-05 CN CN201510303400.4A patent/CN104915412B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567301A (zh) * | 2003-06-23 | 2005-01-19 | 华为技术有限公司 | 访问数据库的方法及装置 |
CN1815469A (zh) * | 2005-02-01 | 2006-08-09 | 华为技术有限公司 | 一种数据库连接资源的管理方法 |
CN101408899A (zh) * | 2008-11-21 | 2009-04-15 | 北京中企开源信息技术有限公司 | 一种网站多数据源切换方法和装置 |
CN102713848A (zh) * | 2009-11-25 | 2012-10-03 | 弗雷姆霍克公司 | 用于使用轻量级客户端通过网络来与虚拟化计算服务对接的方法 |
Non-Patent Citations (1)
Title |
---|
一种数据库连接池的动态控制策略;王国亮;《重庆邮电大学学报(自然科学版)》;20070831;第19卷(第4期);1-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN104915412A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104915412B (zh) | 一种动态管理数据库连接的方法及系统 | |
CN102254029B (zh) | 一种基于视图的数据访问系统及其方法 | |
CN110443010A (zh) | 一种在信息系统中权限可视化配置控制方法、装置、终端及存储介质 | |
CN100495422C (zh) | 业务操作权限控制方法 | |
US6704744B1 (en) | Method and apparatus for mapping objects to multiple tables of a database | |
CN1949763B (zh) | 共享信息服务器系统 | |
Paasch et al. | Further modelling of LADM's rights, restrictions and responsibilities (RRRs) | |
CN104537488A (zh) | 企业级信息系统功能权限统一管理方法 | |
CN102882715B (zh) | 一种权限管理系统 | |
US6564201B1 (en) | Expert designer system virtual plug-in interface | |
Yuan | Modelling semantical 1, spatial and temporal information in a GIS | |
CN106503217A (zh) | 基于业务驱动的数据交互装置及方法 | |
CN109544423A (zh) | 资产管理方法、装置及计算机可读存储介质 | |
CN113407626B (zh) | 一种基于区块链的规划管控方法、存储介质及终端设备 | |
CN106778310A (zh) | 一种数据管理方法和系统 | |
CN101957774B (zh) | 业务操作建模方法和装置 | |
CN106529323A (zh) | 一种多级安全模型访问控制数据融合方法 | |
CN105913197A (zh) | 基于业务数据规则执行的工作流方法 | |
CN109542432A (zh) | 风控规则编辑方法及终端设备 | |
Gerrard et al. | Selecting conservation reserves using species‐covering models: Adapting the ARC/INFO GIS | |
CN105225030A (zh) | 一种基于数据-活动的业务流程模型转换方法 | |
CN106940765A (zh) | 一种访问权限动态控制方法 | |
CN106657282A (zh) | 一种换流站设备运行状态信息的集成方法及装置 | |
CN111142882A (zh) | 一种用于大型微服务部署的服务附加依赖管理方法 | |
CN103824158B (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 |