不愧是战斗民族研发的,真的是简单粗暴。数据压缩比高,查询速度快,非常适合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,单机版本。插入过亿数据后进行查询,基本秒出结果。
本文介绍了ClickHouse的特性,如高数据压缩比和快速查询,演示了如何通过Java连接、入库与查询,实测4万条/s的插入速度和亿级数据的秒级查询。
669

被折叠的 条评论
为什么被折叠?



