2022年数据库连接池设计文档参考 .pdf
《2022年数据库连接池设计文档参考 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库连接池设计文档参考 .pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京交通大学数据库连接池设计文档程序设计模式王子硕韩振宇秦占明2012/4/7 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 20 页 -数据库连接池设计文档1/19目录1.人员分工.22.系统概述.32.1.数据库连接池技术的基本原理.32.2.数据库连接池技术中的基本管理策略.33.系统设计.63.1.加载驱动与配置文件.83.2.建立数据库连接池.83.3.获取和释放数据库连接.93.4.管理数据库连接池.94.使用设计模式的系统实现.10 4.1.单例模式.10 4.2.简单工厂模式和工厂方法模式.12 4.3.命令模式.13 4.4.代理模式.15 4.5.外观模式.
2、17 5.程序测试.19 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 20 页 -数据库连接池设计文档2/191.人员分工韩振宇:整体系统设计。确定该连接池将使用外观模式,单例模式,代理模式,命令模式,工厂方法模式五种实际模式。并搭建连接池整体框架。外观模式和单例模式的实现,体现在PoolGenerator.java 中。代理模式的实现,即MyConnection.java 的实现。王子硕:命令模式的实现,即包com.bjtu.Commands 中类的具体实现。监控线程 ListenerThread.java 和测试用例mainFrame.java 代码的编写。秦占明:工厂方
3、法模式的实现,即包com.bjtu.Pool中的类DBFactory.java,AccessFactory.java,MySQLFactory.java,Pool.java,MySQLPool.java,AccessPool.java 的具体实现。properties 文件内容的设计,编写PoolConfig.java。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -数据库连接池设计文档3/192.系统概述2.1.数据库连接池技术的基本原理数据库连接池的基本思想就是预先建立一些数据库连接,放置在一个资源池对象中以备使用。当应用中需要建立数据库连接时,只需从该资源池中取
4、一个来用而不用重新建一个连接。使用完毕后,只需将此连接放回到资源池中即可,而不用真正地断开连接。数据库连接的建立和断开都有资源池自身来管理,这个资源池就是数据库连接池。资源池是一个普遍的概念,和缓冲存储机制有相近的地方,都是缩减了访问的环节,但它更注重于资源的共享。数据库连接池技术就是应用资源池的思想来解决数据库连接问题的。2.2.数据库连接池技术中的基本管理策略数据库连接池技术中的基本管理策略包括建立策略、分配策略、释放策略、监控策略和配置策略。2.2.1.建立策略数据库连接池技术的建立策略一般为在初始化时建立连接池,并在连接池中预先生成一定数量的连接以备用,并启动数掘库连接池的监控器。建立
5、连接池建立连接池的时机有种:一种是饿汉式建立,另一种是懒汉式建立。饿汉式建立是指在应用或服务启动时就建立连接池,并预先生成一定数量的连接。懒汉式建立是指在应用或服务中在第一次用到连接池时才建立连接池。从资源利用效率角度来讲,饿汉式建立比懒汉式建立稍差些。从速度和反应时间角度来讲,饿汉式建立比懒汉式建立稍好些。为便于控制和管理,要对建立的连接池的实体个数进行控制。典型的做法是只建立和维护一个连接池的实体,并由数据库连接池管理部件进行控制和管理。预建立连接连接池建立后,为提高速度和反应时间,一般会预先建立一定数量连接放入到连接池中。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 20
6、 页 -数据库连接池设计文档4/19这样,当有请求数据库连接时,可迅速返回可用的数据库连接预先建立的连接数根据具体情况来进行设置。当数据库访问较少或数据库资源较为紧张时,预先建立的连接数应设置小一些;当数据库访问较多且数据库资源较宽松时,预先建立的连接数应设置大一些。启动监控器完成连接池建立并预建立一定数量的连接之后,应启动数据库连接池的监控器,使连接池处于预先设置的监控策略的监控之下,以保证连接池有效地运行。2.2.2.分配策略数据库连接池技术的分配策略一般为先从预先建立的连接中查找空闲连接,如无空闲连接且连接未达最大值则新建立一个连接,否则等待直到有可用连接为止连接池中预先建立的连接按是否
7、已被分配分别放到空闲聚集或占用聚集中。已分配未释放的连接放到占用聚集中,新建立或被释放的连接的放到空闲聚集中。分配策略的一般算法:(1)检查空闲聚集中是否有空闲连接,如有则将其从空闲聚集移到占用聚集并返回。否则执行下一条。(2)检查预先建立的连接数是否达到允许的最大值,如果没有达到,则新建立一个连接,放到占用聚集并返回。否则执行下一条。(3)等待直到收到有连接释放的通知,然后从(1)可始执行。2.2.3.释放策略数据库连接池技术的释放策略一般为将被释放的连接从占用聚集移到空闲聚集中,并向正在等待空闲连接的请求者发出有连接释放的通知。在释放连接前,可以加入一些特定的处理,以使被释放的连接在被放入
8、空闲聚集之前被加工清理。1.2.4.监控策略数据库连接池技术的监控策略一般为触发检查、进行连接清理、保证最小连接数。监控策略。监控策略对连接池中的连接进行检查,对于过期、引用次数过多、连接中断的连接进名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 20 页 -数据库连接池设计文档5/19行清理,保证连接池中的连接的数量和质量。触发检查数据库连接池技术的监控触发检查方式般有以下几种:定时触发:每隔固定的时间间隔对连接池中的连接进行检查。这个固定的时间间隔一般通过配置文件来定义。即时触发:提供外部接口,由外部管理程序来不定时地触发对连接池的检查或报告当前的连接池状态。变化触发:当分配
9、、释放或使用连接池中的连接时触发对连接的检查。进行连接清理是指根据一定的要求将检查连接池中的连接,将不符合要求的连接从池中清理出去。进行连接清理的一般算法如下:(1)遍历连接池中的每一个连接,对于每个连接执行步骤(2)。(2)判断连接是否有效,如果无效则清除连接,然后转到步骤(6)。(3)判断连接是否空闲,如果不空闲则转到步骤(7)。(4)判断连接是否超出最大空闲时间,如果是转到步骤(8)。(5)判断连接是否超出最大引用次数,如果是转到步骤(8)。(6)如果还有未检查连接,则转到步骤(2),否则结束。(7)判断是否超出连接最大使用时间,如果超出转到步骤(8);否则转到步骤(6)(8)释放连接及
10、其占用的资源,并从池中清除此连接,然后转步骤(6)。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -数据库连接池设计文档6/193.系统设计该系统设计应具备以下特点:易于使用:对于原先使用JDBC连接的客户端不需要对原程序进行任何改动即可应用。其使用方式同使用JDBC的方式一样,客户端不需要了解该产品的任何内部细节。可扩展性强:支持多个不同的数据库,可满足客户端对多个不同的数据库的访问需求。运行效率高:通过调整管理策略,可以使其能在占用较少系统资源的情况下满足客户端对数据库连接的需求。易于维护:对数据库连接池的建立、使用、管理等活动中可变性进行封装,当对可变性进行修改
11、时,只需要修改,部分模块,使得系统易于维护复用性强:在数据库连接池基础上抽象出资源池,可复用资源池使之能支持其他的系统资源,如服务池、线程池等。用户加载驱动获取连接释放链接使用连接监控数据库连接池*数据库连接池系统的的用例图名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 20 页 -数据库连接池设计文档7/19系统类设计图名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 20 页 -数据库连接池设计文档8/193.1.加载驱动与配置文件由于对于每个数据库连接池发生器都要求有唯一实例,所以在得到数据库连接池产生器PoolGenerater 时要求使用单例模式。在此我们设
12、计了一个PoolConfig 类读入并存储在properties 内的配置信息。由 PoolGenerater 维护一个 PoolConfig 的实例,PoolGenerater 提供了从读取properties 文件,并对 PoolConfig 进行初始化的方法readConfig(),由于PoolGenerater 控制配置文件的读取(readConfig 方法),连接池的生成(createPool 方法),数据库驱动的加载(loadDriver 方法)等过程,因此也可视为外观模式(Fa?ade)。这里一旦调用createPool 方法,就会启动一个监控线程 ListenerThread,
13、用于对连接池进行定期检查。Properties 文件设计:dbName 数据库名称dbDriver 数据库驱动connectionURL 连接 URL dbUserName 用户名dbPassword 密码maxConnection 最大连接数minConnection 最小连接数longestUsedTime 连接最长使用时间longestFreeTime 连接最长空闲时间maxReferedTime 连接最大引用次数monitorTime 检测连接池间隔时间3.2.建立数据库连接池用了工厂方法模式:在包 com.bjtu.Pool 中:Pool 是抽象产品类,MySQLPool/Acces
14、sPool是具体产品。DBFactory 是抽象工厂,MySQLPool/AccessFactory是具体工厂。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 20 页 -数据库连接池设计文档9/19工厂类根据读入属性内的字符串利用反射机制,生成相应的数据库管理类工厂,工厂再产生工厂管理类的实例。一旦连接池实例化成功,便需要预建立一些连接,预建立连接的数量在此我们去配置文件中的最大连接数与最小连接数的平均值。我们这里主要实现了MySQLPool,而这些工作都在MySQLPool的构造函数中完成。3.3.获取和释放数据库连接本系统对数据库用户实际使用透明,所以当用户请求一个连接时,
15、本数据库应当从池中返回一个实现了Java.sql.Connect 接口的连接。当用户释放连接时,并不真正释放链接,而是把这个连接放回连接池当中。这就需要使用代理模式。MyConnection实 现 了java.sql.Connect接 口,并 且 内 部 保 存 了 一 个 指 向 实 现 了java.sql.Connect 的引用。这样一来需要使用Connection 时,可以用MyConnection 代替,这就实现了静态代理模式。在这个连接池的实现中,我们只需要重写Connection 原有的 close方法,就可以达到目的。3.4.管理数据库连接池对于数据库连接池进行的操作部分采用了命
16、令模式,其中 Command 为抽象命令;New2BusyCommand/CloseCommand/New2FreeCommand/CreateCommand/OccupyCommand/DeleteCommand 为具体命令类,具体功能后面会进行详细解释;ComOperator 为调用者(Invoker);Pool 为接收者(Receiver)。对于监视数据库连接池,应采用观察者模式,当数据库连接池发生改变时,通知已注册的观察者(监视者)进行一些上述要求的特定操作(如清理连接,重启连接等)。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 20 页 -数据库连接池设计文档10/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据库连接池设计文档参考 2022 数据库连接 设计 文档 参考
限制150内