Druid是什么
2015-06-04 18:47
741 查看
Druid是什么?
Druid是一个JDBC组件,它包括四个部分:DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
DruidDataSource 高效可管理的数据库连接池。
SQLParser
扩展组件
Binary: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2.jar
Source: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2-sources.jar
Druid可以做什么?
可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
DruidDriver,是一个ProxyJdbcDriver,它提供了Filter-Chain模式的扩展机制,使得在Jdbc扩展编程特别方便。
Druid提供了一些内置的扩展机制,包括Stat、Log、Trace、HA等扩展。
DruidDataSource是一个数据库连接池的实现,它的设计目标是提供一个当前最好的数据库连接池,在性能、扩展性等方面取得最合适的平衡,取代DBCP、C3P0等连接池。
高性能。测试数据表明,Druid比DBCP、C3P0、BoneCP的性能都好很多。具体请看测试数据
可管理性,DruidDataSource本身提供了很多监控属性,具体看这里。DruidDataSource支持StatFilter,具体配置看 这里
可扩展性,提供基于Filter-Chain模式的扩展机制。具体自定义扩展的例子看这里。
替换DBCP,配置和DBCP兼容,可以方便替换DBCP。
适合大规模应用。结合Alibaba使用数据库连接池的经验,避免一些已知问题,例如数据库不可用恢复之后产生的连接风暴问题等。
设计
这是DruidDataSource的设计图示:http://code.alibabatech.com/svn/druid/trunk/doc/druid-pool.txt
如果发现有乱码,请选择utf-8的编码方式查看。
Druid提供一个手工编写的高性能的方便扩展的SQL Parser。将会支持MySQL、Oracle等流行关系数据库的SQL Parser。
Parser组件包括如下几个部分:
Lexer 词法解析
Parser,Parser包括ExprParser,各种StatementParser。
AST, Abstract Syntax Tree。ParserParse出来的结果就是AST。
Visitor。对AST做各种处理,比如FormatOutput,遍历等等。
简介
Druid提供了强大的监控功能,能够监控连接池行为和SQL执行情况,让你能够详细了解应用的数据库访问行为。
监控对象
Druid的统计信息定义代码实现在com/alibaba/druid/stat下。所有的Stat都全局静态变量的方式保存,这样做使得外部获取监控信息更容易。获取Druid监控信息的入口是com.alibaba.druid.stat.JdbcStatManager
Druid的监控统计信息都是通过StatFilter来实现的,如果你需要数据源进行监控,那你需要启用StatFilter
Subversion
http://code.alibabatech.com/svn/druid/trunk/
Download
Binary: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2.jarSource: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2-sources.jar
Maven
Alibaba Open Source Repository
<repositories> <repository> <id>alibaba-opensource</id> <name>alibaba-opensource</name> <url>http:<span class="code-comment" style="color: rgb(128, 128, 128); background-color: inherit;">//code.alibabatech.com/mvn/releases/</url> </span> <layout><span class="code-keyword" style="color: rgb(0, 0, 145); background-color: inherit;">default</span></layout> </repository> <repository> <id>alibaba-opensource-snapshot</id> <name>alibaba-opensource-snapshot</name> <url>http:<span class="code-comment" style="color: rgb(128, 128, 128); background-color: inherit;">//code.alibabatech.com/mvn/snapshots/</url> </span> <layout><span class="code-keyword" style="color: rgb(0, 0, 145); background-color: inherit;">default</span></layout> </repository> </repositories>
依赖配置
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>0.1.2</version> </dependency> </dependencies>
相关文章推荐
- Druid使用ConfigFilter
- 开发中使用到UITableView的各个技术点
- 如何在storyBoard中实现UIimageView长宽相等
- Java序列化中的serialVersionUID有什么用?
- iOS valueForKeyPath使用与感悟
- UITableView使用详解
- Reveal:分析iOS UI的利器
- UITableView_1简单使用
- MUI - 解决动态列表页图片懒加载再次加载不成功的bug
- UITableView优化
- poj 3384 Feng Shui(半平面交的联机算法)
- query_posts()的参数使用方法
- UIDevice的简易说明
- 让query_posts() 或 wp_query()同时使用多个 meta_key与 meta_value 来查询多个自定义字段与值
- QuickSort(经典快排算法)
- poj 3061 Subsequence
- Android酷炫实用的开源框架(UI框架)
- miniUI Tabs 懒加载
- 优化UITableViewCell高度计算的那些事
- UITabBarControler解决旋转问题