ClickHouse
关于ClickHouse数据库,它也是一种关系型数据库。但是区别于传统关系型数据库mysql以及Oracle。其中最大的区别就是传统的关系型数据库是行式存储,而clickHouse是列式存储。请记住这个列式存储方式。这种结构存储方式,具备了一种天然的优势,就是做统计分析,聚类分析。
总结:就是存的慢,查得快,系统中主要是图片库的查询,或者数据的统计之类的数据的统计之类的可以使用此数据库。
整合方法:(默认已经安装clickHouse)
第一、要在使用此数据库的pom.xml中添加相关依赖
<!-- https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc -->
<dependency>
<groupId>com.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.4.6</version>
</dependency>
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.2.6</version>
</dependency>
第二、要在nacos中配置数据源
dynamic:
druid:
initial-size: 5
min-idle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,slf4j
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
# 主库数据源
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://ip:端口/数据库?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username:
password:
# 从库数据源
slave:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://ip:端口/数据库?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username:
password:
clickhouse:
driverClassName: com.clickhouse.jdbc.ClickHouseDriver
url: jdbc:clickhouse://ip:端口/default?socket_timeout=300000&serverTimezone=GMT+8
username: default (默认是default)
password: 密码
注意:加了clickHouse要把 validationQuery的配置改为 SELECT 1
第三:在代码中整合的时候,可以自定义一个注解,来调用从数据源,也可以不自定义注解,直接使用 @DS(“clickhouse”)
package cn.tadoo.common.datasource.annotation;
import com.baomidou.dynamic.datasource.annotation.DS;
import java.lang.annotation.*;
/**
* 从库数据源
*
*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DS("clickhouse")
public @interface Clickhouse {
}
在ClickHouse整合到MyBatis中的时候要注意数据库的引用,不然可能查不到
例如:insert into web_img.img_info
前面的 web_img 就是数据库的引用
注意,在使用从数据源的时候,一定要把注解写在service的实现类中,否则是不生效的
clickHouse使用navicat链接工具是连不上的,个人使用的是DBeaver链接工具
下载地址: https://dbeaver.io/download/