Druid 是目前比较流行的高性能的,分布式列存储的OLAP框架(具体来说是MOLAP)。它有如下几个特点:
① 亚秒级查询
druid提供了快速的聚合能力以及亚秒级的OLAP查询能力,多租户的设计,是面向用户分析应用的理想方式。
②实时数据注入
druid支持流数据的注入,并提供了数据的事件驱动,保证在实时和离线环境下事件的实效性和统一性
③可扩展的PB级存储
druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性
④多环境部署
druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等
⑤丰富的社区
druid拥有丰富的社区,供大家学习
需要的包:druid-1.1.10.jar
首先写一个配置文件:db.propreties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=1234
maxActive=10
接着创建一个druid工具类:DruidUtils
import com.alibaba.druid.pool.DruidDataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DruidUtils {
private static DruidDataSource dds;
static {
dds = new DruidDataSource();
Properties p = new Properties();
try {
InputStream is = DruidDataSource.class.getResourceAsStream("/db.properties");
p.load(is);
// 设置驱动类全称
dds.setDriverClassName(p.getProperty("driverClassName"));
// 设置连接的数据库
dds.setUrl(p.getProperty("url"));
// 设置用户名
dds.setUsername(p.getProperty("username"));
// 设置密码
dds.setPassword(p.getProperty("password"));
// 设置最大连接数量
dds.setMaxActive(Integer.parseInt(p.getProperty("maxActive")));
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return dds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 关闭资源
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement st) {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet set) {
if (set != null) {
try {
set.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection conn, PreparedStatement st, ResultSet rt) {
close(conn);
close(st);
close(rt);
}
}
接着进行数据库的测试:
import org.junit.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DruidTest {
@Test
public void t() throws SQLException {
Connection conn = DruidUtils.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from students");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String sname = rs.getString("sname");
System.out.println(sname);
}
DruidUtils.close(conn, ps, rs);
}
}