本仙鱼又更博了,我是勤劳的小蜜蜂嗡嗡嗡
1 Druid简介
Druid 是目前比较流行的高性能的(阿里的),分布式列存储的OLAP框架(具体来说是MOLAP)。它有如下几个特点:
一. 亚秒级查询
druid提供了快速的聚合能力以及亚秒级的OLAP查询能力,多租户的设计,是面向用户分析应用的理想方式。
二.实时数据注入
druid支持流数据的注入,并提供了数据的事件驱动,保证在实时和离线环境下事件的实效性和统一性
三.可扩展的PB级存储
druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性
四.多环境部署
druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等
五.丰富的社区
druid拥有丰富的社区,供大家学习
好,接下来也是本仙鱼手把手带你来认识Druid~
2 使用步骤
2.1 创建项目
本仙使用的是IDEA,个人觉得创建项目常规操作,略过.
2.2 导入相关的jar包:
导入如下两个jar包:druid-1.1.5.jar
mysql-connector-java-5.1.41.jar
本篇博客中不再进行数据库增删改查的操作,mysql-connector-java-5.1.41.jar可以不加,因为习惯问题,我加上了~哈哈.
如果你没有这几个jar包的话:点击进入下载传送门
想要去使用Druid那我们就要对它的属性们进行一个初始化的设置,本篇博客中只举简单的例子,不再进行数据库增删改查的操作,数据库连接池之自定义连接池中有相关的操作,可以去那里查看呦.
2.3 Druid初始化
2.3.1 通过硬编码初始化Druid
通过硬编码直接初始化Druid:就是在没有配置文件的情况下,手动在静态代码块中将要使用的属性(只列举部分)直接进行初始化赋值操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class Druid { public static DruidDataSource dataSource;
static { try { dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase"); dataSource.setUsername("root"); dataSource.setPassword("123456789"); dataSource.setInitialSize(10); dataSource.setMaxActive(50); dataSource.setMinIdle(10); dataSource.setMaxWait(5000);
} catch (Exception e) { e.printStackTrace(); } } }
|
2.3.2 通过软编码初始化Druid
Druid是不能自动加载配置文件的,我们需要使用类加载器手动来加载配置文件获取配置文件中的属性.
druid.properties
1 2 3 4 5 6 7 8 9 10 11 12 13
| driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mydatabase username=root password=123456789
initialSize=10
maxActive=50
minIdle=5
maxWait=6000
|
加载配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Druid { public static DruidDataSource dataSource;
static { try { Properties properties = new Properties(); InputStream inputStream = DBCP.class.getClassLoader().getResourceAsStream("druid.properties"); properties.load(inputStream); dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { e.printStackTrace(); } } }
|
2.4 通过Druid获取数据库连接
1 2 3 4 5 6 7 8 9 10 11
| public class Druid { public static Connection getConnection() { try { return dataSource.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return null; } }
|
2.5 关闭连接
注意:我们这里的关闭连接并不是真的关闭了数据库连接,而是将连接回收,重新放入了Druid中,和我们自定义写的数据库连接池不一样的欧~关的顺序问题我就不再强调了,本仙女的记忆方式,后开的先关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Druid { public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) { try { if (resultSet != null) { resultSet.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
|
2.6 测试Druid
就这么写完了当然要测试一下,那我就简单的用Junit测试一下,顺便带上测试结果,方便您理解这个过程:
测试代码:
1 2 3 4 5 6 7 8 9
| @Test public void DruidTest() { for (int i = 0; i < 51; i++) { Connection connection = Druid.getConnection(); System.out.println(connection.toString() + "\n------------------------------------"); Druid.closeAll(connection, null, null); } }
|
测试结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| 四月 18, 2019 8:15:06 上午 com.alibaba.druid.pool.DruidDataSource info 信息: {dataSource-1} inited com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------ com.mysql.jdbc.JDBC4Connection@3a82f6ef ------------------------------------
Process finished with exit code 0
|
看到这里你明白Druid是怎么实现的了吗?
最后,小仙?在这里感谢您看到最后,有收获的话给本仙鱼点个赞吧~
有问题留言呦,再见祝您生活愉快