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

2021年1月22日   |   by tgcode

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 有多强呢?

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

  • ClickHouse 需要的时间是:0.5秒
  • Mysql 需要的时间是:35秒

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

%title插图%num

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

  • 1、添加驱动 Maven 依赖
  • 2、在 jboot.properties 添加配置

    com.github.housepower
    clickhouse-native-jdbc-shaded
    2.5.2
jboot.datasource.type=clickhouse
jboot.datasource.url=jdbc:clickhouse://localhost:9000/your-db-name

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

1、直接通过 Db 来查询:

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

2、通过 Jboot 的 Columns 来查询:

Columns columns = Columns.create();
columns.between("id",1,5);

List 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.jbootgroupId>
artifactId>jbootartifactId>
version>3.9.0version>
dependency>

Hello World:

@RequestMapping("/")
public class HelloworldController extends JbootController {
public void index(){
renderText("hello world");
}
public static void main(String[] args){
JbootApplication.run(args);
}
}

展开阅读全文

3 收藏