springBoot + clickHouse

clickhouse集群搭建、SpringBoot集成及应用 clickhouse集群搭建 阅读详情

本人开发环境:

springBoot +	jdk 1.8 +	eclipse

1.引入jar

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.2.12.RELEASE</version>
      </dependency>
<dependency>
		    <groupId>ru.yandex.clickhouse</groupId>
		    <artifactId>clickhouse-jdbc</artifactId>
		    <version>0.1.53</version>
		</dependency>

2.配置文件

spring:
  datasource: 
    clickhouse:
      address: jdbc:clickhouse://ip:端口
      username: default
      password:
      db: default
      socketTimeout: 600000

3.主要代码

package com.swap.scan.clickhouse;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import ru.yandex.clickhouse.ClickHouseConnection;
import ru.yandex.clickhouse.ClickHouseDataSource;
import ru.yandex.clickhouse.settings.ClickHouseProperties;

import java.sql.*;
import java.util.*;

@Slf4j
@Component
public class ClickHouseService {
	private static String clickhouseAddress;

	private static String clickhouseUsername;

	private static String clickhousePassword;

	private static String clickhouseDB;

	private static Integer clickhouseSocketTimeout;

	@Value("${spring.datasource.clickhouse.address}")
	public  void setClickhouseAddress(String address) {
		ClickHouseService.clickhouseAddress = address;
	}
	@Value("${spring.datasource.clickhouse.username}")
	public  void setClickhouseUsername(String username) {
		ClickHouseService.clickhouseUsername = username;
	}
	@Value("${spring.datasource.clickhouse.password}")
	public  void setClickhousePassword(String password) {
		ClickHouseService.clickhousePassword = password;
	}
	@Value("${spring.datasource.clickhouse.db}")
	public  void setClickhouseDB(String db) {
		ClickHouseService.clickhouseDB = db;
	}
	@Value("${spring.datasource.clickhouse.socketTimeout}")
	public  void setClickhouseSocketTimeout(Integer socketTimeout) {
		ClickHouseService.clickhouseSocketTimeout = socketTimeout;
	}

