Druid(德鲁伊)连接池
阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver(代理驱动),一系列内置的JDBC组件库,一个SQL Parser(sql解析器)。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。
Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。
Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQLParser,支持Visitor模式,使得分析SQL的抽象语法树很方便。
简单SQL语句用时10微秒以内,复杂SQL用时30微秒。
通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析语义实现的。
Druid 是目前比较流行的高性能的,分布式列存储的OLAP框架(具体来说是MOLAP)。它有如下几个特点:
一. 亚秒级查询
druid提供了快速的聚合能力以及亚秒级的OLAP查询能力,多租户的设计,是面向用户分析应用的理想方式。
二. 实时数据注入
druid支持流数据的注入,并提供了数据的事件驱动,保证在实时和离线环境下事件的实效性和统一性。
三. 可扩展的PB级存储
druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性。
四. 多环境部署
druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等
五. 丰富的社区
druid拥有丰富的社区,供大家学习
使用步骤:
public class DruidUtils {//声明连接池对象private static DruidDataSource ds;static{//实例化数据库连接池对象ds=new DruidDataSource();//实例化配置对象Properties properties=new Properties();try {//加载配置文件内容properties.load(DruidUtils.class.getResourceAsStream("dbcpconfig.properties"));//设置驱动类全称ds.setDriverClassName(properties.getProperty("driverClassName"));//设置连接的数据库ds.setUrl(properties.getProperty("url"));//设置用户名ds.setUsername(properties.getProperty("username"));//设置密码ds.setPassword(properties.getProperty("password"));//设置最大连接数量ds.setMaxActive(Integer.parseInt(properties.getProperty("maxActive")));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//获取连接对象public static Connection getConnection() {try {return ds.getConnection();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;} }