chsboy
2009-07-22 09:02 阅读 332
已采纳

关于异构数据库的连接池?

我们通常讲的数据库连接池都是同一种数据库的连接比如连接同一个oracle的多个数据库连接到池里,现在有遇到有这样的需求,在一个web应用中有些表是要连接sqlite有些表是连接oracle的,具体连那个是根据读取配置文件来的,目前做法是因为数据库连接类型不是固定不变的,数据库连接时根据配置文件产生一个连接然后关闭一个连接。这种做法必然效率低下,可不可以在这种情况下用长连接或数据库连接池那。
[b]问题补充:[/b]
to pan_java:问题是我这个web界面还要求管理多库这样不是要配多个数据库连接池
[b]问题补充:[/b]
to pjun:你们这种方法为常不可,我现在是用spring管理多数据源,用户login进去后取出每个库里的一小部分数据放在主页面上,数据旁标上库名,用户点那个库就进入那库,一般有5到10库左右,因为设计到数据库连接的切换,所以先前就没用连接池,只是一个管理界面,没有很大用户数量。如何这样每个库都要配连接池,工作量很大的,也不太合理
[b]问题补充:[/b]
这样是不是搞复杂了
[b]问题补充:[/b]
to pjun:我现在新增一个库就要修改一个配置文件,如果在tomcat配置数据源的话,每加一个库就要配一个数据源有一点工作量,而且读取数据库时代码和数据源要绑在一起,部署人员还要配置tomcat数据源这又增加了部署难度
[b]问题补充:[/b]
to pjun:最后一点tomcat配置的数据源,spring可以管理吗?
[b]问题补充:[/b]
已经决定那,把oracle数据库连接和sqlite连接放在一个池里,或维持长连接,这下搞复杂那,要把不同数据库的连接放在数据库里,还要区分oracle和sqlite,有这种可能吗
[b]问题补充:[/b]
to pjun:我们这里的大拿也决定那,把oracle数据库连接和sqlite连接放在一个池里,或维持长连接,这下搞复杂那,要把不同数据库的连接放在连接池里,还要区分oracle和sqlite,有这种可能吗 ?
oracle数据库连接和sqlite连接放在一个池里这个应该可以实现的,不过从池里拿连接要判断一下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

14条回答 默认 最新

  • 已采纳
    pjuneye pjuneye 2009-07-22 13:45

    :D 第一次听说这样的用法,LZ做完了可以写篇Blog介绍经验. :idea:
    期待LZ的经验分析.

    点赞 评论 复制链接分享
  • fdsafds fdsafds 2009-07-22 09:09

    用二个连接池就是了,tomcat可以配制啊

    点赞 评论 复制链接分享
  • pjuneye pjuneye 2009-07-22 09:38

    我的结论和楼上一样,建立两个不同类型的链接池,一个池维护sqlite链接,另一个池维护Oracle链接. 程序里面判断用哪种链接就从那种连接池里面取链接来用就可以了.

    至于LZ补充的说要维护多库,还没能明白什么意思? 请LZ继续补充说明.

    点赞 评论 复制链接分享
  • fdsafds fdsafds 2009-07-22 09:48

    是啊,在程序通过在不同的jdni 去获取就是了

    点赞 评论 复制链接分享
  • li28544071 li28544071 2009-07-22 09:48

    首先你应该明确一点,web中一般连接池是由容器(如:Tomcat)来管理的。

    再你只需要判断(程序中)什么时候操作什么库什么表

    点赞 评论 复制链接分享
  • pjuneye pjuneye 2009-07-22 10:16

    Spring管理多个数据源,每个源配置个连接池不就可以了吗??
    貌似不需要设计代码的修改哦. :D

    点赞 评论 复制链接分享
  • fdsafds fdsafds 2009-07-22 10:36

    [color=red]这样是不是搞复杂了 [/color]

    实现多个连接池就可以,然后通过程序去确认.

    点赞 评论 复制链接分享
  • pjuneye pjuneye 2009-07-22 10:38

    没明白LZ说的复杂是那方面的?
    修改下配置,修改下获取连接的方式.其他都不用改的.貌似没有什么复杂,
    而且用上了连接池,性能有所提高不是LZ的目的吗? :D

    点赞 评论 复制链接分享
  • fdsafds fdsafds 2009-07-22 11:15

    [color=red]我现在新增一个库就要修改一个配置文件,如果在tomcat配置数据源的话,每加一个库就要配一个数据源有一点工作量,而且读取数据库时代码和数据源要绑在一起,部署人员还要配置tomcat数据源这又增加了部署难度 [/color]

    这是没有办法的.因为对于你的这种需求.只能这样去做.

    点赞 评论 复制链接分享
  • fdsafds fdsafds 2009-07-22 11:19

    tomcat 增加相关 配制

    加入读取程序(所有的程序都是一样的,你可以写一个抽象类.)只是相关JNDI名不同而已.

    点赞 评论 复制链接分享
  • pjuneye pjuneye 2009-07-22 11:26

    事情总是要平衡的,得到就得付出. LZ想要用连接池改善性能又不愿意承担链接池带来的额外工作.这个有点难,不过想法是好的.人总是在不断的不满足中进步的.
    一个额外的建议. LZ不像每次都人部署人员来手动做上述工作的话,那就写个小工具,自动生成配置文件放到指定目录下,设置好了各个重启Tomcat的操作,就一切OK了. 反正配置文件就是XML的,格式又固定,搞起来不难. 这样的话,方便了部署,LZ就要多受累了哦. 还是哪句话,事情总是平衡的 . :D

    点赞 评论 复制链接分享
  • li28544071 li28544071 2009-07-22 11:41

    [quote]
    to pjun:最后一点tomcat配置的数据源,spring可以管理吗?
    [/quote]

    连接池可以分为Container和application两个中管理模式

    点赞 评论 复制链接分享
  • pjuneye pjuneye 2009-07-22 12:14

    承楼上所述,Tomcat管理的数据库连接池属于Container的范畴,貌似是不能用Spring来管理.LZ可以考虑把数据库连接池设置到应用程序中来.Spring管理这个是没什么问题的.

    [code="xml"]
    <!-- 数据源配置,使用应用服务器的数据库连接池 -->


    [/code]

    上面这段从下面借来的,LZ可参考.
    [quote]在SpringSide 3 中使用多个数据库的方法
    http://www.blogjava.net/youxia/archive/2009/07/15/286916.html[/quote]

    希望有用! :D

    点赞 评论 复制链接分享
  • pjuneye pjuneye 2009-07-22 13:13

    [quote]已经决定那,把oracle数据库连接和sqlite连接放在一个池里,或维持长连接,[/quote]
    这个要怎么能实现? 请LZ给出相关说明.

    [quote][color=red]要把不同数据库的连接放在数据库里[/color],还要区分oracle和sqlite,有这种可能吗[/quote]
    这个是LZ的笔误,还是LZ的新想法??

    有些没能太明白,请LZ补充说明下.

    点赞 评论 复制链接分享

相关推荐