怎么将Mybatis连接到ClickHouse

  介绍

这篇文章主要讲解了“怎么将Mybatis连接到ClickHouse”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习”怎么将Mybatis连接到ClickHouse”吧!

场景

最近在做数据分析项目,里面有这样一个业务:把匹配的数据打上标签,放到新的索引中。

数据量:累计亿级的数据

使用场景:可能会单次查询大量的数据,但不会设置复杂的条件,且这些数据不会被再次修改

原来使用的数据库:ElasticSearch

问题:上面也说了我这里打上标记后,这些数据几乎不会再修改了。是一个全文检索引擎,更适用于进行大量文本检索的情况。这里与我上面的使用场景就不太匹配了。

技术选型的考虑:改用战斗民族开发的ClickHouse,它适用于OLAP也就是数据分析的场景,当数据写入后,通过不同维度不断挖掘,分析,发现其中的商业价值.ClickHouse适用于读远大于写的情况。

此外,相比,ClickHouse占用的硬盘空间更小,也有利于降低运维成本。

下面是我在尝试接入ClickHouse时的一些实践,以及关于ClickHouse数组类型转换问题的解决方案。

关于ClickHouse更详细的知识参考:https://zhuanlan.zhihu.com/p/98135840

示例代码已经上传到了Git,目前更新第28节:https://github.com/laolunsi/spring-boot-examples/

Mybatis + ClickHouse

以前一直用Mybatis去操作MySQL,其实Mybatis还可以操作ClickHouse,这里用德鲁伊进行连接管理。

maven配置

& lt; dependency>   ,,,,,& lt; groupId> com.alibaba   ,,,,,& lt; artifactId> druid   ,,,,,& lt; version> 1.2.5   ,,,& lt;/dependency>      ,,,& lt; dependency>   ,,,,,& lt; groupId> ru.yandex.clickhouse   ,,,,,& lt; artifactId> clickhouse-jdbc   ,,,,,& lt; version> 0.2.6   ,,,& lt;/dependency>      ,,,& lt; dependency>   ,,,,,& lt; groupId> org.mybatis.spring.boot   ,,,,,& lt; artifactId> mybatis-spring-boot-starter   ,,,,,& lt; version> 2.1.3   ,,,& lt;/dependency>

配置文件:

春:   ,数据源:   类型:才能com.alibaba.druid.pool.DruidDataSource      #,才能注意这里是自定义的配置,通过,JdbcParamConfig 来加载配置到,Spring 中   #才能,然后由,DruidConfig 来配置数据源   点击才能:   ,,driverClassName: ru.yandex.clickhouse.ClickHouseDriver   ,,,url: jdbc: clickhouse://127.0.0.1:8123/test  #, ip:端口/数据库   ,,用户名:违约   ,,,密码:default  #,按照自己连接的,clickhouse 数据库来   ,,initialSize: 10   ,,maxActive: 100   ,,minIdle: 10   ,,maxWait: 6000   ,,,validationQuery: SELECT  1

加载配置项的类:

@ component   @ConfigurationProperties (=prefix “spring.datasource.click")   public  class  JdbcParamConfig  {   private 才能String 用户名;   private 才能String 密码;   private 才能;String  driverClassName ;   private 才能;String  url ;   private 才能;Integer  initialSize ;   private 才能;Integer  maxActive ;   private 才能;Integer  minIdle ;   private 才能;Integer  maxWait ;   private 才能;String  validationQuery;//才能,ignore  getters 以及setter   }

配置德鲁伊:

@ configuration   @MapperScan (basePackages =, {   ,,,“com.aegis.analysis.clickhousestorage.dao"   })   public  class  DruidConfig  {   ,@   private 才能;JdbcParamConfig  JdbcParamConfig ;      @ bean才能(=name “clickDataSource")   public 才能;DataSource 数据源(),throws  ClassNotFoundException  {   ,,,Class  classes =, forname (“com.alibaba.druid.pool.DruidDataSource");   ,,,DruidDataSource  dataSource =, (DruidDataSource) DataSourceBuilder   ,,,,,,,共创()   ,,,,,,,.driverClassName (jdbcParamConfig.getDriverClassName ())   ,,,,,,,.type(类)   ,,,,,,,.url (jdbcParamConfig.getUrl ())   ,,,,,,,.username (jdbcParamConfig.getUserName ())   ,,,,,,,.password (jdbcParamConfig.getPassword ())   ,,,,,,,.build ();   ,,,dataSource.setMaxWait (jdbcParamConfig.getMaxWait ());   ,,,dataSource.setValidationQuery (jdbcParamConfig.getValidationQuery ());   ,,,return 数据源;   ,,}      ,@ bean   public 才能;SqlSessionFactory  clickHouseSqlSessionFactoryBean (), throws  Exception  {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么将Mybatis连接到ClickHouse