SpringBoot集成ClickHouse,含集成kerberos认证

需求:项目中要使用ClickHouse做数据库。

具体实现:

1,在pom.xml中添加clickhouse依赖

bash 复制代码
<!-- https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc -->
<dependency>
    <groupId>com.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.3.2</version>
</dependency>

2, 配置文件中添加clickhouse的配置属性:

bash 复制代码
spring:
  datasource:
    clickhouse:
      driverClassName: ru.yandex.clickhouse.ClickHouseDirver
      url: jdbc:clickhouse:IP:端口号/数据库
      user: 用户名
      password: 密码

#这部分配置用于kerberos认证
clickhouse:
  security:
    enabled: true
  isMachineUser: false

3,配置Clickhouse连接

bash 复制代码
@Configuration
public class ClickHouseConfig {
	@Value("{spring.datasource.clickhouse.url}")
	private String clickhouseUrl;
	@Value("{spring.datasource.clickhouse.user}")
	private String clickhouseUser;
	@Value("{spring.datasource.clickhouse.password}")
	private String clickhousePassword;
	@Value("{clickhouse.seurity.enabled}")
	private Boolean isSecurity;
	@Value("{clickhouse.isMachineUser}")
	private Boolean isMachineUser;
	
	@Bean
	public DataSource dataSource() {
		ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
		clickHouseProperties .setSocketTimeout(60000);

		//下面三行用于开启kerberos认证
		if(isSecurity & isMachineUser) {
			clickHouseProperties.setMachineUser(true);
			clickHouseProperties.setMachineUserKeytabPath(System.getProperty("user.dir") + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "user.keytab");
		}
		clickHouseProperties.setSsl(true);
		clickHouseProperties.setSslMode("none");
		clickHouseProperties.setUser(clickhouseUser);
		clickHouseProperties.setPassword(clickhousePassword);
		ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource (clickhouseUrl, clickHouseProperties);
		return clickHouseDataSource;
	}
}

4,实现具体的Mapper。

其他的操作就跟mysql的操作一致了。

注意:clickhouse跟mysql的SQL语法不一致。

相关推荐
乐观的Terry15 小时前
1、为什么要自己造发布系统
java·spring boot·后端·spring cloud·架构
谙忆16 小时前
图片CDN与边缘优化实战:缓存策略、图片处理型CDN与动态裁剪
java·spring·缓存
web行路人17 小时前
Spring Boot 第四周:集成 Spring Security 与 JWT 鉴权实践
spring boot·后端·spring
Xiaouuuuua18 小时前
Superpowers:GPT-5.6 时代下的流程毒瘤
java·gpt·spring
一生有你202019 小时前
Spring AI ChatMemory 监控与排查:从指标到排错全链路
java·人工智能·spring
折哥的程序人生 · 物流技术专研19 小时前
Java 23 种设计模式:从踩坑到精通 | 番外:状态 vs 策略 —— if-else 消除的两条路,你走对了吗?
java·spring·状态模式·策略模式·java面试·java设计模式·从踩坑到精通
折哥的程序人生 · 物流技术专研21 小时前
Java 23 种设计模式:从踩坑到精通 | 番外:工厂方法 vs 抽象工厂 —— 从单产品到产品族,架构如何演进?
java·spring·java面试·抽象工厂·工厂方法·java设计模式·从踩坑到精通
HZZD_HZZD21 小时前
从单体到微服务:能源计费系统的领域拆分、数据一致性与Spring Cloud实战落地
spring cloud·微服务·能源
砍材农夫21 小时前
spring|spring event|Spring内置事件驱动编程模型
java·数据库·spring
ClickHouseDB1 天前
推出 ClickHouse Cloud 中的多阶段分布式查询执行
分布式·clickhouse