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语法不一致。

相关推荐
Memory_荒年40 分钟前
Spring Security + OAuth2 + JWT:三剑客合璧,打造“无懈可击”的微服务安全防线
java·后端·spring
进击的野人2 小时前
深入RAG:从理论到实践的 ETL 核心流程
人工智能·spring·agent
splage2 小时前
SpringBoot 与 SpringCloud的版本对应详细版
spring boot·后端·spring cloud
不是株2 小时前
SpringCloud
后端·spring·spring cloud
百度Geek说3 小时前
百度MEG数据中台ClickHouse在数据湖仓中的探索和应用
clickhouse·湖仓一体·lakehouse·数据引擎·存算分离
l1t3 小时前
编译测试clickhouse-cpp客户端
c++·clickhouse
武超杰4 小时前
Spring MVC进阶与SSM整合实战
java·spring·mvc
不吃香菜学java5 小时前
苍穹外卖-删除菜品
java·spring boot·spring·tomcat·log4j·maven
Roselind_Yi5 小时前
排查Visual C++堆损坏(HEAP CORRUPTION)错误:从报错到解决的完整复盘
java·开发语言·c++·spring·bug·学习方法·远程工作
NE_STOP6 小时前
SpringCloud进阶--Seata与分布式事务
spring