資料庫連線池的學習(四)——Druid連線池
阿新 • • 發佈:2018-12-12
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); } }