Jboot v3.9.0 面向大数据,新增对 Clickhouse 数据源的支持

Jboot 一个更简单的分布式、微服务框架。

Jboot是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务、分布式开发门槛。爽爽开发,快乐生活。

到目前为止,Jboot 已经开源超过了 5 年的时间,迭代了 160+ 个版本,已经被超过 1000+ 公司在使用,其中包含了多个知名的上市公司。

Jboot 从 v3.8.1 版本直接跳到了 v3.9.0 版本,主要原因是新增了对列式数据库管理系统(DBMS)ClickHouse 的支持,在 Jboot 中,我们可以直接通过 Model 把对 ClickHouse 进行增删改查。

ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。

ClickHouse 有多强呢?

我们大概测试了单表大概 1 亿左右的数据,通过 select count() 进行查询数量:

  • ClickHouse 需要的时间是:0.5秒

  • Mysql 需要的时间是:35秒

更多的测试,大家可以自行测试、参考网络或者查看官网 https://clickhouse.tech/benchmark/dbms 

QQ20210122-155409.png

在 Jboot 中使用 ClickHouse ,和我们使用 Mysql 没什么区别,主要分为 2 个步骤:

  • 1、添加驱动 Maven 依赖

  • 2、在 jboot.properties  添加配置

<dependency>
    <groupId>com.github.housepower</groupId>
    <artifactId>clickhouse-native-jdbc-shaded</artifactId>
    <version>2.5.2</version>
</dependency>
jboot.datasource.type=clickhouse
jboot.datasource.url=jdbc:clickhouse://localhost:9000/your-db-name

然后,就可以开心在使用 JFinal 里的 Model 进行 save()、update()、find()、paginate()... 等等操作了。比如:

1、直接通过 Db 来查询:

List<Record> records = Db.find("select * from user_info");

2、通过 Jboot 的 Columns 来查询:

Columns columns = Columns.create();
columns.between("id",1,5);
List<User> users = dao.findListByColumns(columns);

3、保存数据:

UserInfo user = new UserInfo();
user.set("id",100);
user.set("age",20);
user.set("name","张三");
user.save();

4、更新 或者 删除数据:

//更新UserInfo user = new UserInfo();
user.set("id",100);
user.set("name","李四");
user.update();

//删除
dao.deleteById(100);

5、不再一一举例,直接使用 JFinal API 来操作就可以,当然在 Jboot 中,我们可以配置多数据源,部分 Model 使用 Mysql ,同时部分 Model 使用 Clickhouse 都是没问题。

 

开发文档:

https://jbootprojects.gitee.io/docs/

同时,Jboot 官方也推出了收费的企业级开发框架 JbootAdmin,

详情 https://jbootprojects.gitee.io/docs/jbootadmin/

maven 依赖:

<dependency>
    <groupId>io.jboot</groupId>
    <artifactId>jboot</artifactId>
    <version>3.9.0</version>
</dependency>

Hello World:

@RequestMapping("/")
public class HelloworldController extends JbootController {    

    public void index(){
        renderText("hello world"); 
    }    
    
    public static void main(String[] args){
        JbootApplication.run(args);
    }
}


评论区

海哥

2021-01-22 16:22

亲测,很多场景下,Clickhouse 查询数据的速度甚至是 Mysql 的 1000 倍,数据量越大越明显。

prelove

2021-01-22 16:49

这个必须点赞!NB

JFinal

2021-01-22 19:00

Clickhouse 下仍然可以使用 jfinal 的 Model,这个挺不错,赞

steven_lhcb_9527

2021-01-25 08:54

Clickhouse save和updtae的时候是将数据存到mysql了吗

海哥

2021-01-25 15:40

@steven_lhcb_9527 不是啊,还是存 clickhouse,和 MySQL 没关系了

超级大富

2021-01-29 09:41

clickhouse 贼快,已经在生产环境下使用

海哥

2021-02-01 18:06

或是的话

2021-02-25 13:56

和clubhouse 是什么关系