ClickHouse简单粗暴的JDBC

        不愧是战斗民族研发的,真的是简单粗暴。数据压缩比高,查询速度快,非常适合OLAP场景使用。

        ClickHouse的优缺点就不说了,网上一查一大堆, 与各种数据库横向对比直接到官网上看吧,非常直观。(https://clickhouse.com/benchmark/dbms/)

        接下来直接上Demo。先建立ClickHouse的连接及SQL。

ClickHouseConnection conn = null;

public void getConnection() {
    String url = "jdbc:clickhouse://127.0.0.1:8123/test";
  try {
       ClickHouseProperties ckPop = new ClickHouseProperties();
       ckPop.setSocketTimeout(60000);
       ClickHouseDataSource dataSource = new ClickHouseDataSource(url, ckProperties);
       conn = dataSource.getConnection();
       String sql = "insert into t_a_info (a1,a2,a3,a4,a5,a6,a7,a8,a9) values (?,?,?,?,?,?,?,?,?)";
       ps = conn.prepareStatement(sql);
       conn.setAutoCommit(false);
  } catch (Exception e) {
       e.getMessage();
  }
 }

        填充入库数据,并提交批处理。其中“1,2,3,4,5.....”代表插入数据参数的位置。addTestInfo()可以进行多次调用。

PreparedStatement ps = null;

private void addTestInfo(){
    try{
        ps.setString(1,"b1");
        ps.setString(2,"b2");
        ps.setString(3,"b3");
        ps.setString(4,"b4");
        ps.setString(5,"b5");
        ps.setString(6,"b6");
        ps.setString(7,"b7");
        ps.setString(8,"b8");
        ps.setString(9,"b9");
        ps.addBatch();
    }catch(Exception e)
        e.getMessage();


}

        程序入口。可以根据自己的需求,选择线程(记得加锁),Timer,或者其他方式来运行。

public void run() {
     try {
       ps.executeBatch();
       ps.clearBatch();
     } catch (Exception e) {
       e.getMessage();
     }

    }
   }

        自己简单测试了一下,8G内存,i5的U,插入速度4w/s,单机版本。插入过亿数据后进行查询,基本秒出结果。


版权声明:本文为darlinglee006原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。