	public static Connection getConn() {

		ClickHouseConnection conn = null;
		ClickHouseProperties properties = new ClickHouseProperties();
		properties.setUser(clickhouseUsername);
		properties.setPassword(clickhousePassword);
		properties.setDatabase(clickhouseDB);
		properties.setSocketTimeout(clickhouseSocketTimeout);
		ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(clickhouseAddress,properties);
		try {
			conn = clickHouseDataSource.getConnection();
			return conn;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void exeSql(String sql){
//		log.info("cliockhouse 执行sql:" + sql);
		Connection connection = getConn();
		try {
			Statement statement = connection.createStatement();
			ResultSet results = statement.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	public static List<Map<String,String>> selectSql(String sql){
//		log.info("cliockhouse 执行sql:" + sql);
		Connection connection = getConn();
		try {
			Statement statement = connection.createStatement();
			ResultSet results = statement.executeQuery(sql);
			ResultSetMetaData rsmd = results.getMetaData();
			List<Map<String,String>> list = new ArrayList<>();
			while(results.next()){
				Map<String,String> row = new HashMap<>();
				for(int i = 1;i<=rsmd.getColumnCount();i++){
					row.put(rsmd.getColumnName(i),results.getString(rsmd.getColumnName(i)));
				}
				list.add(row);
			}
			return list;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}
package com.swap.scan.clickhouse;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import ru.yandex.clickhouse.settings.ClickHouseProperties;
 
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ClickHouseDataSourceProperties extends ClickHouseProperties{
 
    private String url;
 
}

需要手动修改sql,main方法直接调用接口使用

package com.swap.scan.clickhouse;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.swap.scan.entity.ScanBaseTransfer;

import cn.hutool.db.Page;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ClickHoseUtil {

	public static ClickHoseUtil getClickHoseUtil() {
		return new ClickHoseUtil();
	}
	public void select() {
		//String sql = "select * from aaa where 1= 1";
		String sql = sql;
		List<Map<String,String>> listMap = ClickHouseService.selectSql(sql);
		//List clickHouseList = JSONArray.parseArray(JSONObject.toJSONString(listMap),  vo.getClass()); 
		...
	}
	
	
	
	@SuppressWarnings("unchecked")
	public void selectByPage() {
		
//		String sql = "select * from aaa order by id limit  begin , PageSize";
		String sql = sql;
		List<Map<String,String>> list = ClickHouseService.selectSql(sql);
		@SuppressWarnings("rawtypes")
		//List clickHouseList = JSONArray.parseArray(JSONObject.toJSONString(list),  vo.getClass()); 
		...
	}
	
	public  void insert()  {
		try {
			String sql = "插入sql";
			ClickHouseService.exeSql(sql);
//			log.info("成功插入");
		} catch (Exception e) {
			log.error("存入失败",e);
		}
	}
 
}

SpringBoot 整合 clickhouse和mysql 手把手教程全网最详细 最近做一个项目 需要 整合mysql clickhouse 多数据源后台用的是ruoyi框架。 阅读详情

相关推荐

springboot集成clickhouse

springboot集成clickhouse一、安装二、springboot集成三、参考文献 一、安装 我是安装在linux上, 步骤如下。 1、添加yum源 下面展示一些 内联代码片。 yum-config-manager --add-repo http://repo.red-soft.biz/repos/clickhouse/repo/clickhouse-el6.repo 2、安装 yum install clickhouse-server clickhouse-client clickh

csdn_xpw的博客 5205

SpringBoot+ClickHouse+Vue+Druid整合实战

【介绍】ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。场景的关键特征 绝大多数是读请求数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。已添加到数据库的数据不能修改。对于读取,从数据库中提取相当多的行,但只提取列的一小部分。宽表,即每个表包含着大量的列查询相对较少(通常每台服务器每秒查询数百次或更少)对于简单查询,允许延迟大约50毫秒列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)事务不是必须的对数据一致性要求低每个查询有一个大表。除了他以外,其他的都很小。查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中【本课重点】技术栈:SpringBoot2 MybatisPlusDruidJava 8VueElement-UID2-Crud-Plus 开发思路:前后端分离 项目重点:ClickHouse的Api使用 

SpringBoot集成Clickhouse

本文介绍了Clickhouse如何集成到Springboot项目中,目前mvn引用比较多的是0.6.5版本,因此用此版本做演示。

328

SpringBoot整合ClickHouse

springboot整合clickhouse

m0_38000204的博客 8277

ClickHouse 的相关概念与springBoot的整合

摘要:本文介绍了ClickHouse作为列式存储OLAP数据库的特点、优劣势及适用场景,并与传统关系型数据库进行了对比分析。文章指出ClickHouse适合大数据分析场景,但不适用于高频事务处理。同时详细讲解了ClickHouse与SpringBoot整合时的注意事项,包括MyBatis适配问题和特殊变量映射处理,提供了类型转换器解决方案。

杨杨杨~~的博客 1123

springboot 整合 clickhouse

springboot 整合 clickhouse

congge 7万+

SpringBoot+MyBatis整合ClickHouse实践

本文介绍了如何整合Spring Boot、MyBatis和ClickHouse数据库。主要内容包括:1)添加必要的Maven依赖;2)配置ClickHouse数据源;3)创建实体类和Mapper接口;4)编写服务层代码;5)实现控制器测试接口。通过这五个步骤,开发者可以快速搭建一个能够高效操作ClickHouse数据库的Java应用框架。文章提供了详细的代码示例和配置文件说明,帮助开发者完成从环境配置到功能实现的完整过程。

小小默:进无止境 1581

SpringBoot+ClickHouse集成

前面已经完成ClickHouse的搭建,创建账号,创建数据库,保存数据库等,接下来就是在SpringBoot项目中集成ClickHouse。

东皋长歌的专栏 1007

SpringBoot整合ClickHouse数据库教程

ClickHouse 是一个开源的列式数据库,专为 OLAP(联机分析处理)工作负载设计,适合大规模的数据分析。成功整合 Spring Boot 与 ClickHouse 数据库,搭建了一个基础 Demo,可根据实际需求扩展功能。可以使用 MyBatis 简化数据访问。只需更换 MySQL 驱动即可,多对比学习。当然,ClickHouse 还具备许多强大功能,推荐查阅相关教程深入了解。❤觉得有用的可以留个关注❤。

分享技术,分享经验 1582

【ClickHouse 实战】基于Spring Boot开发ClickHouse查询工具

基于 Spring Boot 开发 ClickHouse 查询工具非常直观,我们将逐步讲解如何实现这个工具。首先,了解基本的 Spring Boot 框架,确保你对 Java 编程语言有很好的理解,并熟悉 Maven。

AI天才研究院 1万+

SpringBoot集成ClickHouse数据库操作完整指南

