首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库连接池数据结构

数据库连接池数据结构
EN

Stack Overflow用户
提问于 2009-05-27 10:04:27
回答 6查看 4.2K关注 0票数 5

我想开发数据库连接池。

有人能告诉我需要使用哪种数据结构来维护池吗?

EN

回答 6

Stack Overflow用户

发布于 2009-05-27 11:31:07

它应该使用对象池设计模式来实现。您可以在Kircher, Michael; Prashant Jain; (2002-07-04). "Pooling Pattern". EuroPLoP 2002. Retrieved on 2007-06-09.Object Pool Design Pattern中阅读有关它的信息。ObjectPoolJDBCConnectionPool类的Java实现可以在here中找到。

对象池通常是一个单例,其中包含两个对象集合(例如数据库连接)

  1. unlocked -用于自由对象,可由request
  2. locked提供给客户端-用于锁定对象,现在正在使用

此集合可以实现为ListsHashTables或其他形式,具体取决于您的需求。对于简单的LinkedList - ObjectPool结构就足够好了。

票数 10
EN

Stack Overflow用户

发布于 2009-05-27 10:56:43

参见http://www.javaworld.com/jw-06-1998/jw-06-object-pool.html。祝好运!

票数 3
EN

Stack Overflow用户

发布于 2009-05-27 12:33:14

您通常需要:

  • 围绕“原始”连接对象的某种包装器,用于管理诸如上次发出连接的时间、诊断信息,可能还包括为该连接准备的语句的缓存等--您可以将其定义为包括所需的内容
  • 将连接包装器放入支持并发添加/删除的集合中--任何正确同步的列表都可以,但是ConcurrentLinkedQueue将是一个合理的选择
  • 一种管理池中分配的方法--请考虑使用Semaphore ConcurrentLinkedQueue将不同的池组合成某个“池管理类”(例如,您只需调用"getConnection(databaseName,readOnly)“,它就会转到相关的池)

在此基础上,您可以构建所需的任何日志记录/监视。

还有一些人主张使用现成的连接池框架。我知道有些人不同意,但我个人不会走这条路--连接池(a)真的不难写,(b)构成您系统的关键部分,您可能需要理解和定制它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/914930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档