Druid(德鲁伊)连接池

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 block
              e.printStackTrace();
          }
           }
       //获取连接对象
       public static Connection getConnection() {
         try {
           return ds.getConnection();
         } catch (SQLException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
         }
         return null;
       }  
     }

你可能感兴趣的:(JDBC,搜索引擎,全文检索,团队开发,个人开发,性能优化)