ClickHouse是一个用于在线分析处理(OLAP)的列式数据库管理系统(DBMS)。它以毫秒级延迟和高吞吐量的能力,应对实时数据仓库场景。ClickHouse特别适合于分析大量数据,比如日志分析、实时数据报告、大数据集分析等。SpringBoot是一种基于Spring框架的开源Java平台,旨在简化新Spring应用的初始搭建以及开发过程。SpringBoot提供的默认配置大大减少了配置工作量,使得开发者可以快速启动和运行项目。

weixin_31659095的博客 2486

SpringBoot配置Clickhouse

1、笔记

努力改变人生 7683

Spring Boot与ClickHouse集成实践

首先,你需要定义一个仓库接口,并让Spring Data知道这个接口的存在。通过继承或,你可以直接使用一系列预定义的CRUD操作。// 可以在这里声明一些自定义的查询方法Spring Data会自动实现这个接口,并提供一个代理对象,该对象提供了标准的CRUD操作,以及其他根据方法名解析的查询方法。

weixin_35899324的博客 1463

SpringBoot整合clickHouse

关于ClickHouse数据库,它也是一种关系型数据库。但是区别于传统关系型数据库mysql以及Oracle。其中最大的区别就是传统的关系型数据库是行式存储,而clickHouse是列式存储。请记住这个列式存储方式。这种结构存储方式,具备了一种天然的优势,就是做统计分析,聚类分析。

weixin_44977732的博客 1315

LinuxMint 22.1(Ubuntu24.04)下通过Wine完美运行同花顺远航版的实战指南

本文详细介绍了在LinuxMint 22.1(Ubuntu24.04)系统下通过Wine完美运行同花顺远航版的实战指南。从基础环境准备到深度优化,包括Wine环境配置、同花顺远航版安装、字体显示调优、任务栏兼容性修复等关键步骤,帮助Linux用户高效使用同花顺远航版进行股票交易和行情分析。

weixin_30919429的博客 571

STM32_WS2811驱动

STM32的WS2811驱动

健身房 2842

关于 SpringBoot 连接 ClickHouse

ClickHouse JDBC驱动: 官方 1.GitHub - ClickHouse/clickhouse-jdbc: JDBC driver for ClickHouse 第三方驱动 1.GitHub - blynkkk/clickhouse4j: Lighter and faster alternative for the official ClickHouse JDBC driver ...

qq_32419835的博客 7108

保姆级教程:用AD20破解版从安装到汉化,一次搞定PCB设计环境搭建

本文提供AD20从安装到汉化的保姆级教程,详细解析环境配置、核心功能及高效操作技巧,帮助电子设计工程师快速掌握PCB设计工具。涵盖系统准备、界面定制、原理图设计、PCB布局布线等关键步骤,特别适合初学者避开常见陷阱。

weixin_30555125的博客 220

springBoot集成ClickHouse

springBoot集成clickhouse

wszhm123的博客 3412

FLUX.1 LoRa 微调

微调的好处:可以让你突破换脸这种输入图片的场景约束,微调好的模型可以让你真正的文生图。换脸只能根据输入的图片和视频来生成内容。

szmars的博客 3622

比利时风电光伏负荷一体化数据集解析与应用

本文深度解析了由比利时输电系统运营商Elia集团提供的风电光伏负荷一体化数据集。该数据集整合了负荷、风电与光伏出力数据,并包含多时间尺度的官方预测值,时间跨度长达四年,是研究能源转型、构建电力预测模型及分析电网运行的宝贵资源。文章详细介绍了数据价值、字段含义、实战应用场景(如预测模型基准测试、风光互补性分析)以及数据处理指南,为相关领域的研究与开发提供了高质量数据基础和实践参考。

weixin_29200741的博客 429

windows环境部署clickhouse,spring boot集成clickhouse

在windows环境下部署clickhouse数据库,并用Spring boot集成ck, 使用mybaties方式操作ck数据库

m0_47570899的博客 2122

Loupe Browser实战指南:解锁10xGenomics单细胞数据的可视化奥秘

本文提供了Loupe Browser的实战指南,帮助用户无需编程即可探索和可视化10xGenomics单细胞数据。文章详细介绍了从数据导入、界面导航到细胞亚群鉴定、差异基因分析的核心操作流程,并分享了高级技巧与避坑指南,是快速上手这一强大可视化工具的必备参考。

weixin_29313423的博客 208
上一篇: docker 部署clickHouse
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值