数据源是什么
数据源简单理解为数据源头,提供了应用程序所需要数据的位置。数据源保证了应用程序与目标数据之间交互的规范和协议,他可以是数据库,文件系统等等。数据与定义了位置信息,用户验证信息和交互时所需的一些特性配置,同时他封装了如何建立与数据源的连接,向外暴露获取连接的接口。应用程序连接数据库无需关注其底层是如何建立的,也就是说应用业务逻辑和连接数据库操作是松耦合的。
为什么要用数据源
数据源是提高数据库连接性能的常规手段,数据源会负责维持一个数据库连接池,当程序创建数据源实例时,系统会一次性的创建多个数据库连接,并把这些数据库连接保存在连接池中.当程序需要进行数据库访问时,无须重新获取数据库连接,而是从连接池中取出一个空闲的数据库连接。当程序使用数据库结束后,无需关闭数据库连接,而是将数据库连接归还给连接池即可。通过这种方式, 就可避免频繁的获取数据库连接、关闭数据库连接所导致的性能下降. 数据库连接池的技术原理:先创建一个pool,然后在池中初始化少量的连接对象,当程序获取连接对象时,用池中已有的对象,会快的对。等用户并发量上来了后,会增加连接数,直到最高连接数为止。
有哪些数据源可以用
目前常用的数据源主要有dbcp、c3p0、Proxool、Druid。 dbcp数据库连接池是apache上的一个java连接池项目,也是tomcat使用的连接池组件。单独使用dbcp需要3个包来进行数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动回收空闲连接的功能。 c3p0是一个开源的jdbc连接池,他实现了数据源和jndi绑定,支持jdbc3和jdbc2的标准扩展。c3p0是异步操作的,缓存的jdbc操作帮助进程完成。扩展这些操作可以有限的提升性能,目前使用他的开源项目有Hibernate、Spring等。c3p0有自动回收空闲连接的功能。 Proxool是一种Java数据库连接池技术,是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供一个健壮、易用,便于发现连接泄漏的情况 Druid是一个开源项目,该源码自带SQl监控、SQL防火墙、Web应用监控、Url监控、Session监控、Spring,而且使用起来很方便,只要在web.xml或Spring的配置文件中加以配置即可。
Druid数据源有哪些好处
Druid相对于其他数据库连接池有着强大的监控特性,通过监控特性可以清楚知道连接池和SQl的工作情况。其次,方便扩展并且集合了开源和商业数据库连接池的优秀特性,并且结合阿里巴巴大规模苛刻生产环境的使用经验进行优化。
|